Mengonfigurasi Terraform

Untuk menggunakan Terraform di lingkungan air gap Google Distributed Cloud (GDC), Anda harus mendownload dan mengonfigurasinya untuk menangani resource Kubernetes.

Sebelum memulai

Mengelola file status

File status di Terraform digunakan untuk mencatat status deployment saat ini dan memetakannya ke konfigurasi Terraform. Karena penyimpanan objek GDC diimplementasikan menggunakan S3, Anda dapat menggunakan Terraform S3 API untuk menyinkronkan dengan file status bersama. Untuk melakukannya, Anda harus mengonfigurasi Terraform agar disinkronkan dengan status jarak jauh:

  1. Tambahkan konfigurasi berikut ke file Terraform yang disimpan secara lokal, seperti file 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"
        ...
      }
    }
    

    Ganti kode berikut:

    • BUCKET_FQN: nama yang sepenuhnya memenuhi syarat dari resource kustom Bucket.

    • TF_STATE_PATH: lokasi file status Terraform yang akan disimpan di bucket penyimpanan.

    • BUCKET_ENDPOINT: endpoint dari resource kustom Bucket.

    • ACCESS_KEY: kunci akses yang diperoleh dari secret yang berisi kredensial akses Anda. Ikuti Mendapatkan kredensial akses bucket untuk mendapatkan kunci akses.

    • SECRET_KEY: kunci rahasia yang diperoleh dari secret yang berisi kredensial akses Anda. Ikuti Mendapatkan kredensial akses bucket untuk mendapatkan kunci rahasia.

    Anda harus menyetel skip_credentials_validation dan force_style_path ke true karena GDC tidak mendukung validasi kredensial dan menggunakan endpoint gaya jalur.

  2. Lakukan inisialisasi pengeditan file status baru di bucket penyimpanan yang Anda tentukan di langkah sebelumnya:

    terraform init
    

    Terraform mungkin meminta region AWS sebagai input yang diperlukan, tetapi nilai tersebut tidak digunakan karena Anda menggunakan penyimpanan objek GDC. Masukkan region AWS apa pun untuk memenuhi persyaratan.

Menetapkan izin

Selain izin yang diperlukan untuk melakukan tugas tertentu menggunakan Terraform, seperti membuat project GDC, Anda juga harus memiliki izin untuk melihat definisi resource kustom dalam cakupan tersebut. Terapkan izin yang diperlukan untuk menggunakan Terraform:

  1. Buat resource peran cluster 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"]
    EOF
    

    Ganti KUBECONFIG dengan file kubeconfig server atau cluster API yang menghosting resource yang Anda kelola dengan Terraform. Misalnya, sebagian besar resource berjalan di server Management API. Untuk beban kerja container, tetapkan file kubeconfig cluster Kubernetes Anda. Pastikan untuk menetapkan server API global jika Anda mengelola resource global.

  2. Ikat peran cluster yang ditentukan pada langkah sebelumnya kepada pengguna:

    kubectl apply --kubeconfig KUBECONFIG -f - <<EOF
    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
    

Ulangi langkah-langkah ini untuk setiap server atau cluster API yang ingin Anda tetapkan izin Terraform-nya.

Menginstal dan mengonfigurasi penyedia Terraform

Anda harus menginstal Penyedia Kubernetes untuk menyediakan dan mengelola resource Kubernetes.

  1. Dalam file Terraform di dalam modul Anda, seperti file main.tf, sisipkan blok required_providers berikut:

    terraform {
      required_providers {
        kubernetes = {
          source = "hashicorp/kubernetes"
          version = "~>2.6.1"
        }
      }
    }
    
  2. Lakukan inisialisasi direktori kerja Terraform Anda untuk menginstal penyedia:

    terraform init