eksctl로 Amazon EKS 클러스터 생성하기

Ajisai·2023년 6월 15일

처음에 EKS 클러스터 생성하는 법을 모르겠어서 애먹었던 게 생각나서..

기본 리소스 구성

git clone https://github.com/dybooksIT/k8s-aws-book.git

<클라우드 네이티브를 위한 쿠버네티스 실전 프로젝트>_아이자와 고지, 사토 가즈히코 저, 박상욱 옮김(동양북스) 참고했음.
CloudFormation에서 사용할 manifest 파일의 경로는 다음과 같다.

k8s-aws-book/eks-env/01_base_resources_cfn.yaml

여기서 VPC, subnet 등 기본 리소스가 생성된다. 때문에 이에 관한 권한이 필요한데, 다음의 세 방법 중 하나를 택한다.
1. admin 계정으로 생성한다.
2. 현재 IAM 계정에 AdministratorAccess 정책을 추가한 다음 리소스를 구성하고, AdministratorAccess 정책을 다시 삭제한다.
3. CloudFormationFullAccess 정책과 다음 인라인 정책(ChatGPT피셜)을 추가한다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:CreateVpc",
        "ec2:CreateSubnet",
        "ec2:CreateInternetGateway",
        "ec2:AttachInternetGateway",
        "ec2:CreateRouteTable",
        "ec2:CreateRoute",
        "ec2:AssociateRouteTable",
        "ec2:ModifyVpcAttribute",
        "ec2:ModifySubnetAttribute",
        "ec2:DeleteVpc",
        "ec2:DeleteSubnet",
        "ec2:DeleteInternetGateway",
        "ec2:DetachInternetGateway",
        "ec2:DeleteRouteTable",
        "ec2:DeleteRoute",
        "ec2:DisassociateRouteTable"
      ],
      "Resource": "*"
    }
  ]
}

사실 admin으로 하는 게 편하긴 하다.

aws cloudformation create-stack \
  --stack-name myteststack \
  --template-body file://<BASE_DIRECTORY>/k8s-aws-book/eks-env/01_base_resources_cfn.yaml

그냥 콘솔에서 01_base_resources_cfn.yaml 파일을 넣어서 만들어도 되고, 위와 같이 명령어를 쳐도 된다.
클러스터 생성 시에 서브넷 정보가 필요하므로 AWS 콘솔에서 이를 확인한다.


클러스터 구성

eksctl create cluster \
--vpc-public-subnets subnet-05d22431a1ff620af,subnet-09eb7e550358e4008,subnet-03f750bf78bc5be2c \
--name eks-work-cluster \
--region ap-northeast-2 \
--version 1.24 \
--nodegroup-name eks-work-nodegroup \
--node-type t2.small \
--nodes 2 \
--nodes-min 2 \
--nodes-max 5

이 명령어도 책에 나와 있는 건데, --version 1.19--version 1.24로 바꿨다.
1.19로 하면 더이상 지원되지 않으며, 1.22~1.25만 지원한다고 메시지가 뜬다.
당연한 얘기지만 퍼블릭 서브넷은 앞의 리소스 구성 단계에서 만들어진 서브넷 ID를 확인해 사용하고,
클러스터 이름(--name)이나 리전(--region), 그 외 모든 옵션은 본인의 필요에 따라 바꿔 써야 한다.

profile
고도로 발달한 공유는 메모와 구분할 수 없다

0개의 댓글