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:
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 personalizzataBucket.TF_STATE_PATH: il percorso del file di stato Terraform da archiviare nel bucket di archiviazione.BUCKET_ENDPOINT: l'endpoint della risorsa personalizzataBucket.ZONE: la zona della risorsa personalizzataBucket.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_validationeforce_style_pathsutruepoiché GDC non supporta la convalida delle credenziali e utilizza l'endpoint di stile del percorso.Inizializza le nuove modifiche del file di stato nel bucket di archiviazione specificato nel passaggio precedente:
terraform initTerraform 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:
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"] EOFSostituisci
KUBECONFIGcon 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.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.
In un file Terraform all'interno del modulo, ad esempio il file
main.tf, inserisci il seguente bloccorequired_providers:terraform { required_providers { kubernetes = { source = "hashicorp/kubernetes" version = ">=2.24.0" } } }Inizializza la directory di lavoro di Terraform per installare il provider:
terraform init