[AWS] EKS 클러스터 생성하기

HYEOB KIM·2022년 5월 5일
0

aws

목록 보기
1/62

EKS 클러스터 생성하기

아래의 AWS 공식 문서를 참조해 작성되었습니다.
=> https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/create-cluster.html

eksctl로 EKS 클러스터 생성

참고:
아래와 같이 --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로 EKS 클러스터 생성

  1. 사전 작업으로 aws cli를 사용하기 위해 aws configure를 통해 액세스 키시크릿 키를 터미널에 입력해야 합니다.

  2. 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 명령은 데이터를 암호화하고 복호화하는 대칭 키를 생성합니다.

  1. 클러스터 생성에는 몇 분이 소요됩니다.
    아래의 명령을 통해 현재 클러스터의 상태를 쿼리할 수 있습니다.
$ aws eks describe-cluster \
    --region region-code \
    --name my-cluster \
    --query "cluster.status"
"ACTIVE"

ACTIVE가 나타나면 클러스터 생성이 완료된 것입니다.

  1. EKS 콘솔로 접근해 보면 정상적으로 생성된 것을 확인할 수 있습니다.
profile
Devops Engineer

0개의 댓글