Utilizza Terraform

Per configurare Terraform nel tuo ambiente Google Distributed Cloud con air gap, devi scaricarlo e configurarlo per gestire le risorse Kubernetes.

Questo documento è rivolto a tutti i gruppi di pubblico che devono configurare Terraform per gestire i propri flussi di lavoro hardware e software con air gap. Per saperne di più, consulta la documentazione relativa ai segmenti di pubblico per GDC con air gap.

Prima di iniziare

  • Scarica Terraform 1.6.3 o versioni successive sulla tua workstation seguendo la documentazione fornita da HashiCorp: https://developer.hashicorp.com/terraform/install. La configurazione del backend in questo documento utilizza impostazioni non supportate dalle versioni precedenti di Terraform.

  • Verifica di avere un bucket di archiviazione GDC esistente. Se non hai un bucket di archiviazione, creane uno. Per saperne di più, consulta Crea bucket di archiviazione.

  • Assicurati che il tuo sistema possa riconoscere il certificato dell'autorità di certificazione (CA) utilizzato dall'archiviazione di oggetti.

  • Installa la CLI gdcloud. Per saperne di più, consulta Utilizza la CLI gdcloud.

  • Genera il file kubeconfig per il server API o il cluster che ospita le risorse che vuoi gestire con Terraform. Per saperne di più, consulta Ottieni un file kubeconfig.

Configura Terraform

Per configurare Terraform nel tuo ambiente GDC, completa quanto segue:

  1. All'interno del modulo Terraform o della raccolta di file Terraform sulla tua workstation, crea il file main.tf e aggiungi la seguente configurazione:

    terraform {
      backend "s3" {
        bucket = "BUCKET_FQN"
        key = "TF_STATE_PATH"
        region = "ZONE"
        endpoints = {
          s3 = "BUCKET_ENDPOINT"
        }
        use_path_style = true
        access_key = "ACCESS_KEY"
        secret_key = "SECRET_KEY"
        skip_credentials_validation = true
        skip_requesting_account_id = true
        skip_metadata_api_check = true
        skip_region_validation = true
        skip_s3_checksum = true
      }
    }
    

    Sostituisci quanto segue:

    • BUCKET_FQN: il valore status.fullyQualifiedName della risorsa personalizzata Bucket. Ad esempio aabc2z8-platform-terraform-state.

    • TF_STATE_PATH: il percorso del file di stato Terraform da archiviare nel bucket di archiviazione. Ad esempio, main.tfstate.

    • ZONE: la zona della risorsa personalizzata Bucket (status.region). Ad esempio, zone1. Terraform richiede un valore per la regione, ma l'archiviazione di oggetti GDC non lo controlla.

    • BUCKET_ENDPOINT: il valore status.endpoint della risorsa personalizzata Bucket. Ad esempio https://objectstorage.org-1.zone1.google.gdch.test.

    • ACCESS_KEY: la chiave di accesso acquisita dal secret contenente le tue credenziali di accesso. Per saperne di più su come acquisire la chiave di accesso, consulta Ottieni le credenziali di accesso al bucket. Il valore nel secret è codificato in base64. Decodificalo prima di utilizzarlo.

    • SECRET_KEY: la chiave secret acquisita dal secret contenente le tue credenziali di accesso. Per saperne di più su come acquisire la chiave segreta, consulta Ottieni le credenziali di accesso al bucket. Il valore nel secret è codificato in base64. Decodificalo prima di utilizzarlo.

    L'archiviazione di oggetti GDC è compatibile con S3, ma non è AWS. Le impostazioni rimanenti configurano il backend per lo spazio di archiviazione non AWS S3:

    • use_path_style: utilizza l'indirizzamento dei bucket in stile percorso per l'archiviazione di oggetti GDC.

    • skip_credentials_validation e skip_requesting_account_id: impedisce a Terraform di chiamare AWS STS e AWS IAM. GDC non fornisce questi servizi.

    • skip_metadata_api_check: impedisce a Terraform di eseguire query sul servizio di metadati AWS EC2.

    • skip_region_validation: consente di utilizzare il nome della zona come regione.

    • skip_s3_checksum: impedisce a Terraform di richiedere un checksum SHA-256 quando carica il file di stato.

  2. Inizializza il file di stato di Terraform nel bucket di archiviazione specificato nel passaggio precedente:

    terraform init
    
  3. Esegui il deployment della risorsa del ruolo del cluster crd-viewer e associala al tuo account utente:

    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
    

    Sostituisci quanto segue:

    • KUBECONFIG: il file kubeconfig del server API o del cluster che ospita le risorse che stai gestendo con Terraform.

    • USER_EMAIL: l'indirizzo email dell'utente a cui associare il ruolo.

    Esegui il deployment del ruolo crd-viewer su ogni server o cluster API per cui vuoi utilizzare Terraform.

  4. Nel file main.tf, inserisci il seguente blocco required_providers:

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

    Questa configurazione installa il provider Kubernetes per eseguire il provisioning e gestire le risorse Kubernetes nel tuo ambiente GDC.

  5. Inizializza la directory di lavoro di Terraform per installare il provider:

    terraform init
    

Passaggi successivi