아래의 AWS 공식 문서
를 참조해 작성되었습니다.
=> https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/create-cluster.html
참고:
아래와 같이--help
명령을 이용하면eksctl create cluster
명령과 관련한 옵션들을 볼 수 있습니다.eksctl create cluster --help
아래의 간단한 옵션들을 이용해 EKS 클러스터를 만들어 볼 수 있습니다.
eksctl create cluster \
--name my-cluster \
--version 1.21 \
--without-nodegroup
명령을 실행하면 아래와 같이 부족한 옵션에 대해서 자동으로 채워 넣으면서 CloudFormation
을 통해 생성하는 모습을 볼 수 있습니다.
클러스터가 생성 완료되면 명령 출력 맨 아래
에 아래와 같이 출력되어 있습니다.
[✓] EKS cluster "my-cluster" in "region-code" region is ready
my-cluster
라는 이름의 버전 1.21
, 노드가 없는 상태의 클러스터를 생성했습니다.
사전 작업으로 aws cli
를 사용하기 위해 aws configure
를 통해 액세스 키
와 시크릿 키
를 터미널에 입력해야 합니다.
aws eks create-cluster
명령을 아래와 같이 수행합니다.
aws eks create-cluster \
--region region-code \
--name my-cluster \
--kubernetes-version 1.21 \
--role-arn arn:aws:iam::111122223333:role/eks-service-role-AWSServiceRoleForAmazonEKS-EXAMPLEBKZRQR \
--resources-vpc-config subnetIds=subnet-a9189fe2,subnet-50432629,securityGroupIds=sg-f5c54184
--region
: eks 클러스터를 생성할 리전 코드를 입력.--name
: 생성할 클러스터 이름 입력.--kubernetes-version
: 생성할 클러스터의 버전을 입력.--role-arn
: eks 클러스터에 접근하기 위한 역할의 arn 입력.--resources-vpc-config
--subnetIds
: 클러스터가 속할 서브넷 ID 복수 입력.참고:
2개 이상
의 서브넷을 이용해 클러스터를 생성하는 것이 좋습니다.
요청의 가용 영역 중 하나에 Amazon EKS 클러스터를 생성하는 데 충분한 용량이 없다
는 오류가 표시될 수 있습니다. 이때, 오류 출력에는 새 클러스터를 지원할 수 있는 가용 영역이 함께 출력됩니다. 이 가용 영역을 이용해서 클러스터를 다시 생성하면 됩니다.
--securityGroupIds
: 클러스터에 적용할 보안그룹 ID실행하면 결과가 아래와 같이 JSON
형식으로 나타납니다.
{
"cluster": {
"name": "test-cluster",
"arn": "arn:aws:eks:ap-northeast-2:707811555388:cluster/test-cluster",
"createdAt": "2022-05-05T22:43:52.083000+09:00",
"version": "1.21",
"roleArn": "arn:aws:iam::707811555388:role/eksClusterRole",
"resourcesVpcConfig": {
"subnetIds": [
"subnet-f70f849c",
"subnet-39a9ed42",
"subnet-37798678",
"subnet-13c0084c"
],
"securityGroupIds": [
"sg-c7e25bb6"
],
"vpcId": "vpc-28bf2643",
"endpointPublicAccess": true,
"endpointPrivateAccess": false,
"publicAccessCidrs": [
"0.0.0.0/0"
]
},
"kubernetesNetworkConfig": {
"serviceIpv4Cidr": "10.100.0.0/16",
"ipFamily": "ipv4"
},
"logging": {
"clusterLogging": [
{
"types": [
"api",
"audit",
"authenticator",
"controllerManager",
"scheduler"
],
"enabled": false
}
]
},
"status": "CREATING",
"certificateAuthority": {},
"platformVersion": "eks.6",
"tags": {}
}
}
1-1. (선택사항) 만약 Kubernetes 비밀을 암호화하려면 먼저 create-key
작업을 사용하여 KMS 키
를 생성합니다.
MY_KEY_ARN=$(aws kms create-key --query KeyMetadata.Arn —-output text)
참고:
KMS 키는 아래 조건을 만족 해야 합니다.
- 대칭 키.
- 데이터 암호화 및 복호화 가능.
- 클러스터와 같은 리전에 생성.
- KMS 키가 다른 계정에서 생성된 경우 사용자는 KMS 키에 액세스 가능.
1-2. (선택사항) 그리고 aws eks create-cluster
명령에 아래 내용을 추가해서 실행합니다.
--encryption-config '[{"resources":["secrets"],"provider":{"keyArn":"$MY_KEY_ARN"}}]'
참고:
기본적으로 create-key 명령은 데이터를 암호화하고 복호화하는대칭 키
를 생성합니다.
현재 클러스터의 상태
를 쿼리할 수 있습니다.$ aws eks describe-cluster \
--region region-code \
--name my-cluster \
--query "cluster.status"
"ACTIVE"
ACTIVE
가 나타나면 클러스터 생성이 완료된 것입니다.
EKS 콘솔
로 접근해 보면 정상적으로 생성된 것을 확인할 수 있습니다.