EKS cluster를 생성하는 다양한 방법이 있지만, 그 중 eksctl을 사용하여 간단하게 테스트용 cluster를 생성해보고자 합니다.
테스트 환경
- AWS EC2 Instance (Amazon Linux)
Install eksctl
위 링크를 참조하여 본인의 환경에 맞는 방법으로 eksctl을 설치합니다.
저는 Amazon Linux 환경이기 때문에, 아래 절차대로 설치했습니다.
eksctl binary 추출
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
eksctl을 어디서든 사용할 수 있도록 바이너리를 기본 디렉토리로 이동
sudo mv /tmp/eksctl /usr/local/bin
eksctl 동작 확인
eksctl version
AWS IAM User 생성하기
eksctl을 이용하여 EKS cluster를 생성하기 위해서는 아래의 두 가지가 필요합니다.
- EKS Cluster 생성 권한이 있는 AWS IAM User
- 해당 User의 Access key ID, Secret access key
EKS cluster를 만들기 위해서는 VPC, EC2, EBS 등 여러 가지 리소스가 필요하며, 해당 리소스들을 생성할 수 있는 권한을 가진 사용자를 등록해야 eksctl로 cluster 생성이 가능합니다.
테스트 환경에서는 Admin 권한을 가진 사용자를 따로 생성하여 진행했습니다.
AWS Console의 상단부에서 IAM
을 검색하고, 검색 결과 중 IAM
을 클릭합니다.
왼쪽 탐색바에서 액세스 관리
- 사용자
를 클릭하고, 사용자 추가
버튼을 클릭합니다.
사용자 이름
을 입력하고, 액세스 키
와 암호
를 체크하여 활성화합니다.
다음: 권한
버튼을 클릭합니다.
상단에서 기존 정책 직접 연결
을 선택하고 AdministratorAccess
를 체크합니다.다음: 태그
를 클릭합니다.
태그 작성 여부는 선택사항입니다.
다음: 검토
를 클릭합니다.
사용자 세부 정보
와 권한 요약
이 선택한 대로 잘 설정되었는지 확인하고 사용자 만들기
를 클릭합니다.
사용자 생성이 완료되고 위와 같이 생성 결과값을 확인할 수 있습니다.
여기서 저희가 필요한 것은 액세스 키
와 비밀 액세스 키
입니다.
표시 버튼을 클릭하여 값을 확인할 수 있습니다.비밀번호
항목은 해당 사용자를 이용하여 AWS Console에 접속시 필요한 비밀번호입니다..csv 다운로드
버튼을 클릭하여 해당 정보를 저장해놓고 사용하는 것을 추천 드립니다.
테스트 환경에 aws configure 적용하기
새로 생성한 사용자의 Access key ID와 Secret access key를 터미널에서 configure합니다.
aws configure
커맨드를 입력하고 순서대로 입력합니다.
- AWS Access Key ID
- AWS Secret Access Key
- Default region name
- Default output format
제 경우에는 이미 입력된 값이 있기 때문에 위와 같이 출력됐습니다.
ekscluster config yaml file 만들기
eksctl
을 이용하여 cluster를 생성하는 경우, 커맨드 + 옵션을 이용해 간단하게 만들 수 있지만, 설정을 보다 편하게 하기 위해 yaml file을 만들어서 사용하겠습니다.
createcluster.yaml
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: test-cluster
region: ap-northeast-2
tags:
environment: devel
vpc:
cidr: "10.10.0.0/16" #"192.168.0.0/16"
nat:
gateway: Single
availabilityZones:
- ap-northeast-2a
- ap-northeast-2b
- ap-northeast-2c
managedNodeGroups:
- name: management
instanceType: t3.medium
minSize: 1
desiredCapacity: 3
maxSize: 4
volumeType: gp3
volumeSize: 30
ssh:
enableSsm: true
availabilityZones: ["ap-northeast-2a","ap-northeast-2b","ap-northeast-2c"]
cloudWatch:
clusterLogging:
enableTypes:
- api
- audit
- authenticator
위 파일대로 cluster를 생성하면
- 10.10.0.0/16 cidr를 사용하는 vpc에
- nat gateway 하나를 생성하고
- ap-northeast-2 리전의 a,b,c 가용영역을 사용하는
- t3.medium 인스턴스 타입의 노드 3개를 가진 managed node group이 생성되며
- 각 노드는 gp3 타입의 30G짜리 volume을 가집니다.
EKS Cluster 만들기
위에서 eks cluster를 만들기 위한 설정 파일을 만들었기 때문에 간단한 명령어로 cluster 생성이 가능합니다.
eksctl create cluster -f createcluster.yaml
eksctl은 AWS CloudFormation이라는 서비스를 통해 EKS Cluster를 생성합니다.
eksctl 명령어를 날리면
- CloudFormation에 cluster를 생성하라는 스택이 만들어지고
- cluster 생성이 완료되면 node group을 생성하라는 스택이 만들어집니다.
위와 같이, 스택이 총 두개 생기는데, cluster 생성 스택이 먼저 생기고 그것이 완료되면 node group 생성 스택이 생기는 순서입니다.
생성중에도 스택 이름을 클릭하여 위와 같이 어떤 리소스가 생성되고 있는지 확인이 가능합니다.