인포그랩
home
회사 소개
home

Terraform으로 AWS EKS 생성

소개

AWS 클라우드에 VPC, Subnet, Security GroupEKS 클러스터를 프로비저닝하는 방법을 학습합니다.
AWS 인프라를 코드로 관리하고 프로비저닝하는 목적으로 Terraform을 활용합니다.
이 과정을 통해 Terraform 사용에 대한 지식과 Terraform으로 AWS EKS를 배포하는 방법을 습득합니다.

Terraform 이란?

Terraform은 인프라를 안전하고 효율적으로 구축, 변경 및 버전화할 수 있는 코드형 인프라(IaC) 도구입니다. Terraform 선언적인 형식의 구성 파일을 작성하여 원하는 인프라 구성을 정의하고, 이를 실행하여 실제 인프라를 프로비저닝합니다. 컴퓨팅 인스턴스, 스토리지 및 네트워킹과 같은 하위 수준 구성 요소와 DNS 항목, SaaS 기능 등과 같은 상위 수준 구성 요소가 여기에 포함됩니다.
Terraform은 기존 서비스 제공업체(AWS, Azure, GCP)와 맞춤형 사내 솔루션을 모두 관리할 수 있습니다.

AWS EKS란?

Amazon Elastic Kubernetes Service(Amazon EKS)는 자체 Kubernetes 컨트롤 플레인 또는 노드를 설치, 운영 및 유지 관리할 필요 없이 AWS에서 Kubernetes를 실행하는 데 사용할 수 있는 관리형 서비스입니다.
Amazon EKS 클러스터는 두 가지 요소로 구성됩니다.
Amazon EKS 컨트롤 플레인(control plane)
컨트롤 플레인에 등록된 Amazon EKS 노드(nodes)
Amazon EKS는 각 클러스터에 대해 단일 테넌트(tenant) Kubernetes 컨트롤 플레인을 실행합니다. 컨트롤 플레인 인프라는 클러스터 또는 AWS 계정 간에 공유되지 않습니다. 컨트롤 플레인은 최소 2개의 API 서버 인스턴스와 AWS 리전 내의 3개 가용 영역에서 실행되는 3개의 etcd 인스턴스로 구성됩니다.
Kubernetes 노드는 컨테이너화된 애플리케이션을 실행하는 시스템입니다. 각 노드에는 다음 구성 요소가 있습니다.
Container runtime : 컨테이너 실행을 담당하는 소프트웨어입니다. Amazon EKS는 containerd를 기본으로 사용합니다.
kubelet : 컨테이너가 관련 파드(Pod) 내에서 정상이고 실행 중인지 확인합니다.
kube-proxy : 파드와의 통신을 허용하는 네트워크 규칙을 유지합니다.
Amazon EKS 클러스터는 Amazon EKS 관리형 노드 그룹, 자체 관리형 노드AWS Fargate의 모든 조합에서 파드를 예약할 수 있습니다.

학습 내용

AWS Cloud9에서 Terraform을 사용하여 AWS VPC, Subnet, Security Group, EKS를 생성하는 방법
AWS EKS Add-ons를 구성하는 방법
AWS EKS Cluster에 접속하는 방법

아키텍처

사용 리소스 및 비용

EC2
Cloud9 (t3.small) : 1ea X 시간당 0.026$
Bastion Host (t3.micro) : 1ea X 시간당 0.013$
EKS nodes (m6i.xlarge) : 4 ~ 8ea x 시간당 0.236$
EBS (GB당 월 0.0912$)
Cloud9 (20GB) : 1ea
Bastion Host (10GB) : 1ea
EKS nodes (30GB) : 4 ~ 8ea
기타
EKS 클러스터 : 1ea X 시간당 0.1$
NAT Gateway : 1ea X 시간당 0.059$

사전 준비사항

실습을 시작하기 전에 준비되어야 하는 사항은 다음과 같습니다.
과정을 수행하여 필요한 AWS Cloud9을 사용할 수 있도록 구성되어 있어야 합니다.
VPC, Subnet, Security Group, EC2, EKS에 대한 생성 및 수정 권한이 있는 AWS 계정이 있어야 합니다.