이제 보안 그룹이 준비되어 있으므로 Amazon RDS for PostgreSQL 데이터베이스를 만듭니다.
먼저 DB 서브넷 그룹을 만들어야 합니다. EKS 클러스터와 동일한 서브넷을 사용합니다.
export PUBLIC_SUBNETS_ID=$(aws ec2 describe-subnets \
--filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=eksctl-eksworkshop-eksctl-cluster/SubnetPublic*" \
--query 'Subnets[*].SubnetId' \
--output json | jq -c .)
데이터베이스 서브넷 그룹을 만듭니다.
aws rds create-db-subnet-group \
--db-subnet-group-name rds-eksworkshop \
--db-subnet-group-description rds-eksworkshop \
--subnet-ids ${PUBLIC_SUBNETS_ID}
이제 데이터베이스를 만들 수 있습니다. RDS 보안 그룹의 ID를 가져옵니다.
export RDS_SG=$(aws ec2 describe-security-groups \
--filters Name=group-name,Values=RDS_SG Name=vpc-id,Values=${VPC_ID} \
--query "SecurityGroups[0].GroupId" --output text)
RDS의 비밀번호를 생성 합니다.
export RDS_PASSWORD="$(date | md5sum |cut -f1 -d' ')"
echo ${RDS_PASSWORD} > ~/environment/sg-per-pod/rds_password
RDS Postgresql 인스턴스를 생성합니다.
aws rds create-db-instance \
--db-instance-identifier rds-eksworkshop \
--db-name eksworkshop \
--db-instance-class db.t3.micro \
--engine postgres \
--db-subnet-group-name rds-eksworkshop \
--vpc-security-group-ids $RDS_SG \
--master-username eksworkshop \
--publicly-accessible \
--master-user-password ${RDS_PASSWORD} \
--backup-retention-period 0 \
--allocated-storage 20
데이터베이스가 생성 될 때까지 최대 5분이 소요 됩니다.
다음 명령을 실행하여 데이터베이스 인스턴스를 사용할 수 있는지 확인 합니다.
aws rds describe-db-instances \
--db-instance-identifier rds-eksworkshop \
--query "DBInstances[].DBInstanceStatus" \
--output text
아래와 같이 출력되어야 데이터베이스 인스턴스를 사용할 수 있습니다.
이제 데이터베이스를 사용할 수 있으므로 RDS 엔드 포인트를 가져 옵니다.
export RDS_ENDPOINT=$(aws rds describe-db-instances \
--db-instance-identifier rds-eksworkshop \
--query 'DBInstances[0].Endpoint.Address' \
--output text)
echo "RDS endpoint: ${RDS_ENDPOINT}"
마지막으로 데이터베이스에 콘텐츠를 일부 만듭니다.
sudo yum install -y postgresql
cd sg-per-pod
cat << EoF > ~/environment/sg-per-pod/pgsql.sql
CREATE TABLE welcome (column1 TEXT);
insert into welcome values ('--------------------------');
insert into welcome values ('Welcome to the eksworkshop');
insert into welcome values ('--------------------------');
EoF
export RDS_PASSWORD=$(cat ~/environment/sg-per-pod/rds_password)
psql postgresql://eksworkshop:${RDS_PASSWORD}@${RDS_ENDPOINT}:5432/eksworkshop \
-f ~/environment/sg-per-pod/pgsql.sql