본문 작성일은 2020년 7월 14일로, 현 시점에서의 생성 방법과 다를 수 있음.
eksctl은 Amazon EKS에서 Kubernetes 클러스터를 생성하고 관리하기 위한 명령줄 유틸리티이다. 본 문서에서는 eksctl을 실행할 수 있는 환경을 구성하고, 클러스터 및 노드 그룹을 생성하는 과정을 설명한다.
EKS 클러스터 생성을 위한 IAM User를 생성한다.
User 생성 후 액세스 키와 비밀 키를 저장한다.
EKS 클러스터에 kubectl를 사용하여 접근하기 위해, AWS CLI를 버전 1.18.17 이상으로 업데이트한다.
다음 명령을 사용하여 AWS CLI를 최신 버전으로 업데이트한다.
$ pip install awscli --upgrade --user
위에서 생성한 IAM User의 자격 증명을 구성한다.
$ aws configure
eksctl을 설치한다.
$ curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl$(uname -s)_amd64.tar.gz" | tar xz -C .tmp
$ sudo mv /tmp/eksctl /usr/local/bin
Kubernetes 클러스터에 인증할 수 있도록 aws-iam-authenticator를 설치한다.
$ curl -o aws-iam-authenticator https://amazon-eks.s3.us-west-2.amazonaws.com/1.16.8/2020-04-16/bin/linux/amd64/aws-iam-authenticator
$ chmod +x ./aws-iam-authenticator
$ mkdir -p $HOME/bin && cp ./aws-iam-authenticator $HOME/bin/aws-iam-authenticator && export PATH=$PATH:$HOME/bin
$ echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrd
$ aws-iam-authenticator help
kubectl을 설치한다.
$ curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt` /bin/linux/amd63/kubectl
$ chmod +x ./kubectl
$ sudo mv ./kubectl /usr/local/bin/kubectl
$ kubectl version --client
EKS 클러스터 생성을 위한 Config File을 작성한다.
아래 설정 파일은 기존에 구성된 VPC 내에 EKS 클러스터를 생성하고, 노드가 2개인 노드그룹을 생성한다.
그 외의 설정에 대해서는 다음 링크를 참고한다.
https://eksctl.io/usage/creating-and-managing-clusters
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: eks-an2-cnl-birdbox-0
region: ap-northeast-2
vpc:
subnets:
private:
ap-northeast-2a: {id: [subnet-id]}
ap-northeast-2b: {id: [subnet-id]}
nodeGroups:
- name: ng-1-workers
labels: {role: worker}
instanceType: t2.micro
desiredCapacity: 2
privateNetworking: true
ssh:
allow:true
작성한 config 파일을 기반으로 클러스터를 생성하기 위해 eksctl crate cluster 명령을 사용한다.
$ eksctl create cluster -f cluster.yaml
kubectl 명령으로 생성된 노드를 확인할 수 있다.
$ kubectl get nodes