본문 바로가기

쿠버네티스

2. 쿠버네티스 환경 구축과 예제 애플리케이션 배포 - 3

2.3 데이터베이스 설정

데이터베이스를 생성하고 DDL 적용 등 애플리케이션에서 사용하기 위한 설정을 수행한다.

수행할 작업은 다음과 같다.

  • 데이터베이스와 배스천 호스트(Bastion Host) 구축
  • 세션 관리자를 이용한 배스천 호스트 접속
  • 배스천 호스트상에 필요한 도구 설치
  • 배스천 호스트상에 깃 리포지토리 클론
  • 데이터베이스 접속과 DDL 및 예제 데이터 블러오기

 

2.3.1 데이터베이스 환경 설정

예제 애플리케이션에서는 Amazon RDS로 PostgreSQL을 구축하여 사용한다. Amazon RDS에는 데이터베이스가 설치된 OS에 로그인할 수 없는 등 데이터베이스 환경 관련 제약 사항이 존재한다. 그래서 데이터베이스 관리용 서버배스천 호스트를 구축하여 사용한다. 배스천 호스트는 EC2로 구축한다.

 

2.3.2 데이터베이스 환경 구축

데이터베이스 환경(RDS와 배스천 호스트) 구축은 CloudFormation으로 수행한다.

 

우선 CloudFormation → eks-work-base → 출력 탭에서 RouteTable의 값을 저장한다.

 

CloudFormationd에서 새로운 스택을 생성한다.

 

템플릿에 10_rds_ope_cfn.yaml을 올린다.

 

다음을 누르면 아래와 같이 스택 세부 정보 지정이 보인다.

스택 이름을 eks-work-rds라고 한다.

 

스크롤을 내려 EksWorkVPC에서 이전에 생성한 eks-work-VPC를 선택한다.

 

스크롤을 내려 OpeServeRouteTable에 저장한 RouteTable의 값을 넣는다.

 

다음을 눌러 RDS 생성을 완료한다.

 

2.3.3 세션 관리자를 통한 배스천 호스트 접속

세션 관리자는 EC2 인스턴스 콘솔로 접속할 수 있는 서비스이며, AWS Systems Manager 기능의 하나로 제공된다.

 

Session Manager을 검색한다.

 

세션 시작을 누른다.

 

eks 클러스터가 정상적으로 만들어졌다면 아래와 같은 화면을 볼 수 있다.

그 중 이름이 없는 인스턴스의 세션을 시작한다.

 

세션이 시작되면 아래와 같이 배스천 호스트 콘솔이 표시된다.

 

yum로 git을 설치한다.

sudo yum install -y git

 

배스천 호스트에서는 OS로 Amazon Linux 2를 사용하는데, amazon-linux-extra 명령어로 PostgreSQL 클라이언트를 설치한다.

sudo amazon-linux-extras install -y postgresql11


초기 위치는 /usr/bin이다. cd 명령어로 홈 디렉터리로 이동한다.

cd

 

git을 사용하여 배스천 호스트에도 예제 리포지토리를 클론한다.

git clone <https://github.com/dybooksIT/k8s-aws-book.git>

 

2.3.6 데이터베이스 엔드포인트 주소와 관리자 비밀번호 확인

CloudFormation에서 데이터베이스 세 가지 정보를 확인한다.

  • 데이터베이스 엔드포인트 주소
  • 데이터베이스 관리자 비밀번호
  • 애플리케이션용 데이터베이스 사용자 비밀번호

 

2.3.6.1 데이터베이스 엔드포인트 주소 확인

CloudFormation → eks-work-rds 스택 선택 → 출력탭에서 RDSEndpoint키의 값이다.

 

2.3.6.2 데이터베이스 관리자 비밀번호 확인

CloudFormation으로 데이터베이스(RDS 인스턴스)를 구축할 때에는 AWS Secrets Manager가 RDS 관리자 비밀번호를 생성해 데이터베이스에 등록한다.

 

Secrets Manager를 검색한다.

 

RdsMasterSecret을 선택한다.

 

보안 암호 값 검색을 클릭한다.

그 다음 password 항목이 관리자 비밀번호이다.

 

2.3.6.3 애플리케이션용 데이터베이스 사용자 비밀번호 확인

데이터베이스에 접속할 때 사용할 사용자의 비밀번호이다.

확인 절차는 Secrets Manager → RdsUserSecret → 보안 암호 값 검색 → password 이다.

 

2.3.7 데이터베이스 작업

세션 관리자의 콘솔로 돌아가서 아래의 작업을 한다.

  • 애플리케이션용 데이터베이스 사용자 생성
  • 애플리케이션용 데이터베이스 생성
  • DDL 실행
  • 예제 데이터 불러오기

2.3.7.1 애플리케이션용 데이터베이스 사용자 생성

PostgreSQL 클라이언트의 createuser 명령어로 mywork 사용자를 생성한다.

createuser -d -U eksdbadmin -P -h <RDS 엔드포인트 주소> mywork

# -h : 접속대상 서버

 

그러면 사용자 비밀번호를 입력하는 칸이 나온다.

 

💡 비밀번호 입력 부분은 보안상의 이유로 화면에 입력이 표시되지 않으니 주의하시길 바랍니다.

 

RdsUserSecret의 값을 입력한다.

 

재입력 칸에 똑같이 입력한다.

 

그 다음 관리자 비밀번호를 입력하는 칸이 나온다.

RdsMasterSecret 값을 입력한다.

 

2.3.7.2 애플리케이션용 데이터베이스 생성

createdb 명령어로 myworkdb 데이터베이스를 생성한다.

createdb -U mywork -h <RDS 엔드포인트 주소> -E UTF8 myworkdb

# -E : 엔드포인트

 

그러면 password를 입력하는 칸이 나온다. 사용자 비밀번호(RdsUserSecret)의 값을 입력한다.

 

2.3.7.3 데이터베이스 접속

PostgreSQL 클라이언트의 psql 명령어로 데이터베이스에 접속한다.

psql -U mywork -h <RDS 엔드포인트 주소> myworkdb

 

그러고 사용자 비밀번호(RdsUserSecret)를 입력한다.

아래와 같이 바뀌면 접속 성공이다.

리포지토리의 10_ddl.sql 스크립트를 사용하여 데이터베이스를 생성한다.

\i k8s-aws-book/backend-app/scripts/10_ddl.sql

# \i : psql에서 외부 스크립트를 불러오는 명령어

💡 데이터베이스에 접속하기 전에 꼭 cd 명령어를 통해 /home/ssm-user 디렉터리로 이동해야 한다. (2.3.3 참고)

 

그 다음 20_insert_sample_data.sql 스크립트를 사용하여 값을 넣는다.

\i k8s-aws-book/backend-app/scripts/20_insert_sample_data.sql

 

\q를 사용하여 데이터베이스에서 로그아웃한다.

\q