Terraform 사용

Google Distributed Cloud (GDC) 오프라인 환경에서 Terraform을 구성하려면 Kubernetes 리소스를 처리하도록 다운로드하고 구성해야 합니다.

이 문서는 오프라인 하드웨어 및 소프트웨어 워크플로를 관리하기 위해 Terraform을 설정해야 하는 모든 대상 그룹을 대상으로 합니다. 자세한 내용은 GDC 오프라인 문서의 대상을 참고하세요.

시작하기 전에

  • HashiCorp에서 제공하는 문서(https://developer.hashicorp.com/terraform/install)에 따라 워크스테이션에 Terraform을 다운로드합니다.

  • 기존 GDC 스토리지 버킷이 있는지 확인합니다. 스토리지 버킷이 없으면 버킷을 만듭니다. 자세한 내용은 스토리지 버킷 만들기를 참고하세요.

  • gdcloud CLI를 설치합니다. 자세한 내용은 gdcloud CLI 사용을 참고하세요.

  • Terraform으로 관리하려는 리소스를 호스팅하는 API 서버 또는 클러스터의 kubeconfig 파일을 생성합니다. 자세한 내용은 kubeconfig 파일 가져오기를 참고하세요.

Terraform 설정

GDC 환경에서 Terraform을 설정하려면 다음 단계를 완료하세요.

  1. Terraform 모듈 또는 워크스테이션의 Terraform 파일 모음 내에서 main.tf 파일을 만들고 다음 구성을 추가합니다.

    terraform {
      backend "s3" {
        bucket = "BUCKET_FQN"
        key = "TF_STATE_PATH"
        endpoint = "BUCKET_ENDPOINT"
        skip_credentials_validation = true
        force_path_style = true
        access_key = "ACCESS_KEY"
        secret_key = "SECRET_KEY"
      }
    }
    

    다음을 바꿉니다.

    • BUCKET_FQN: Bucket 커스텀 리소스의 정규화된 이름입니다.

    • TF_STATE_PATH: 스토리지 버킷에 저장할 Terraform 상태 파일의 경로입니다.

    • BUCKET_ENDPOINT: Bucket 커스텀 리소스의 엔드포인트입니다.

    • ACCESS_KEY: 액세스 사용자 인증 정보가 포함된 보안 비밀에서 획득한 액세스 키입니다. 액세스 키 획득에 대한 자세한 내용은 버킷 액세스 사용자 인증 정보 획득을 참고하세요.

    • SECRET_KEY: 액세스 사용자 인증 정보가 포함된 보안 비밀에서 획득한 보안 비밀 키입니다. 보안 비밀 키 획득에 대한 자세한 내용은 버킷 액세스 사용자 인증 정보 획득을 참고하세요.

  2. 이전 단계에서 지정한 스토리지 버킷에서 Terraform 상태 파일을 초기화합니다.

    terraform init
    

    Terraform에서 필수 입력으로 AWS 리전을 요청할 수 있지만 GDC 객체 스토리지를 사용하므로 값은 사용되지 않습니다. 요구사항을 충족하기 위해 AWS 리전을 입력합니다.

  3. crd-viewer 클러스터 역할 리소스를 배포하고 사용자 계정에 바인딩합니다.

    kubectl apply --kubeconfig KUBECONFIG -f - <<EOF
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: crd-viewer
    rules:
    - apiGroups: ["apiextensions.k8s.io"]
      resources: ["customresourcedefinitions"]
      verbs: ["get", "list", "watch"]
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: crd-viewer-binding
    subjects:
    - kind: User
      name: USER_EMAIL
    roleRef:
      kind: ClusterRole
      name: crd-viewer
      apiGroup: rbac.authorization.k8s.io
    EOF
    

    다음을 바꿉니다.

    • KUBECONFIG: Terraform으로 관리하는 리소스를 호스팅하는 API 서버 또는 클러스터의 kubeconfig 파일입니다.

    • USER_EMAIL: 역할을 바인딩할 사용자의 이메일입니다.

    Terraform을 사용하려는 각 API 서버 또는 클러스터에 crd-viewer 역할을 배포합니다.

  4. main.tf 파일에 다음 required_providers 블록을 삽입합니다.

    terraform {
      required_providers {
        kubernetes = {
          source = "hashicorp/kubernetes"
          version = ">=2.24.0"
        }
      }
    }
    

    이 구성은 GDC 환경에서 Kubernetes 리소스를 프로비저닝하고 관리하기 위해 Kubernetes 제공업체를 설치합니다.

  5. Terraform 작업 디렉터리를 초기화하여 제공업체를 설치합니다.

    terraform init
    

다음 단계