Configura Terraform

Per utilizzare Terraform nel tuo ambiente air-gap Google Distributed Cloud (GDC), devi scaricarlo e configurarlo per gestire le risorse Kubernetes.

Prima di iniziare

  • Scarica Terraform sulla tua workstation seguendo la documentazione fornita da HashiCorp: https://developer.hashicorp.com/terraform/install.

  • Verifica di avere un bucket di archiviazione GDC esistente. Se non hai un bucket di archiviazione, creane uno.

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

Gestire il file di stato

Il file di stato in Terraform viene utilizzato per registrare lo stato attuale del deployment e mapparlo alla configurazione Terraform. Poiché l'archiviazione di oggetti GDC è implementata utilizzando S3, puoi utilizzare l'API Terraform S3 per la sincronizzazione con un file di stato condiviso. Per farlo, devi configurare Terraform per la sincronizzazione con lo stato remoto:

  1. Aggiungi la seguente configurazione a un file Terraform archiviato localmente, ad esempio il 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"
        ...
      }
    }
    

    Sostituisci quanto segue:

    • BUCKET_FQN: il nome completo della risorsa personalizzata Bucket.

    • TF_STATE_PATH: la posizione del file di stato Terraform da archiviare nel bucket di archiviazione.

    • BUCKET_ENDPOINT: l'endpoint della risorsa personalizzata Bucket.

    • ACCESS_KEY: la chiave di accesso acquisita dal secret contenente le tue credenziali di accesso. Segui Ottieni le credenziali di accesso al bucket per acquisire la chiave di accesso.

    • SECRET_KEY: la chiave segreta acquisita dal secret contenente le tue credenziali di accesso. Segui Ottieni le credenziali di accesso al bucket per acquisire la chiave segreta.

    Devi impostare skip_credentials_validation e force_style_path su true poiché GDC non supporta la convalida delle credenziali e utilizza l'endpoint di stile del percorso.

  2. Inizializza le nuove modifiche al file di stato nel bucket di archiviazione specificato nel passaggio precedente:

    terraform init
    

    Terraform potrebbe richiedere una regione AWS come input obbligatorio, ma il valore non viene utilizzato perché utilizzi l'object storage GDC. Inserisci una regione AWS qualsiasi per soddisfare il requisito.

Imposta autorizzazioni

Oltre alle autorizzazioni necessarie per eseguire un'attività specifica utilizzando Terraform, ad esempio la creazione di un progetto GDC, devi disporre anche delle autorizzazioni per visualizzare le definizioni di risorse personalizzate in questo ambito. Applica le autorizzazioni richieste per utilizzare Terraform:

  1. Crea la risorsa del ruolo del 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
    

    Sostituisci KUBECONFIG con il file kubeconfig del server API o del cluster che ospita la risorsa che gestisci con Terraform. Ad esempio, la maggior parte delle risorse viene eseguita sul server API Management. Per i carichi di lavoro dei container, imposta il file kubeconfig del cluster Kubernetes. Assicurati di impostare il server API globale se gestisci una risorsa globale.

  2. Associa il ruolo del cluster definito nel passaggio precedente all'utente:

    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
    

Ripeti questi passaggi per ogni server o cluster API per cui vuoi impostare le autorizzazioni Terraform.

Installa e configura il provider Terraform

Per eseguire il provisioning e gestire le risorse Kubernetes, devi installare il provider Kubernetes.

  1. In un file Terraform all'interno del modulo, ad esempio il file main.tf, inserisci il seguente blocco required_providers:

    terraform {
      required_providers {
        kubernetes = {
          source = "hashicorp/kubernetes"
          version = "~>2.6.1"
        }
      }
    }
    
  2. Inizializza la directory di lavoro di Terraform per installare il provider:

    terraform init