Terraform 개요

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

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

작업 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

다음 단계