- data 블록
Terraform에서 사용하는 data 블록은 특정 리소스에 대한 정보를 조회하는 데 사용됩니다. 당신이 언급한 두 가지 데이터 블록은 다음과 같은 역할을 합니다:
data "aws_caller_identity" "current" {}:
현재 AWS 계정의 정보를 가져오는 데 사용됩니다. 이 데이터 소스를 통해 AWS 계정 ID, 사용자 ARN 및 사용자 ID를 포함한 정보를 확인할 수 있습니다. 주로 현재 작업 중인 AWS 환경에 대한 정보를 얻기 위해 사용됩니다.
data "aws_availability_zones" "available" {}:
현재 지역에서 사용 가능한 가용 영역(Availability Zones)의 목록을 조회합니다. 이 데이터 소스를 사용하면 여러 가용 영역을 기반으로 인프라를 배포하거나, 특정 리소스를 가용 영역에 분산 배치할 때 유용합니다.
- module 블록
module 블록은 EKS 클러스터를 생성하기 위한 모듈을 정의합니다. 모듈은 재사용 가능한 구성 단위로, 다른 구성과 분리된 코드를 작성할 수 있습니다.
source
source 속성은 사용할 Terraform 모듈의 위치를 지정합니다. 여기서는 terraform-aws-modules/eks/aws에서 EKS 모듈을 가져옵니다.
cluster_endpoint_public_access
cluster_endpoint_public_access는 클러스터의 엔드포인트가 공용으로 접근 가능할지를 설정합니다. true로 설정되어 있어, 외부에서 클러스터에 접근할 수 있습니다.
cluster_addons
cluster_addons는 EKS 클러스터에 설치할 추가 구성 요소(애드온)를 정의합니다.
a. coredns
CoreDNS 애드온을 추가합니다. most_recent가 true로 설정되면 최신 버전이 설치됩니다.
b. kube-proxy
kube-proxy 애드온을 추가하며, most_recent가 true로 설정되면 최신 버전이 설치됩니다.
c. vpc-cni
VPC CNI 애드온을 추가합니다. most_recent가 true로 설정되면 최신 버전이 설치됩니다.
before_compute: 이 속성이 true로 설정되어 있어, CNI가 컴퓨팅 노드보다 먼저 설치됩니다.
service_account_role_arn: VPC CNI에 필요한 IAM 역할 ARN을 지정합니다. module.vpc_cni_irsa.iam_role_arn을 통해 VPC CNI에 대한 IAM 역할을 참조합니다.
configuration_values: JSON 형식으로 CNI의 설정 값을 정의합니다. 여기서는 IP 주소 증가를 위한 설정이 포함되어 있습니다:
ENABLE_PREFIX_DELEGATION: "true"로 설정하여 프리픽스 위임을 활성화합니다.
WARM_PREFIX_TARGET: "1"로 설정하여 사전 할당된 IP 주소 수를 지정합니다.
IRSA (IAM Roles for Service Accounts):
IRSA는 Kubernetes 서비스 계정에 IAM 역할을 연결하여 AWS 리소스에 대한 접근을 관리하는 방법입니다. 이 코드에서는 IRSA를 사용하여 VPC CNI에 필요한 권한을 부여하고 있습니다.
iam_role_attach_cni_policy = true:
이 설정은 VPC CNI 플러그인에 필요한 IAM 정책을 IAM 역할에 첨부할지를 결정합니다. true로 설정되어 있으므로, 초기 클러스터 생성 시 VPC CNI가 필요한 권한을 갖게 되어, IP 주소 할당 및 노드 조인이 가능해집니다.
'DevOps' 카테고리의 다른 글
Kubernetes - kube-controller-manager (1) | 2024.10.19 |
---|---|
Kubernetes - kube-apiserver (0) | 2024.10.19 |
Kubernets - ETCD (0) | 2024.10.19 |
Terraform Name Prefix 옵션의 사용 (0) | 2024.10.10 |
ELK Stack vs Grafana Loki (8) | 2024.10.09 |