Terraform konfigurieren

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

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:

  1. 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 Ressource Bucket.

    • TF_STATE_PATH: Der Speicherort der Terraform-Statusdatei, die im Storage-Bucket gespeichert werden soll.

    • BUCKET_ENDPOINT: der Endpunkt der benutzerdefinierten Ressource Bucket.

    • 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 und force_style_path auf true festlegen, da GDC die Anmeldedatenvalidierung nicht unterstützt und den Endpunkt im Pfadstil verwendet.

  2. 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:

  1. 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.

  2. 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.

  1. Fügen Sie in eine Terraform-Datei in Ihrem Modul, z. B. die Datei main.tf, den folgenden required_providers-Block ein:

    terraform {
      required_providers {
        kubernetes = {
          source = "hashicorp/kubernetes"
          version = ">=2.24.0"
        }
      }
    }
    
  2. Initialisieren Sie Ihr Terraform-Arbeitsverzeichnis, um den Anbieter zu installieren:

    terraform init