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:
All'interno del modulo Terraform o della raccolta di file Terraform sulla tua workstation, crea il file
main.tfe 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 valorestatus.fullyQualifiedNamedella risorsa personalizzataBucket. Ad esempioaabc2z8-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 personalizzataBucket(status.region). Ad esempio,zone1. Terraform richiede un valore per la regione, ma l'archiviazione di oggetti GDC non lo controlla.BUCKET_ENDPOINT: il valorestatus.endpointdella risorsa personalizzataBucket. Ad esempiohttps://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_validationeskip_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.
Inizializza il file di stato di Terraform nel bucket di archiviazione specificato nel passaggio precedente:
terraform initEsegui il deployment della risorsa del ruolo del cluster
crd-viewere 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 EOFSostituisci 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-viewersu ogni server o cluster API per cui vuoi utilizzare Terraform.Nel file
main.tf, inserisci il seguente bloccorequired_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.
Inizializza la directory di lavoro di Terraform per installare il provider:
terraform init