SG 생성하기
1. 사전 준비하기
이번 실습에서는 m5.large
인스턴스를 사용하여 두 번째 노드 그룹을 만들 것입니다. (약 10분 정도 소요됩니다.)
mkdir sg-per-pod
cat << EoF > ${HOME}/environment/sg-per-pod/nodegroup-sec-group.yaml
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: eksworkshop-eksctl
region: ${AWS_REGION}
managedNodeGroups:
- name: nodegroup-sec-group
desiredCapacity: 1
instanceType: m5.large
EoF
eksctl create nodegroup -f ${HOME}/environment/sg-per-pod/nodegroup-sec-group.yaml
kubectl get nodes \
--selector beta.kubernetes.io/instance-type=m5.large

2. 보안 그룹 생성 및 구성
먼저 RDS 보안 그룹 (RDS_SG)를 작성합니다. 네트워크 액세스를 제어하기 위해 Amazon RDS 인스턴스에서 사용할 것입니다.
export VPC_ID=$(aws eks describe-cluster \
--name eksworkshop-eksctl \
--query "cluster.resourcesVpcConfig.vpcId" \
--output text)
# create RDS security group
aws ec2 create-security-group \
--description 'RDS SG' \
--group-name 'RDS_SG' \
--vpc-id ${VPC_ID}
# save the security group ID for future use
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)
echo "RDS security group ID: ${RDS_SG}"
이제 POD 보안 그룹(POD_SG)을 만듭니다.
# create the POD security group
aws ec2 create-security-group \
--description 'POD SG' \
--group-name 'POD_SG' \
--vpc-id ${VPC_ID}
# save the security group ID for future use
export POD_SG=$(aws ec2 describe-security-groups \
--filters Name=group-name,Values=POD_SG Name=vpc-id,Values=${VPC_ID} \
--query "SecurityGroups[0].GroupId" --output text)
echo "POD security group ID: ${POD_SG}"
파드는 DNS resolution으로 노드와 통신해야 하므로 이에 따라 노드 그룹의 보안 그룹을 업데이트 합니다.
export NODE_GROUP_SG=$(aws ec2 describe-security-groups \
--filters Name=tag:Name,Values=eks-cluster-sg-eksworkshop-eksctl-* Name=vpc-id,Values=${VPC_ID} \
--query "SecurityGroups[0].GroupId" \
--output text)
echo "Node Group security group ID: ${NODE_GROUP_SG}"
TCP 53번 포트를 사용하여 POD_SG가 NODE_GROUP_SG에 연결하도록 허용합니다
aws ec2 authorize-security-group-ingress \
--group-id ${NODE_GROUP_SG} \
--protocol tcp \
--port 53 \
--source-group ${POD_SG}
UDP 53번 포트를 사용하여 POD_SG가 NODE_GROUP_SG에 연결하도록 허용합니다.
aws ec2 authorize-security-group-ingress \
--group-id ${NODE_GROUP_SG} \
--protocol udp \
--port 53 \
--source-group ${POD_SG}
마지막으로 RDS_SG 보안 그룹에 2개의 인바운드 트래픽 (ingress) 규칙을 추가합니다:
한개는 Cloud9 용 (데이터베이스를 채우기 위해)
다른 하나는 POD_SG 보안 그룹이 데이터베이스에 연결할 수 있도록 합니다.
Cloud9 IP를 가져옵니다.
export C9_IP=$(curl -s http://169.254.169.254/latest/meta-data/public-ipv4)
Cloud9이 RDS에 연결 하도록 허용합니다.
aws ec2 authorize-security-group-ingress \
--group-id ${RDS_SG} \
--protocol tcp \
--port 5432 \
--cidr ${C9_IP}/32
POD_SG가 RDS에 연결 하도록 허용합니다.
aws ec2 authorize-security-group-ingress \
--group-id ${RDS_SG} \
--protocol tcp \
--port 5432 \
--source-group ${POD_SG}
Last updated
Was this helpful?