HashiCorp Terraform은 클라우드 인프라를 프로비저닝하고 관리할 수 있게 해주는 코드형 인프라(IaC) 도구입니다. Terraform은 클라우드 제공업체 및 기타 API와 상호작용할 수 있는 제공업체라는 플러그인을 제공합니다. Google Cloud용 Terraform 제공업체를 사용하여 GKE를 비롯한 Google Cloud 리소스를 프로비저닝하고 관리할 수 있습니다.
Terraform 작동 방법
Terraform에는 선언적이고 구성 중심의 구문이 있으며, 이 구문을 사용하여 Google Cloud 프로젝트에서 프로비저닝하려는 인프라를 설명할 수 있습니다. Terraform 구성 파일 하나 이상에서 이 구성을 작성한 후 Terraform CLI를 사용하여 이 구성을 GKE 리소스에 적용할 수 있습니다.
다음 단계에서는 Terraform의 작동 방식을 설명합니다.
- Terraform 구성 파일에서 프로비저닝할 인프라를 설명합니다. 인프라를 프로비저닝하는 방법을 설명하는 코드를 작성할 필요가 없습니다. Terraform이 인프라를 자동으로 프로비저닝합니다.
terraform plan
명령어 실행. 이 명령어는 구성을 평가하고 실행 계획을 생성합니다. 계획을 검토하고 필요에 따라 변경할 수 있습니다.-
terraform apply
명령어를 실행하여 다음 작업을 수행합니다.- 백그라운드에서 해당 GKE API를 호출하여 실행 계획에 따라 인프라를 프로비저닝합니다.
- 구성 파일의 리소스를 실제 인프라의 리소스에 매핑하는 JSON 파일인 Terraform 상태 파일을 생성합니다. Terraform은 이 파일을 사용하여 인프라의 최신 상태를 기록하고 리소스를 생성, 업데이트, 삭제할 시기를 결정합니다.
-
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 Cloud 기반 Terraform 문서
- HashiCorp의 Google Cloud 제공업체 문서
- Google Cloud용 코드형 인프라