Amazon EKS(AWS Elastic Kubernetes Service) 클러스터를 Terraform으로 설정해야 한다면 운이 좋습니다. 테라폼 EKS 모듈과 필요한 모든 리소스를 사용하여 테라폼 구성을 하나 만들고 코드로 AKS 클러스터를 생성할 수 있습니다.
Amazon EKS는 자체 Kubernetes 클러스터를 설치, 운영 및 유지 관리하지 않고 AWS에서 Kubernetes를 실행하는 관리형 서비스입니다. 테라폼을 사용하여 EKS 클러스터를 구축하면 리소스를 빠르고 효율적으로 자동화된 방식으로 생성할 수 있습니다.
이 자습서에서는 단계별로 테라폼 구성을 작성하고 실행하여 EKS 클러스터를 구축하는 방법을 배우게 됩니다. 시작해보겠습니다!
전제 조건
이 게시물은 단계별 자습서입니다. 따라하려면 다음 사항이 준비되어 있어야 합니다:
- Amazon Web Services (AWS) 계정.
- A code editor – Even though you can use any text editor to work with Terraform configuration files, you should consider Visual Studio (VS) Code as it understands the HCL Terraform language well.
- Terraform – 이 자습서에서는 Ubuntu 18.04.5 LTS에서 실행되는 Terraform v0.14.9를 사용하지만, Terraform이 설치된 모든 운영 체제에서 작동합니다.
AWS EKS 클러스터를 위한 Terraform 구성 빌드
Terraform은 인프라스트럭처 코드 도구로, 인프라스트럭처를 안전하고 효율적으로 빌드, 변경 및 버전 관리할 수 있습니다. Terraform은 다양한 유형의 구성 파일을 사용합니다. 각 파일은 일반 텍스트 형식 (.tf) 또는 JSON 형식 (.tfjson)으로 작성됩니다.
먼저 적용할 때 AKS 클러스터를 생성하는 Terraform 구성을 만들어 보겠습니다.
1. 터미널을 엽니다.
2. ~/terraform-eks-cluster-demo라는 이름의 폴더를 생성한 다음, 작업 디렉토리를 해당 폴더로 변경합니다. 이 폴더에는 작업할 모든 구성 파일이 포함됩니다.
3. 다음으로, 좋아하는 코드 편집기를 열고 아래 구성을 복사하여 main.tf라는 이름의 파일로 ~/terraform-eks-cluster-demo에 저장합니다. 이 main.tf 파일은 AKS 클러스터를 위한 Terraform 구성입니다.
main.tf 파일에는 EKS 클러스터를 프로비저닝하기 위해 필요한 모든 리소스가 포함되어 있습니다:
- AWS Identity and Access Management (IAM) 역할 (
terraformekscluster
) – 이 리소스는 Amazon EKS에서 관리되며, 서비스와 함께 사용하는 리소스를 관리하기 위해 AWS S3, CloudWatch 등 다른 AWS 서비스에 대한 호출을 대신 수행합니다. - AWS EC2 보안 그룹 (
resource "aws_security_group" "eks-cluster"
) – AWS EKS 클러스터와의 들어오고 나가는 네트워크 트래픽을 허용합니다.SG-eks-cluster
라는 보안 그룹을 생성하고, VPC ID를 통해 클러스터와 연결하여 모든 트래픽이 들어오고 나가도록 허용합니다.0.0.0.0/0
은 인터넷의 IP 주소를 의미합니다. - EKS 클러스터 (
terraformEKScluster
) – 이 EKS 클러스터는버전 1.19
입니다. - EKS 노드가 다른 AWS 서비스에 대한 호출을 수행하기 위한 IAM 역할 (
eks-node-group
)입니다. 이 역할은 인스턴스에서 일시적인 보안 자격 증명을 가정하여 다른 AWS 리소스에 액세스할 수 있도록 허용하는 정책과 연결됩니다. - EKS 클러스터 노드 그룹 (
node_group1
) – 이 리소스는scaling_config
속성을 통해 클러스터가 갖게 될 노드의 수를 정의합니다.
4. ~/terraform-eks-cluster-demo에 다른 파일을 만들고 provider.tf라고 이름을 지으며 아래 내용을 붙여넣습니다. 공급자 파일은 AWS, Oracle, Azure 등과 같은 공급자를 정의하여 Terraform이 올바른 클라우드 서비스에 연결할 수 있도록 합니다.
튜토리얼은 us-east-2 지역에서 리소스를 생성합니다.
5. 아래에 필요한 모든 파일이 폴더에 있는지 확인하기 위해 tree
명령을 실행하세요.

Terraform EKS 모듈을 사용하여 AWS EKS 클러스터 생성
Terraform 구성 파일과 변수 파일을 준비했으므로 Terraform을 초기화하고 클러스터를 생성할 시간입니다. AKS 클러스터를 프로비저닝하기 위해 다른 모든 Terraform 구성과 마찬가지로 Terraform은 세 개의 명령(terraform init → terraform plan → terraform apply)을 사용합니다.
이제 각 단계를 살펴보겠습니다.
1. 터미널을 열고 ~/terraform-eks-cluster-demo
디렉토리로 이동합니다. cd ~/terraform-eks-cluster-demo
2. 동일한 디렉토리에서 terraform init
명령을 실행하세요. terraform init
명령은 리소스 작업에 필요한 플러그인과 제공자를 초기화합니다.
모두 잘 되면, 아래와 같이 출력에서 Terraform이 성공적으로 초기화되었습니다라는 메시지를 볼 수 있어야합니다.

3. 이제 terraform plan
명령을 실행하십시오. terraform plan
을 실행하는 것은 필수적이지는 않지만 구성 파일의 구문이 올바르고 인프라에서 제공될 리소스의 블루프린트를 제공하기 위해 권장되는 작업입니다.
성공적이면 출력에 Plan: “X”를 추가, “Y”를 변경 또는 “Z”를 삭제와 같은 메시지가 표시됩니다.

4. 그다음, terraform apply
를 실행하여 훈련용 바퀴를 제거하고 AKS 클러스터를 생성합니다. terraform apply
를 호출하면 현재 디렉토리의 각 구성 (*.tf)을 읽어 EKS 클러스터 및 기타 구성 요소를 빌드하기 위해 AWS에 보내는 상태 파일을 컴파일합니다.
AWS는 각 EKS 클러스터당 시간당 0.10달러를 청구합니다. 테스트용 클러스터를 생성한 경우 반드시 제거하십시오!

AWS EKS 클러스터 확인
이 시점에서 작동하는 AKS 클러스터가 구축되었을 것입니다. 그러나 AWS Management Console에서 확인하여 확실하게 확인해 보겠습니다.
1. 좋아하는 웹 브라우저를 열고 AWS Management Console로 이동하여 로그인합니다.
2. 상단의 검색 창을 클릭하여 EKS를 검색하고 Elastic Kubernetes Service 메뉴 항목을 클릭하십시오. terraformEKScluster EKS 클러스터를 볼 수 있어야합니다.


3. 구성을 클릭하면 아래에 표시된대로 Terraform 구성에서 정의한 각 구성 요소가 성공적으로 생성된 것을 확인할 수 있습니다.



결론
이 튜토리얼에서는 Terraform을 사용하여 AWS EKS 클러스터와 해당 구성 요소를 배포하는 방법을 배웠습니다. 이제 이 EKS 클러스터를 사용하여 애플리케이션을 배포할 준비가 되었습니다!
어떤 애플리케이션을 새롭게 찾은 클러스터에 배포할 계획이 있나요?