Terraform으로 GKE 리소스 프로비저닝

HashiCorp Terraform은 클라우드 인프라를 프로비저닝하고 관리할 수 있게 해주는 코드형 인프라(IaC) 도구입니다. Terraform은 클라우드 제공업체 및 기타 API와 상호작용할 수 있는 제공업체라는 플러그인을 제공합니다. Google Cloud용 Terraform 제공업체를 사용하여 GKE를 비롯한 Google Cloud 리소스를 프로비저닝하고 관리할 수 있습니다.

Terraform 작동 방법

Terraform에는 선언적이고 구성 중심의 구문이 있으며, 이 구문을 사용하여 Google Cloud 프로젝트에서 프로비저닝하려는 인프라를 설명할 수 있습니다. Terraform 구성 파일 하나 이상에서 이 구성을 작성한 후 Terraform CLI를 사용하여 이 구성을 GKE 리소스에 적용할 수 있습니다.

다음 단계에서는 Terraform의 작동 방식을 설명합니다.

  1. Terraform 구성 파일에서 프로비저닝할 인프라를 설명합니다. 인프라를 프로비저닝하는 방법을 설명하는 코드를 작성할 필요가 없습니다. Terraform이 인프라를 자동으로 프로비저닝합니다.
  2. terraform plan 명령어 실행. 이 명령어는 구성을 평가하고 실행 계획을 생성합니다. 계획을 검토하고 필요에 따라 변경할 수 있습니다.
  3. terraform apply 명령어를 실행하여 다음 작업을 수행합니다.

    1. 백그라운드에서 해당 GKE API를 호출하여 실행 계획에 따라 인프라를 프로비저닝합니다.
    2. 구성 파일의 리소스를 실제 인프라의 리소스에 매핑하는 JSON 파일인 Terraform 상태 파일을 생성합니다. Terraform은 이 파일을 사용하여 인프라의 최신 상태를 기록하고 리소스를 생성, 업데이트, 삭제할 시기를 결정합니다.
    3. terraform apply를 실행하면 Terraform은 상태 파일의 매핑을 사용하여 기존 인프라를 코드와 비교하고 필요에 따라 업데이트합니다.

      • 리소스 객체가 구성 파일에 정의되어 있지만 상태 파일에 존재하지 않는 경우 Terraform이 객체를 생성합니다.
      • 리소스 객체가 상태 파일에 있지만 구성 파일의 구성과 다른 경우 Terraform은 구성 파일과 일치하도록 리소스를 업데이트합니다.
      • 상태 파일의 리소스 객체가 구성 파일과 일치하면 Terraform은 리소스를 변경하지 않은 상태로 둡니다.

GKE용 Terraform 기반 가이드

다음 표에는 GKE에 대한 모든 Terraform 기반 안내 가이드 및 튜토리얼이 나와 있습니다.

가이드 세부정보
Terraform을 사용하여 GKE 클러스터를 만들고 워크로드 배포 Google Kubernetes Engine(GKE) Autopilot 클러스터를 만들고 Terraform을 사용하여 워크로드를 배포하는 방법을 설명합니다.
GKE Autopilot 클러스터에서 Cloud Service Mesh 프로비저닝 GKE Autopilot 클러스터에서 관리형 Cloud Service Mesh를 설정하는 방법을 설명합니다.
클러스터 및 노드 풀 라벨 만들기 및 관리 라벨이 있는 클러스터를 만드는 방법을 설명합니다.
태그를 사용한 GKE 리소스 관리 태그를 사용하여 GKE 클러스터를 관리하는 방법을 설명합니다.
Autopilot 클러스터 만들기 Autopilot에서 GKE 클러스터를 만드는 방법을 설명합니다.
GKE Standard 노드 풀에서 GPU 실행 GKE Standard 클러스터의 노드에 NVIDIA® 그래픽 처리 장치(GPU) 하드웨어 가속기를 연결하고 사용하여 인공지능(AI) 및 그래픽 처리와 같은 컴퓨팅 집약적인 워크로드를 실행하고 최적화하는 방법을 설명합니다.
보조 부팅 디스크를 사용하여 데이터 또는 컨테이너 이미지 미리 로드 보조 부팅 디스크를 사용하여 워크로드 시작 지연 시간을 개선하는 방법을 설명합니다.
VPC 기반 클러스터 만들기 GKE에서 VPC 기반 클러스터를 구성하는 방법을 설명합니다.
GKE Standard에 TPU 워크로드 배포 GKE Standard 클러스터에서 Cloud TPU 가속기(TPU)를 사용하여 대규모 인공지능(AI) 및 머신러닝(ML) 모델 학습, 조정, 추론 워크로드를 요청하고 배포하는 방법을 설명합니다.
내부 부하 분산기 만들기 GKE에서 내부 패스 스루 네트워크 부하 분산기 또는 내부 부하 분산기를 만드는 방법을 설명합니다.
노드 풀 추가 및 관리 GKE Standard 클러스터를 실행하는 노드 풀에서 작업을 추가하고 실행하는 방법을 설명합니다.
Arm 노드를 사용하여 클러스터 및 노드 풀 만들기 GKE에서 Arm 워크로드를 실행할 수 있도록 Arm 노드로 GKE Standard 클러스터 또는 노드 풀을 만드는 방법을 설명합니다.
예약된 영역별 리소스 사용 GKE에서 예약된 Compute Engine 리소스를 사용하는 방법을 설명합니다.
GKE에 가용성이 높은 PostgreSQL 데이터베이스 배포 GKE에 가용성이 높은 PostgreSQL 토폴로지를 배포하는 방법을 설명합니다. PostgreSQL은 안정성과 데이터 무결성으로 알려진 오픈소스 객체 관계형 데이터베이스입니다.
노드 이미지 지정 GKE Standard 클러스터의 노드에 노드 이미지를 지정하는 방법을 설명합니다.
Windows Server 노드 풀을 사용하여 클러스터 만들기 Microsoft Windows Server를 실행하는 노드 풀로 GKE 클러스터를 만드는 방법을 설명합니다.
멀티 인스턴스 GPU 실행 멀티 인스턴스 GPU를 실행하여 사용률을 높이고 비용을 절감하는 방법을 설명합니다.
클러스터 업그레이드 출시 순서 지정 출시 시퀀싱을 사용하여 GKE 클러스터 업그레이드를 관리하는 방법을 설명합니다.
영역 클러스터 만들기 GKE에서 기본 기능이 사용 설정된 Standard 영역 클러스터를 만드는 방법을 설명합니다.
기본 프로덕션 클러스터의 네트워킹 구성 웹 애플리케이션을 GKE 클러스터에 배포하고 HTTPS 부하 분산기로 노출하는 방법을 설명합니다.
컨트롤 플레인 측정항목 수집 및 보기 Google Cloud Managed Service for Prometheus를 사용하여 Kubernetes API 서버, 스케줄러, 컨트롤러 관리자에서 내보낸 측정항목을 Cloud Monitoring으로 전송하도록 GKE 클러스터를 구성하는 방법을 설명합니다.
cAdvisor/Kubelet 측정항목 수집 및 보기 Google Cloud Managed Service for Prometheus를 사용함으로써 Google Kubernetes Engine(GKE) 클러스터를 구성하여 선별된 cAdvisor/Kubelet 측정항목 집합을 Cloud Monitoring으로 보내는 방법을 설명합니다.
로그 처리량 조정 기본 로그 처리량 및 처리량을 늘리는 방법을 설명합니다.
클러스터에 대해 Backup for GKE 사용 설정 클러스터에 대해 Backup for GKE를 사용 설정하는 방법을 설명합니다.
복원 중 리소스 수정 변환 규칙을 사용하여 복원 프로세스 중에 Kubernetes 리소스를 수정하는 방법을 설명합니다.
백업 계획에서 허용 모드 사용 설정 백업 계획에서 허용 모드를 사용 설정하는 방법을 설명합니다.
Backup for GKE API 사용 설정 Backup for GKE를 사용 설정하는 방법을 설명합니다.
백업 집합 계획 GKE에서 워크로드를 백업하는 데 사용되는 Backup for GKE 백업 계획을 만드는 방법을 설명합니다.

GKE용 Terraform 모듈 및 청사진

모듈과 청사진은 대규모 Google Cloud 리소스 프로비저닝 및 관리를 자동화하는 데 유용합니다. 모듈은 Terraform 리소스의 논리적 추상화를 만드는 재사용 가능한 Terraform 구성 파일 집합입니다. 청사진은 배포 및 재사용이 가능한 모듈의 패키지이며 특정 솔루션을 구현하고 문서화하는 정책입니다.

다음 표에는 GKE와 관련된 모든 모듈과 청사진이 나와 있습니다.

모듈 또는 청사진 세부정보
terraform-google-container-vm 독자적인 GKE 클러스터를 구성합니다.
terraform-google-gke-gitlab GKE에 GitLab을 설치합니다.

GKE용 Terraform 리소스

리소스는 Terraform 언어의 기본 요소입니다. 각 리소스 블록은 가상 네트워크 또는 컴퓨팅 인스턴스와 같은 하나 이상의 인프라 객체를 설명합니다.

다음 표에는 GKE에 사용할 수 있는 Terraform 리소스가 나와 있습니다.

GKE 제품 또는 서비스 Terraform 리소스
Google Kubernetes Engine(GKE) Standard 버전 google_container_cluster
google_container_node_pool
Google Kubernetes Engine(GKE) Enterprise 버전 google_gke_hub_feature
google_gke_hub_feature_iam
google_gke_hub_feature_membership
google_gke_hub_fleet
google_gke_hub_membership
google_gke_hub_membership_binding
google_gke_hub_membership_iam
google_gke_hub_membership_rbac_role_binding
google_gke_hub_namespace
google_gke_hub_namespace
google_gke_hub_scope
google_gke_hub_scope_iam
google_gke_hub_scope_rbac_role_binding
Backup for GKE google_gke_backup_backup_plan
google_gke_backup_backup_plan_iam
google_gke_backup_restore_plan
google_gke_backup_restore_plan_iam

다음 단계