Terraform 개요

HashiCorp Terraform은 클라우드 인프라를 프로비저닝하고 관리할 수 있게 해주는 코드형 인프라 (IaC) 도구입니다. Terraform은 클라우드 제공업체 및 기타 API와 상호작용할 수 있는 제공업체 라는 플러그인을 제공합니다. Google Distributed Cloud (GDC) 에어 갭의 경우 Terraform용 특정 GDC 에어 갭 제공업체가 없으므로 Kubernetes 제공업체를 사용하여 리소스를 프로비저닝해야 합니다.

GDC 리소스는 Kubernetes 리소스의 전체 수명 주기 관리를 통해 Kubernetes 제공업체에서 관리할 수 있습니다.

작업 Terraform 프로바이더
만들기

Kubernetes 제공업체
읽음
업데이트
삭제 해당 사항 없음, terraform destroy 사용

Terraform 작동 방식

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

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

  1. Terraform 구성 파일 에서 프로비저닝하려는 인프라를 설명합니다. 인프라를 프로비저닝하는 방법을 설명하는 코드를 작성하지 않아도 됩니다. Terraform이 인프라를 자동으로 프로비저닝합니다.

  2. terraform plan 명령어를 실행합니다. 이 명령어는 구성을 평가하고 실행 계획을 생성합니다. 계획을 검토하고 필요에 따라 변경할 수 있습니다.

  3. terraform apply 명령어를 실행합니다. 이 명령어는 다음 작업을 실행합니다.

    1. 백그라운드에서 해당 GDC 에어 갭 API를 호출하여 실행 계획에 따라 인프라를 프로비저닝합니다.

    2. 구성 파일의 리소스를 실제 인프라의 리소스에 매핑하는 JSON 파일인 Terraform 상태 파일을 생성합니다. Terraform은 이 파일을 사용하여 인프라의 최신 상태를 기록하고 리소스를 생성, 업데이트, 삭제할 시기를 결정합니다.

    3. terraform apply를 실행하면 Terraform은 상태 파일의 매핑을 사용하여 기존 인프라를 코드와 비교하고 필요에 따라 업데이트합니다.

      • 리소스 객체가 구성 파일에 정의되어 있지만 상태 파일에 존재하지 않는 경우 Terraform이 객체를 생성합니다.

      • 리소스 객체가 상태 파일에 있지만 구성 파일의 구성과 다른 경우 Terraform은 구성 파일과 일치하도록 리소스를 업데이트합니다.

      • 상태 파일의 리소스 객체가 구성 파일과 일치하면 Terraform은 리소스를 변경하지 않은 상태로 둡니다.

GDC 에어 갭용 Terraform 리소스

리소스 는 Terraform 언어의 기본 요소입니다. 각 리소스 블록은 하나 이상의 인프라 객체를 설명합니다.

GDC 에어 갭은 Kubernetes를 기반으로 빌드됩니다. Node, PersistentVolume, Service와 같은 기본 Kubernetes API 외에도 CustomResourceDefinition API를 지원합니다. 커스텀 리소스 정의를 사용하면 GDC 에어 갭 인프라를 나타내기 위해 GDC별 API가 빌드됩니다.

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

Terraform 리소스 데이터 소스
kubernetes_manifest

다음 단계