AWS/[AEWS] EKS

[ AEWS 1주차 ] #2 Cluster 배포

BigCo 2024. 3. 8. 19:51

이번 포스팅은 AEWS 2기에서 공유해주시 Cloudformation을 사용하여 Cluster을 배포하겠습니다.

해당 링크는 AWES에서 제공해주신 cloudformation입니다. 
formation을 실행시키면서SgIngressSshCidr서버에 접속할 ip대역KeyName에 .pem키를 설정해주시면 됩니다. 

이후 코드가 배포되면 VPC, Subnet, Bastion등이 생성된 것을 확인할 수 있습니다. 
접속 ID : root    password : qwe123 + .pem Key

 

EKS 배포할 리소스 설정 및 확인

Bastion 서버에 접속한 후 계정의 IAM User Access key를 입력해줍니다. 

 

이후 배포된 리소스들을 확인합니다.

# 자격 구성 설정 없이 확인
aws ec2 describe-instances

# IAM User 자격 구성 : 실습 편리를 위해 administrator 권한을 가진 IAM User 의 자격 증명 입력
aws configure
AWS Access Key ID [None]: AKIA5...
AWS Secret Access Key [None]: CVNa2...
Default region name [None]: ap-northeast-2
Default output format [None]: json

# 자격 구성 적용 확인 : 노드 IP 확인
aws ec2 describe-instances

# EKS 배포할 VPC 정보 확인
aws ec2 describe-vpcs --filters "Name=tag:Name,Values=$CLUSTER_NAME-VPC" | jq
aws ec2 describe-vpcs --filters "Name=tag:Name,Values=$CLUSTER_NAME-VPC" | jq Vpcs[]
aws ec2 describe-vpcs --filters "Name=tag:Name,Values=$CLUSTER_NAME-VPC" | jq Vpcs[].VpcId
aws ec2 describe-vpcs --filters "Name=tag:Name,Values=$CLUSTER_NAME-VPC" | jq -r .Vpcs[].VpcId
export VPCID=$(aws ec2 describe-vpcs --filters "Name=tag:Name,Values=$CLUSTER_NAME-VPC" | jq -r .Vpcs[].VpcId)
echo "export VPCID=$VPCID" >> /etc/profile
echo $VPCID

# EKS 배포할 VPC에 속한 Subnet 정보 확인
aws ec2 describe-subnets --filters "Name=vpc-id,Values=$VPCID" --output json | jq
aws ec2 describe-subnets --filters "Name=vpc-id,Values=$VPCID" --output yaml

## 퍼블릭 서브넷 ID 확인
aws ec2 describe-subnets --filters Name=tag:Name,Values="$CLUSTER_NAME-PublicSubnet1" | jq
aws ec2 describe-subnets --filters Name=tag:Name,Values="$CLUSTER_NAME-PublicSubnet1" --query "Subnets[0].[SubnetId]" --output text
export PubSubnet1=$(aws ec2 describe-subnets --filters Name=tag:Name,Values="$CLUSTER_NAME-PublicSubnet1" --query "Subnets[0].[SubnetId]" --output text)
export PubSubnet2=$(aws ec2 describe-subnets --filters Name=tag:Name,Values="$CLUSTER_NAME-PublicSubnet2" --query "Subnets[0].[SubnetId]" --output text)
echo "export PubSubnet1=$PubSubnet1" >> /etc/profile
echo "export PubSubnet2=$PubSubnet2" >> /etc/profile
echo $PubSubnet1
echo $PubSubnet2

클러스터가 배포되기 위해서는 환경변수로 사용할 VPC IP, Subnet ID들이 필요합니다. 
각 리소스들을 확인하는 명령어를 입력하여 정보들을 확인하고 export명령어를 입력해서 환경변수를 입력해주시면 됩니다. 

간단하게 VPC, 서브넷의 정보를 확인해봤습니다. 

 

클러스터를 배포하는데 필요한 환경변수를 등록하기위해 export명령어를 입력해줍니다. 

 

최종 변수 확인 명령어

echo $AWS_DEFAULT_REGION
echo $CLUSTER_NAME
echo $VPCID
echo $PubSubnet1,$PubSubnet2

 

해당 명령어를 사용하여 클러스터를 배포해줍니다. (약 15분소요)

클러스터 배포
eksctl create cluster --name $CLUSTER_NAME --region=$AWS_DEFAULT_REGION --nodegroup-name=$CLUSTER_NAME-nodegroup --node-type=t3.medium \
--node-volume-size=30 --vpc-public-subnets "$PubSubnet1,$PubSubnet2" --version 1.28 --ssh-access --external-dns-access --verbose 4

 

 

Cluster 정보확인

클러스터 배포가 완료되면 해당 사진처럼 2개의 노드(인스턴스)가 추가됩니다. 

 

EKS에서 클러스터를 확인할 수 있습니다.  

 

클러스터 > 컴퓨팅에 생성된 노드그룹, 노드의 유형을 확인할 수 있습니다. 

 

추가적으로 조금 더 살펴보겠습니다.

kubectl cluster-info

해당 정보를 보시면 컨트롤플레인이 동작중이며 클러스터의 API 엔드포인트 주소를 보여주고있는데 해당 주소를 콘솔에서도 확인할 수 있습니다. 

 

클러스터를 배포할 때 API 서버 엔드포인트 엑세스 유형을 public으로 설정하여 endpoint의 IP와 클를 확인할 수 있습니다.

api로 클러스터 버전 정보도 확인할 수 있습니다. 

 

마지막으로 중요한 리소스 삭제

eksctl delete cluster --name $CLUSTER_NAME
aws cloudformation delete-stack --stack-name myeks

실습이 끝난 후 해당 명령어를 사용하여 자원을 꼭 삭제해주세용~~

 

감사합니다.