Wenn Sie Terraform in Ihrer GDC-Umgebung (Google Distributed Cloud) ohne Internetverbindung verwenden möchten, müssen Sie es herunterladen und so konfigurieren, dass Kubernetes-Ressourcen verarbeitet werden.
Hinweise
Laden Sie Terraform auf Ihren Arbeitsplatz herunter. Folgen Sie dazu der Dokumentation von HashiCorp: https://developer.hashicorp.com/terraform/install.
Prüfen Sie, ob Sie einen vorhandenen GDC-Speicher-Bucket haben. Wenn Sie keinen Speicher-Bucket haben, erstellen Sie einen.
Ihr System muss das Zertifikat der Zertifizierungsstelle (Certificate Authority, CA) erkennen, das vom Objektspeicher verwendet wird.
Statusdatei verwalten
Die Zustandsdatei in Terraform wird verwendet, um den aktuellen Status der Bereitstellung aufzuzeichnen und der Terraform-Konfiguration zuzuordnen. Da der GDC-Objektspeicher mit S3 implementiert wird, können Sie die Terraform S3 API verwenden, um mit einer freigegebenen Statusdatei zu synchronisieren. Dazu müssen Sie Terraform für die Synchronisierung mit dem Remote-Status konfigurieren:
Fügen Sie einer lokal gespeicherten Terraform-Datei, z. B. der Datei
main.tf
, die folgende Konfiguration hinzu:terraform { backend "s3" { bucket = "BUCKET_FQN" key = "TF_STATE_PATH" endpoint = "BUCKET_ENDPOINT" 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 aus der benutzerdefinierten RessourceBucket
.TF_STATE_PATH
: Der Speicherort der Terraform-Statusdatei, die im Storage-Bucket gespeichert werden soll.BUCKET_ENDPOINT
: der Endpunkt aus der benutzerdefinierten RessourceBucket
.ACCESS_KEY
: der Zugriffsschlüssel, der aus dem Secret mit Ihren Zugangsdaten abgerufen wurde. Folgen Sie der Anleitung unter Anmeldedaten für den Bucket-Zugriff abrufen, um den Zugriffsschlüssel zu erhalten.SECRET_KEY
: Der geheime Schlüssel, der aus dem Secret mit Ihren Anmeldedaten für den Zugriff abgerufen wird. Folgen Sie der Anleitung unter Anmeldedaten für den Bucket-Zugriff abrufen, um den geheimen Schlüssel zu erhalten.
Sie müssen
skip_credentials_validation
undforce_style_path
auftrue
festlegen, da GDC die Anmeldedatenvalidierung nicht unterstützt und den Endpunkt im Pfadstil verwendet.Initialisieren Sie die Änderungen an der neuen Statusdatei im Speicher-Bucket, den Sie im vorherigen Schritt angegeben haben:
terraform init
Terraform fordert möglicherweise eine AWS-Region als erforderliche Eingabe an, aber der Wert wird nicht verwendet, da Sie GDC-Objektspeicher verwenden. Geben Sie eine beliebige AWS-Region ein, um die Anforderung zu erfüllen.
Berechtigungen festlegen
Zusätzlich zu 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 zum Aufrufen benutzerdefinierter Ressourcendefinitionen in diesem Bereich. Wenden Sie die erforderlichen Berechtigungen für die Verwendung von Terraform an:
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"] EOF
Ersetzen Sie
KUBECONFIG
durch die kubeconfig-Datei des API-Servers oder Clusters, der die Ressource hostet, 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. Wenn Sie eine globale Ressource verwalten, müssen Sie den globalen API-Server festlegen.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-Anbieter installieren und konfigurieren
Sie müssen den Kubernetes-Provider installieren, um Kubernetes-Ressourcen bereitzustellen und zu verwalten.
Fügen Sie in eine Terraform-Datei in Ihrem Modul, z. B. die Datei
main.tf
, den folgendenrequired_providers
-Block ein:terraform { required_providers { kubernetes = { source = "hashicorp/kubernetes" version = "~>2.6.1" } } }
Initialisieren Sie Ihr Terraform-Arbeitsverzeichnis, um den Anbieter zu installieren:
terraform init