Configura Terraform

Per utilizzare Terraform nel tuo ambiente air-gapped 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 tuo 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 di Terraform. Poiché l'object storage GDC è implementato utilizzando S3, puoi utilizzare l'API S3 di Terraform per sincronizzare con un file di stato condiviso. Per farlo, devi configurare Terraform in modo che si sincronizzi 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"
        region = "ZONE"
        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: il percorso del file di stato Terraform da archiviare nel bucket di archiviazione.

    • BUCKET_ENDPOINT: l'endpoint della risorsa personalizzata Bucket.

    • ZONE: la zona della risorsa personalizzata Bucket.

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

    • SECRET_KEY: la chiave segreta acquisita dal secret contenente le credenziali di accesso. Segui la procedura per ottenere 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 del 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é stai utilizzando l'object storage GDC. Inserisci una regione AWS qualsiasi per soddisfare il requisito.

Imposta le 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 delle 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 stai gestendo con Terraform. Ad esempio, la maggior parte delle risorse viene eseguita sul server API di gestione. Per i carichi di lavoro dei container, imposta il file kubeconfig del cluster Kubernetes. Assicurati di impostare il server API globale se stai gestendo 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 API o cluster per cui vuoi impostare le autorizzazioni di Terraform.

Installare e configurare il provider Terraform

Devi installare il provider Kubernetes per eseguire il provisioning e gestire le risorse 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.24.0"
        }
      }
    }
    
  2. Inizializza la directory di lavoro di Terraform per installare il provider:

    terraform init