01. 실습 개요
01-1. CloudFormation 스택 생성
Cloudformation을 통해 리소스를 생성하면 사용자 커스텀 VPC인 my-eks-VPC가 생성된다. 이 VPC는 2개의 가용영역에 서브넷을 생성하고, 퍼블릭 서브넷에 myeks-host라는 EKS 관리 목적의 Bastion Host도 생성한다. Cloudformation을 통해 기본 인프라를 구성하였으니, 다음으로 관리 콘솔에서 EKS 클러스터를 생성하는 작업을 진행 해보자.
01-2. 관리 콘솔에서 EKS 배포
이전에 CloudFormation을 통해 사용자 커스텀 VPC를 생성했다. 이제 EKS 클러스터를 생성하는 과정을 갖는다. 콘솔에서 EKS 클러스터를 생성하면 기본적으로 AWS가 관리하는 별도의 VPC에 Control Plane(API Server, Controller Manager, Scheduler, etcd)이 생성이 된다. 또한 Worker Node 생성을 위해 관리형 노드 그룹을 생성하는 작업을 진행한다. 모든 작업이 완료되면, EKS 구성 요소를 관리 콘솔에서 확인하고, EKS 클러스터를 삭제한다.
01-3. eksctl 배포
마지막으로 콘솔이 아닌 eksctl를 통해 EKS Cluster를 생성하는 과정을 거친다. 앞서 콘솔에서 진행한 부분과 동일한 내용이며, 작업이 완료되면 EKS Cluster를 삭제 한다.
02. CloudFormation으로 기본 인프라 배포
02-1. CloudFormation 기반 사용자 Custom VPC 생성

https://www.ongja.space/1474c62d-36c3-80b5-ba55-f114a229500d
위 페이지에 접속 후 해당 링크를 클릭하면 CloudFormation Stack 창이 나온다.
후에 위 이미지와 같이 Cloudformation Stack 생성 작업을 진행 하는데, 우선 다음 버튼을 클릭한다.
02-2. 스택 세부 정보 지정
다음 버튼을 클릭하면 Cloudformation에 의해 생성되는 리소스가 표시된다. 표시되는 정보의 내용은 아래와 같다.
스택이름
- 생성 되는 CloudFormation Stack 이름 명시
파라미터
- <<<<< EKSCTL MY EC2 >>>>>
- ClusterBasName: EKS 클러스터의 이름 지정
- KeyName: EC2 SSH 접근을 위한 EC2 키 페어 이름을 지정
- SgIngressSshCidr: EC2 SSH 접근이 허용될 IP 범위(내 공인 IP)를 지정
- MyInstanceType: EC2 인스턴스 타입 지정
- LatestAmiId: Amazon Linux 2 AMI (이미지 ID)
- <<<<< Region AZ >>>>>
- Target Region: AWS Region 정보를 명시
- AvailabilityZone1: 첫 번째 가용영역 정보 명시
- AvailabilityZone2: 두 번째 가용영역 정보 명시
- <<<<< VPC Subnet >>>>>
- VPCBlock: VPD의 CIDR Block 지정
- PublicSubnet1Block: 1번째 퍼블릭 서브넷 IP 대역 명시
- PublicSubnet2Block: 2번째 퍼블릭 서브넷 IP 대역 명시
- PrivateSubnet1Block: 1번째 프라이빗 서브넷 IP 대역 명시
- PrivateSubnet2Block: 2번째 프라이빗 서브넷 IP 대역 명시
02-2. CloudFormation 배포 정보
| 자원 | 이름 | 정보 |
|---|---|---|
| VPC | myeks-VPC | IP CIDR: 192.168.0.0/16 |
| 서브넷 | myeks-PublicSubnet1 | IP CIDR: 192.168.1.0/24, ap-northeast-2a |
| myeks-PublicSubnet2 | IP CIDR: 192.168.2.0/24, ap-northeast-2c | |
| myeks-PrivateSubnet1 | IP CIDR: 192.168.3.0/24, ap-northeast-2a | |
| myeks-PrivateSubnet2 | IP CIDR: 192.168.4.0/24, ap-northeast-2c | |
| 인터넷 게이트웨이 | igw | 연결: myeks-VPC |
| 라우팅 테이블 | myeks-PublicSubnetRT | 연결: myeks-PublicSubnet1/2, 경로: 0.0.0.0/0 → igw |
| myeks-PrivateSubnetRT | 연결: myeks-PrivateSubnet1/2, 경로: local | |
| EC2 인스턴스 | myeks-host | 연결: myeks-PublicSubnet1, 퍼블릭 IP 할당 |
| 설치: kubectl, helm, eksctl, awscli, docker, krew, kube_ps1, etc. | ||
| 보안 그룹 | myeks-host-SG | 연결: myeks-host, 인바운드 규칙: 각자 PC의 퍼블릭 IP/32, 모든 트래픽 |
Cloudformation에 의해 기본 인프라가 생성이 되었으며, 생성 된 EC2 Host에 SSH를 통해 접속한다.
02-3. 생성된 EC2 SSH 접속
# 아래 명령어를 통해 현재 접속 사용자의 계정 확인
whoami
# kubectl 버전 확인
# kubectl version을 치면 기본적으로 2가지 버전 정보를 동시에 가져온다.
# 1) Client 버전(지금 내 로컬에 설치된 k8s 버전)이고
# 2) 다른 1개는 API Server의 버전을 가져오게 된다.
# 하지만 당장 API Server에 접근이 불가능하거나, Client k8s 버전만 알고 싶은 경우가 존재하는데
# 이러한 경우 --client=true 옵션을 붙히면 서버에는 접근 안하고, 클라이언트 k8s 버전만 확인이 가능하다
# kubectl, eksctl 같은 CLI 명령어는 기본적으로 -o {출력 형식}을 지원한다
# aws cli에서는 --output {출력 형식}을 통해 제어가 가능하다
# 출력형태를 YAML로 지정하였고, 해당 출력 형태에 대한 하이라이팅을 넣을 때 yh를 사용
kubectl version --client=true -o yaml | yh
# eksctl 버전 확인
eksctl version
# aws 버전 확인
aws --version
# docker 정보 확인
docker info | yh
# AWS 인스턴스 정보 확인
aws ec2 describe-instances | jq
# IAM 장기 자격증명을 통해 EKS 제어가 가능하도록 지정
aws configure
EC2에 접속하여 위와 같은 명령을 수행한다.
02-4. EKS를 배포할 VPC 정보 확인
[AWS CLI] Filter, Query 다중 조건 & 대소비교
############################
# CLUSTER_NAME 변수 확인
############################
echo $CLUSTER_NAME
############################
# EKS를 배포할 VPC 정보 확인
############################
aws ec2 describe-vpcs --filters "Name=tag:Name,Values=$CLUSTER_NAME-VPC" | jq
############################
# EKS를 배포할 VPC ID 값만 확인
############################
aws ec2 describe-vpcs --filters "Name=tag:Name,Values=$CLUSTER_NAME-VPC" | jq -r .Vpcs[].VpcId
############################
# VPC ID 변수에 VPC ID 값 저장
############################
export VPCID=$(aws ec2 describe-vpcs --filters "Name=tag:Name,Values=$CLUSTER_NAME-VPC" | jq -r .Vpcs[].VpcId)
############################
# ID 출력
############################
echo $VPCID
############################
# VPCID를 전역 변수로 선언
############################
echo "export VPCID=$VPCID" >> /etc/profile
############################
# VPCID 출력
############################
echo $VPCID
주요한 부분은 EKS 클러스터가 구동될 VPC ID를 변수에 저장한 부분이다.
02-5. EKS를 배포할 서브넷 정보 확인
############################
# VPC의 전체 서브넷 정보 확인
############################
aws ec2 describe-subnets --filters "Name=vpc-id,Values=$VPCID" --output json | jq
############################
# EKS VPC Subnet의 내용 조회
############################
aws ec2 describe-subnets --filters Name=tag:Name,Values="$CLUSTER_NAME-PublicSubnet1" | jq
aws ec2 describe-subnets --filters Name=tag:Name,Values="$CLUSTER_NAME-PublicSubnet2" | jq
############################
# EKS VPC Subnet의 ID 값 조회
############################
aws ec2 describe-subnets --filters Name=tag:Name,Values="$CLUSTER_NAME-PublicSubnet1" --query "Subnets[0].[SubnetId]" --output text
aws ec2 describe-subnets --filters Name=tag:Name,Values="$CLUSTER_NAME-PublicSubnet2" --query "Subnets[0].[SubnetId]" --output text
############################
# EKS VPC Subnet 01, 02번 변수 저장
############################
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
############################
# 지금까지 생성한 환경 변수 확인
############################
echo $AWS_DEFAULT_REGION
echo $CLUSTER_NAME
echo $VPCID
echo $PubSubnet1,$PubSubnet2
주요한 부분은 EKS가 구동될 Subnet 01, 02번을 변수에 저장했다는 부분이다.
99. 참고 자료
eksctl 구성 | K8s
update : 2025-01-25 / 20min
whchoi98.gitbook.io
[EKS] AWS EKS란? 특징과 노드 구성 방식 + 배포방식
Kubernetes의 컨트롤 플레인 또는 노드를 제공하는 AWS의 관리형 K8S 서비스즉, AWS에서 제공하는 탄력적으로 쿠버네티스를 관리할 수 있는 서비스이다.사실 쿠버네티스가 가장 주목받고, 컨테이너
velog.io
EKS의 Kubernetes 버전 수명 주기 이해 - Amazon EKS
컨트롤 플레인을 업데이트하는 경우 Fargate 노드를 직접 업데이트해야 합니다. Fargate 노드를 업데이트하려면 노드가 나타내는 Fargate 포드를 삭제하고 포드를 다시 배포합니다. 새 포드는 클러스
docs.aws.amazon.com
실습 개요 | CloudNet@와 함께하는 Amazon EKS 기본 강의
실습 개요
www.inflearn.com
'AWS > EKS CloudNet@ - Self Study' 카테고리의 다른 글
| [EKS] eksctl에서 AWS EKS 확인 및 설정 (0) | 2025.09.09 |
|---|---|
| [EKS] eksctl에서 EKS 배포 (0) | 2025.09.09 |
| [EKS] 관리 콘솔에서 EKS 배포 (0) | 2025.09.09 |
| [EKS] AWS EKS 소개 및 배포, Control Plane과 Data Plan 그리고 Cluster Endpoint Access (0) | 2025.09.09 |
| [EKS] 가상머신 vs 컨테이너? (0) | 2025.09.09 |