Cluster mit Terraform verwalten

Diese Seite richtet sich an Plattformadministratoren.

Auf dieser Seite wird beschrieben, wie Sie Nutzercluster mit Terraform verwalten.

Vorbereitung

Sie müssen ein Konto haben, das Zugriff auf den Administratorcluster hat. Dieses Konto muss die erforderlichen Berechtigungen zum Verwalten von Nutzerclustern haben. Für dieses Konto ist eine Teilmenge des Zugriffs des Plattformadministrators sowie Listenzugriff auf customresourcedefinitions in der apiextensions.k8s.io-API-Gruppe erforderlich. Mit diesem Konto konfigurieren Sie den Terraform-Kubernetes-Anbieter so, dass er die Ressourcen des Nutzerclusters verwalten kann. Das Konto muss die folgenden spezifischen Berechtigungen haben:

  • Uneingeschränkter Zugriff auf Namespaces für die Nutzercluster im Administratorcluster, z. B. cluster-user-cluster2
  • Uneingeschränkter Zugriff auf clusters und nodepools in baremetal.cluster.gke.io
  • Uneingeschränkter Zugriff auf bootstrapservicebindings, configmanagementfeaturespecs, configmanagementbindings, servicemeshfeaturespecs, servicemeshbindings in managementcenter.anthos.cloud.google.com
  • list-Zugriff auf customresourcedefinitions in apiextensions.k8s.io
  • Wenn Sie Anthos Config Management und Anthos Service Mesh installieren müssen, benötigen Sie auch Zugriff, um das Secret in den Nutzercluster-Namespaces im Administratorcluster abzurufen, damit Sie die Anmeldedaten für die Verbindung mit dem Nutzercluster abrufen können.

Terraform-Skripts herunterladen

Laden Sie die Tarball-Datei für Terraform-Skripts vom Tab Support der Anthos Management Center Console herunter. Extrahieren Sie Skripts aus der Datei.

tar xvf terraform-scripts.tar.gz

Terraform starten und Authentifizierung einrichten

Es gibt viele Möglichkeiten, den Terraform-Kubernetes-Anbieter für die Authentifizierung bei der Administratorcluster-API einzurichten. Wählen Sie die Methode aus, die am besten zu Ihrem Anwendungsfall passt, der unter Anbietereinrichtung dokumentiert ist. Wenn Sie nicht die erforderlichen Berechtigungen im Administratorcluster haben, wenden Sie sich an Ihren Infrastrukturbetreiber.

cd cluster
terraform init

Ersetzen Sie (# TODO-Authentifizierung) durch eine der Authentifizierungsmethoden zur Providereinrichtung.

Nutzercluster erstellen

  1. Geben Sie alle Variablen in cluster/terraform.tfvars an. Geben Sie login_user_name an, wenn er keine Root-Berechtigungen hat. Beispiel:

    admin_cluster_endpoint = "https://10.200.0.100:443"
    cluster_name      = "user-cluster2"
    control_plane_nodes = [
      { "address" = "10.200.0.26" },
      { "address" = "10.200.0.21" },
      { "address" = "10.200.0.22" },
    ]
    control_plane_vip = "10.200.0.110"
    nodepool_nodes = [
      { "address" = "10.200.0.23" },
      { "address" = "10.200.0.25" },
      { "address" = "10.200.0.24" },
    ]
    address_pools = [
      {
        "addresses" = ["10.200.0.111-10.200.0.119"]
        "name"      = "pool1"
      },
    ]
    bootstrap_service            = ["test-bootstrapservice", "test-bootstrapservice-2"]
    anthos_baremetal_version     = "1.9.0"
    
  2. Änderungen anwenden Nach erfolgreicher Ausführung des Befehls wird der Nutzercluster erstellt.

    terraform apply
    

Nutzercluster löschen

Verwenden Sie den folgenden Befehl, um einen Nutzercluster zu löschen:

terraform destroy

Eine Wartezeit wird festgelegt, um das Löschen von Ressourcen zu steuern. Um sie anzupassen, aktualisieren Sie die Variable wait_duration. Der Grund für die Wartezeit sind fehlende Features beim Kubernetes-Anbieter (siehe diese Featureanfrage).

Wenn die Erstellung eines Nutzerclusters aufgrund einiger Probleme aussteht, verwenden Sie nicht terraform destroy. Bereinigen Sie stattdessen die Installation manuell:

  1. Beenden Sie den Befehl "terraform".

  2. Löschen Sie den Nutzercluster aus der Management Center Console.

  3. Entfernen Sie die Datei terraform.tfstate.

Anthos Config Management und Anthos Service Mesh aktivieren

Führen Sie die folgenden Schritte aus, um Anthos Config Management und Anthos Service Mesh zu aktivieren:

  1. Terraform für das Terraform-Projekt features initialisieren.

      cd features
      terraform init
    
  2. Richten Sie die Authentifizierung für den Administratorcluster ein.

  3. Fügen Sie den privaten Schlüssel zum Git-Repository in /etc/ssh-key/key ein.

  4. Setzen Sie activate_acm und activate_asm auf „true“ und definieren Sie alle zugehörigen Variablen. Beispiel:

    cluster_name                 = "user-cluster2"
    admin_cluster_endpoint       = "https://10.200.0.100:443"
    user_cluster_ca_certificate  = ""
    activate_acm                 = true
    version_acm                  = "1.7.1"
    enable_acm_policy_controller = true
    acm_git_repo = {
      git_repo_url    = "git@github.com:example/example.git"
      git_repo_branch = "main"
      git_policy_dir  = "."
      git_secret_type = "ssh"
    }
    activate_asm = true
    version_asm  = "1.9.6-asm.1"
    
  5. Änderungen anwenden

    terraform apply
    
  6. (Optional) Passen Sie die Wartezeit für Anthos Service Mesh bei Bedarf an. Aktualisieren Sie dazu die Variable wait_duration.

Anthos Config Management und Anthos Service Mesh deaktivieren

Bevor Sie Anthos Config Management löschen, sollten Sie alle von Anthos Config Management synchronisierten Ressourcen im Cluster löschen.

Löschen Sie das Secret git-creds und config-management-system aus tfstate. Der Operator Anthos Config Management ist für das Löschen von Ressourcen innerhalb des Nutzerclusters zuständig, nachdem ConfigManagementBinding und ConfigManagementFeatureSpec gelöscht wurden. Anthos Config Management wird im Management Center nicht sofort als deinstalliert angezeigt. Es kann fünf bis zehn Minuten dauern, bis der Operator alles gelöscht hat.

terraform state rm kubernetes_namespace.config-management-system
terraform state rm kubernetes_secret.git-creds
terraform destroy

Bekannte Probleme

  • Derzeit ist es nicht möglich, einen Cluster zu aktualisieren. Beim Starten eines Updates versucht der Anbieter aufgrund des Problems 1378, die Finalizer für vorhandene Ressourcen zu löschen.

  • Der Löschbefehl für Nutzercluster und Anthos Service Mesh basiert auf einer Wartezeit aufgrund des Problems 1357. Sie müssen die Wartezeit möglicherweise entsprechend der Größe Ihres Clusters anpassen.

  • Der Cluster zeigt sich in Terraform schneller bereit als im Management Center (blockiert durch die Unterstützung von Daten von kubernetes_manifest durch den Provider).

  • Zum Löschen von Anthos Config Management mit terraform destroy müssen zuerst Ressourcen aus tfstate entfernt werden. Weitere Informationen finden Sie unter Anthos Config Management und Anthos Service Mesh deaktivieren. Anthos Config Management wird im Management Center nicht sofort als deinstalliert angezeigt. Es kann etwa fünf bis zehn Minuten dauern, bis der Operator alles gelöscht hat.

  • Der Befehl terraform destroy löscht den Namespace des Nutzerclusters. Die Plattformadministratoren sind nicht berechtigt, Namespaces im Administratorcluster zu löschen. Daher kann der Befehl fehlschlagen.

Beschränkungen

  • Mit dem aktuellen Code können Sie einen einzelnen Nutzercluster erstellen.

  • Der aktuelle Code enthält nicht die Konfiguration von OIDC. Für diesen Teil sind Patchfunktionen für den Kubernetes-Anbieter für die Ressource „kubernetes_manifest“ erforderlich.

Weitere Informationen