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
'쿠버네티스' 카테고리의 다른 글
3. 쿠버네티스에서 애플리케이션을 동작시키는 구조 - 2 (0) | 2023.03.17 |
---|---|
3. 쿠버네티스에서 애플리케이션을 동작시키는 구조 - 1 (0) | 2023.03.17 |
2. 쿠버네티스 환경 구축과 예제 애플리케이션 배포 - 2 (0) | 2023.02.14 |
2. 쿠버네티스 환경 구축과 예제 애플리케이션 배포 - 1 (0) | 2023.02.09 |
[쿠버네티스] 1. 컨테이너 기술 보급과 쿠버네티스 (0) | 2023.02.02 |