Wenn Sie Terraform in Ihrer GDC-Umgebung (Google Distributed Cloud) mit Air Gap konfigurieren möchten, müssen Sie es herunterladen und für die Verarbeitung von Kubernetes-Ressourcen konfigurieren.
Dieses Dokument richtet sich an alle Zielgruppen, die Terraform einrichten müssen, um ihre Hardware- und Software-Workflows mit Air Gap zu verwalten. Weitere Informationen finden Sie unter Zielgruppen für die Dokumentation zu GDC mit Air Gap.
Hinweis
Laden Sie Terraform 1.6.3 oder höher auf Ihre Workstation herunter. Folgen Sie dazu der Dokumentation von HashiCorp: https://developer.hashicorp.com/terraform/install. Die Backend-Konfiguration in diesem Dokument verwendet Einstellungen, die von älteren Terraform-Versionen nicht unterstützt werden.
Prüfen Sie, ob ein GDC-Speicher-Bucket vorhanden ist. Wenn Sie keinen Storage-Bucket haben, erstellen Sie einen. Weitere Informationen finden Sie unter Storage-Buckets erstellen.
Achten Sie darauf, dass Ihr System das vom Objektspeicher verwendete Zertifikat der Zertifizierungsstelle (CA) erkennen kann.
Installieren Sie die gdcloud CLI. Weitere Informationen finden Sie unter gdcloud CLI verwenden.
Generieren Sie die kubeconfig-Datei für den API-Server oder Cluster, der die Ressourcen hostet, die Sie mit Terraform verwalten möchten. Weitere Informationen finden Sie unter kubeconfig-Datei abrufen.
Terraform einrichten
So richten Sie Terraform in Ihrer GDC-Umgebung ein:
Erstellen Sie in Ihrem Terraform-Modul oder in der Sammlung von Terraform-Dateien auf Ihrer Workstation die Datei
main.tfund fügen Sie die folgende Konfiguration hinzu: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 } }Ersetzen Sie Folgendes:
BUCKET_FQN: derstatus.fullyQualifiedName-Wert aus der benutzerdefinierten RessourceBucket. Beispiel:aabc2z8-platform-terraform-state.TF_STATE_PATH: der Pfad der Terraform-Statusdatei, die im Storage-Bucket gespeichert werden soll. Beispiel:main.tfstate.ZONE: die Zone der benutzerdefiniertenBucket-Ressource (status.region). Beispiel:zone1. Terraform erfordert einen Regionswert, der jedoch vom GDC-Objektspeicher nicht geprüft wird.BUCKET_ENDPOINT: derstatus.endpoint-Wert aus der benutzerdefinierten RessourceBucket. Beispiel:https://objectstorage.org-1.zone1.google.gdch.test.ACCESS_KEY: der Zugriffsschlüssel, der aus dem Secret mit Ihren Zugriffsdaten abgerufen wurde. Weitere Informationen zum Abrufen des Zugriffsschlüssels finden Sie unter Bucket-Zugriffsanmeldedaten abrufen. Der Wert im Secret ist base64-codiert. Decodieren Sie ihn, bevor Sie ihn verwenden.SECRET_KEY: der Secret-Schlüssel, der aus dem Secret mit Ihren Zugriffsanmeldedaten abgerufen wurde. Weitere Informationen zum Abrufen des geheimen Schlüssels finden Sie unter Anmeldedaten für den Bucket-Zugriff abrufen. Der Wert im Secret ist base64-codiert. Decodieren Sie ihn, bevor Sie ihn verwenden.
Der GDC-Objektspeicher ist S3-kompatibel, aber nicht AWS. Mit den verbleibenden Einstellungen wird das Backend für Nicht-AWS-S3-Speicher konfiguriert:
use_path_style: Verwendet die pfadbasierte Bucket-Adressierung für den GDC-Objektspeicher.skip_credentials_validationundskip_requesting_account_id: Verhindert, dass Terraform AWS STS und AWS IAM aufruft. GDC bietet diese Dienste nicht an.skip_metadata_api_check: Verhindert, dass Terraform den AWS EC2-Metadatendienst abfragt.skip_region_validation: Ermöglicht die Verwendung des Zonennamens als Region.skip_s3_checksum: Verhindert, dass Terraform beim Hochladen der Statusdatei nach einer SHA-256-Prüfsumme fragt.
Initialisieren Sie die Terraform-Statusdatei in dem Storage-Bucket, den Sie im vorherigen Schritt angegeben haben:
terraform initStellen Sie die Clusterrollenressource
crd-viewerbereit und binden Sie sie an Ihr Nutzerkonto: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 EOFErsetzen Sie Folgendes:
KUBECONFIG: die kubeconfig-Datei des API-Servers oder Clusters, der die Ressourcen hostet, die Sie mit Terraform verwalten.USER_EMAIL: die E-Mail-Adresse des Nutzers, an den die Rolle gebunden werden soll.
Stellen Sie die Rolle
crd-viewerauf jedem API-Server oder Cluster bereit, für den Sie Terraform verwenden möchten.Fügen Sie in der Datei
main.tfden folgendenrequired_providers-Block ein:terraform { required_providers { kubernetes = { source = "hashicorp/kubernetes" version = ">=2.24.0" } } }Mit dieser Konfiguration wird der Kubernetes-Anbieter installiert, um Kubernetes-Ressourcen in Ihrer GDC-Umgebung bereitzustellen und zu verwalten.
Initialisieren Sie Ihr Terraform-Arbeitsverzeichnis, um den Anbieter zu installieren:
terraform init
Nächste Schritte
- Mit Ihren Tools auf Zonen zugreifen
- Ressourcenhierarchie
- Verbindung zu einem Identitätsanbieter herstellen