이번 포스팅은 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
실습이 끝난 후 해당 명령어를 사용하여 자원을 꼭 삭제해주세용~~
감사합니다.
'AWS > [AEWS] EKS' 카테고리의 다른 글
[ AEWS 4주차 ] 정리 (0) | 2024.03.30 |
---|---|
[ AEWS 3주차 ] EKS 스토리지 & 노드 그룹 (1) | 2024.03.22 |
[ AEWS 2주차 ] #2 Service & AWS Loadbalancer Controller & Ingress (1) | 2024.03.15 |
[ AEWS 2주차 ] #1 EKS VPC CNI란? (0) | 2024.03.12 |
[ AEWS 1주차 ] #1 EKS란? (0) | 2024.03.08 |