Wenn Sie Terraform in Ihrer Google Distributed Cloud-Umgebung (GDC) ohne Internetverbindung verwenden möchten, müssen Sie es herunterladen und so konfigurieren, dass Kubernetes-Ressourcen verarbeitet werden können.
Hinweis
Laden Sie Terraform auf Ihre Workstation herunter. Folgen Sie dazu der Dokumentation von HashiCorp: https://developer.hashicorp.com/terraform/install.
Prüfen Sie ob Sie einen vorhandenen GDC-Storage-Bucket haben. Wenn Sie keinen Storage-Bucket haben, erstellen Sie einen.
Prüfen Sie, ob Ihr System das Zertifikat der Zertifizierungsstelle (Certificate Authority, CA) erkennt, das vom Objektspeicher verwendet wird.
Zustandsdatei verwalten
In der Zustandsdatei in Terraform wird der aktuelle Status der Bereitstellung aufgezeichnet und der Terraform-Konfiguration zugeordnet. Da der GDC-Objektspeicher mit S3 implementiert wird, können Sie die Terraform S3 API verwenden, um mit einer freigegebenen Zustandsdatei zu synchronisieren. Dazu müssen Sie Terraform so konfigurieren, dass es mit dem Remote-Status synchronisiert wird:
Fügen Sie die folgende Konfiguration einer lokal gespeicherten Terraform-Datei hinzu, z. B. der Datei
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" ... } }Ersetzen Sie Folgendes:
BUCKET_FQN: der voll qualifizierte Name der benutzerdefinierten RessourceBucket.TF_STATE_PATH: der Speicherort der Terraform-Zustandsdatei, die im Storage-Bucket gespeichert werden soll.BUCKET_ENDPOINT: der Endpunkt der benutzerdefinierten RessourceBucket.ZONE: die Zone der benutzerdefinierten RessourceBucket.ACCESS_KEY: der Zugriffsschlüssel, der aus dem Secret mit Ihren Anmeldedaten abgerufen wurde. Folgen Sie der Anleitung unter Zugriffsschlüssel für Bucket abrufen , um den Zugriffsschlüssel zu erhalten.SECRET_KEY: der geheime Schlüssel, der aus dem Secret mit Ihren Anmeldedaten abgerufen wurde. Folgen Sie der Anleitung unter Zugriffsschlüssel für Bucket abrufen , um den geheimen Schlüssel zu erhalten.
Sie müssen
skip_credentials_validationundforce_style_pathauftruesetzen, da GDC die Anmeldedatenvalidierung nicht unterstützt und den Endpunkt im Pfadstil verwendet.Initialisieren Sie die neuen Änderungen an der Zustandsdatei im Storage-Bucket, den Sie im vorherigen Schritt angegeben haben:
terraform initTerraform fordert möglicherweise eine AWS-Region als erforderliche Eingabe an. Der Wert wird jedoch nicht verwendet, da Sie den GDC-Objektspeicher verwenden. Geben Sie eine beliebige AWS-Region ein, um die Anforderung zu erfüllen.
Berechtigungen festlegen
Neben den Berechtigungen, die zum Ausführen einer bestimmten Aufgabe mit Terraform erforderlich sind, z. B. zum Erstellen eines GDC-Projekts, benötigen Sie auch Berechtigungen, um benutzerdefinierte Ressourcendefinitionen in diesem Bereich anzusehen. Wenden Sie die erforderlichen Berechtigungen an, um Terraform zu verwenden:
Erstellen Sie die Clusterrollenressource
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"] EOFErsetzen Sie
KUBECONFIGdurch die kubeconfig-Datei des API-Servers oder Clusters, auf dem die Ressource gehostet wird, die Sie mit Terraform verwalten. Die meisten Ressourcen werden beispielsweise auf dem Management API-Server ausgeführt. Legen Sie für Containerarbeitslasten die kubeconfig-Datei Ihres Kubernetes-Clusters fest. Legen Sie den globalen API-Server fest, wenn Sie eine globale Ressource verwalten.Binden Sie die im vorherigen Schritt definierte Clusterrolle an den Nutzer:
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
Wiederholen Sie diese Schritte für jeden API-Server oder Cluster, für den Sie Terraform-Berechtigungen festlegen möchten.
Terraform-Provider installieren und konfigurieren
Sie müssen den Kubernetes-Provider installieren, um Kubernetes-Ressourcen bereitzustellen und zu verwalten.
Fügen Sie in einer Terraform-Datei in Ihrem Modul, z. B. der Datei
main.tf, den folgenden Blockrequired_providersein:terraform { required_providers { kubernetes = { source = "hashicorp/kubernetes" version = ">=2.24.0" } } }Initialisieren Sie Ihr Terraform-Arbeitsverzeichnis, um den Provider zu installieren:
terraform init