Auf dieser Seite wird beschrieben, wie Sie mit Config Sync-Flottenpaketen Kubernetes-Ressourcen in Clustern bereitstellen, die in einer Flotte registriert sind. Nachdem Sie ein Flottenpaket erstellt und bereitgestellt haben, werden die Kubernetes-Konfigurationsdateien im Git-Repository automatisch im neuen Cluster bereitgestellt, wenn Sie Ihrer Flotte einen neuen Cluster hinzufügen.
Eine FleetPackage ist eine deklarative API, um Kubernetes-Rohmanifeste in einer Flotte von Clustern bereitzustellen. Alle Kubernetes-Ressourcen, die Sie mit einem Flottenpaket bereitstellen möchten, müssen bereits hydriert (WET) sein.
Hinweise
Erstellen Sie ein Git-Repository mit den Kubernetes-Ressourcen, die Sie in einer Flotte bereitstellen möchten, oder sorgen Sie dafür, dass Sie darauf zugreifen können.
Installieren und initialisieren Sie das Google Cloud CLI, das die Befehle
gcloudundnomosenthält. Wenn Sie Cloud Shell verwenden, ist die Google Cloud CLI vorinstalliert. Wenn Sie die Google Cloud CLI bereits installiert haben, rufen Sie die neueste Version mitgcloud components updateab.Aktivieren Sie die Config Sync API (
anthosconfigmanagement) und dieConfigDeliveryAPI:gcloud services enable anthosconfigmanagement.googleapis.com configdelivery.googleapis.comStandardstandort festlegen:
gcloud config set config_delivery/location us-central1Standardprojekt festlegen:
gcloud config set project PROJECT_IDErsetzen Sie
PROJECT_IDdurch die Projekt-ID des Flotten-Hostprojekts.Prüfen Sie, ob Ihre Cluster in einer Flotte registriert sind.
Mit Cloud Build-Repositories können Sie eine Verbindung zu einem unterstützten Anbieter wie GitHub oder GitLab herstellen. Wenn Sie ein Flottenpaket verwenden, müssen Sie Cloud Build nur einmal pro Repository einrichten, das Sie synchronisieren möchten.
Clusteranforderungen prüfen
Bevor Sie Config Sync in Ihrem Cluster installieren, sollten Sie die Empfehlungen und Anforderungen für die Clusterkonfiguration lesen.
Umgebung vorbereiten
Um Ihre Umgebung für Config Sync-Flottenpakete vorzubereiten, weisen Sie dem Nutzer, der den Cluster registriert, die erforderlichen IAM-Rollen zu.
Config Sync installieren
Sie können Config Sync entweder mit der Google Cloud Console oder der Google Cloud CLI installieren.
Console
Alle Cluster müssen bei einer Flotte registriert sein, um Config Sync zu installieren. Wenn Sie Config Sync in der Google Cloud Konsole installieren, werden die ausgewählten Cluster automatisch in Ihrer Flotte registriert.
- Rufen Sie in der Google Cloud Console im Abschnitt Funktionen die Seite Konfiguration auf.
Klicken Sie auf add Config Sync installieren.
Wählen Sie unter Installationsoptionen die Option Config Sync in der gesamten Flotte installieren (empfohlen) aus.
Klicken Sie auf Config Sync installieren. Nach einigen Minuten sollte auf dem Tab Einstellungen in der Spalte Status für die Cluster in Ihrer Flotte Aktiviert angezeigt werden.
gcloud
Aktivieren Sie das Flottenfeature
ConfigManagement:gcloud beta container fleet config-management enableUm Config Sync zu aktivieren, erstellen Sie eine Datei mit dem Namen
apply-spec.yamlmit folgendem Inhalt:applySpecVersion: 1 spec: configSync: enabled: trueWenden Sie die Datei
apply-spec.yamlan:gcloud beta container fleet config-management apply \ --membership=MEMBERSHIP_NAME \ --config=apply-spec.yamlErsetzen Sie
MEMBERSHIP_NAMEdurch den Namen der Flottenmitgliedschaft, den Sie bei der Registrierung Ihres Clusters ausgewählt haben. Führen Sie den Befehlgcloud container fleet memberships listaus, um den Namen der Mitgliedschaft zu ermitteln.
Dienstkonto für Cloud Build erstellen
Flottenpakete verwenden Cloud Build, um die Kubernetes-Ressourcen aus Ihrem Git-Repository abzurufen und in Ihren Clustern bereitzustellen. Für Cloud Build ist ein Dienstkonto mit den Berechtigungen zum Ausführen dieses Jobs erforderlich. Führen Sie die folgenden Schritte aus, um das Dienstkonto zu erstellen und die erforderlichen Berechtigungen zu erteilen:
Erstellen Sie das Dienstkonto:
gcloud iam service-accounts create "SERVICE_ACCOUNT_NAME"Ersetzen Sie
SERVICE_ACCOUNT_NAMEdurch einen Namen für das Dienstkonto. Der Name muss eine alphanumerische ID mit einer Länge zwischen 6 und 30 Zeichen sein, z. B.my-service-account. Nachdem Sie ein Dienstkonto erstellt haben, können Sie den Namen nicht mehr ändern.Fügen Sie eine IAM-Richtlinienbindung für die Rolle „Resource Bundle Publisher“ hinzu:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role='roles/configdelivery.resourceBundlePublisher'Wenn Sie dazu aufgefordert werden, wählen Sie
Noneals Bedingung für die Richtlinie aus.Fügen Sie eine IAM-Richtlinienbindung für die Rolle Logs Writer hinzu:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role='roles/logging.logWriter'Wenn Sie dazu aufgefordert werden, wählen Sie
Noneals Bedingung für die Richtlinie aus.Fügen Sie eine IAM-Richtlinienbindung für die Rolle ArtifactRegistry Writer hinzu:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role='roles/artifactregistry.writer'Wenn Sie dazu aufgefordert werden, wählen Sie
Noneals Bedingung für die Richtlinie aus.
Flottenpaket erstellen
Zum Erstellen eines Flottenpakets definieren Sie eine FleetPackage-Spezifikation, die auf das Repository mit Ihren Kubernetes-Ressourcen verweist, die Sie mit Cloud Build verbunden haben. Anschließend wenden Sie die FleetPackage an, die die Ressourcen aus Git abruft und in der gesamten Flotte bereitstellt.
Erstellen Sie eine Datei mit dem Namen
fleetpackage-spec.yamlund dem folgendem Inhalt:resourceBundleSelector: cloudBuildRepository: name: projects/PROJECT_ID/locations/us-central1/connections/CONNECTION_NAME/repositories/REPOSITORY_NAME tag: TAG serviceAccount: projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com path: CONFIG_FILE_PATH target: fleet: project: projects/PROJECT_ID rolloutStrategy: rolling: maxConcurrent: MAX_CLUSTERS # set the state to SUSPENDED to pause new rollouts # set the state back to ACTIVE to resume rollouts # state: SUSPENDEDErsetzen Sie Folgendes:
CONNECTION_NAME: Der Name, den Sie beim Verbinden Ihres Git-Hosts mit Cloud Build ausgewählt haben. Sie können alle Cloud Build-Verbindungen in Ihrem Projekt ansehen, indem Siegcloud builds connections listausführen oder die Seite Repositories in der Google Cloud Console öffnen:REPOSITORY_NAME: der Name Ihres Repositorys. Dieser Wert muss mit dem Wert übereinstimmen, der bei der Einrichtung der Cloud Build-Verbindung eingegeben wurde.TAG: Das Git-Tag Ihres Repositorys. Das Format muss die vollständige semantische Version mit der Haupt-, Neben- und Patchnummer sein.v1.0.0ist beispielsweise ein gültiges Tag,v1oderv1.0hingegen nicht.CONFIG_FILE_PATH: Der Pfad zu Ihren Kubernetes-Ressourcen im Repository. Wenn sich Ihre Dateien im Stammverzeichnis des Repositorys befinden, können Sie dieses Feld weglassen.MAX_CLUSTERS: Die maximale Anzahl von Clustern, in denen Kubernetes-Ressourcen gleichzeitig bereitgestellt werden sollen. Wenn Sie diesen Wert beispielsweise auf1festlegen, werden Ressourcenpakete jeweils in einem Cluster bereitgestellt.Eine vollständige Liste aller Felder, die Sie konfigurieren können, finden Sie in der Referenzdokumentation zu
FleetPackage.
Erstellen Sie das Flottenpaket:
gcloud container fleet packages create FLEET_PACKAGE_NAME \ --source=fleetpackage-spec.yamlErsetzen Sie
FLEET_PACKAGE_NAMEdurch einen Namen für den Roll-out des Flottenpakets.Prüfen Sie, ob das Flottenpaket erstellt wurde:
gcloud container fleet packages listIn der Ausgabe wird der Status des Build-Triggers aufgelistet. Nach einigen Sekunden wird das Feld
MESSAGEmit einer Ausgabe wie dieser aktualisiert:MESSAGES: Build status: WORKING. The release is still being built; see the build status on the following page:Sie können auf den bereitgestellten Link klicken, um die Streaming-Logs für den Cloud Build-Job aufzurufen. Es kann einige Minuten dauern, bis Cloud Build den Build-Trigger verarbeitet.
Wenn der Build-Trigger erfolgreich ist, beginnt das Flottenpaket mit der Einführung der Kubernetes-Ressourcen in Ihrer Flotte.
Wenn der Build-Trigger erfolgreich abgeschlossen wurde, sieht die Ausgabe von
gcloud container fleet packages listin etwa so aus:NAME STATE CREATE_TIME ACTIVE_ROLLOUT LAST_COMPLETED_ROLLOUT MESSAGES my-fleet-package ACTIVE 2024-07-09T15:15:56 rollout-20240709-153621Mit dem Flottenpaket werden die Kubernetes-Ressourcen in Ihrer gesamten Flotte eingeführt.
Nachdem Sie ein Flottenpaket bereitgestellt haben, werden die im Flottenpaket definierten Kubernetes-Ressourcen automatisch im neuen Cluster bereitgestellt, wenn Sie Ihrer Flotte einen neuen Cluster hinzufügen.
Flottenpaket aktualisieren
Sie können ein Flottenpaket aktualisieren, um Einstellungen oder die Ressourcen zu ändern, die durch das Flottenpaket bereitgestellt werden. Hier einige Beispiele:
- Ändern Sie die Einführungsstrategie, indem Sie den Wert des Felds
maxConcurrentändern. - Sie können ein Flottenpaket vorübergehend pausieren, indem Sie
state: SUSPENDEDfestlegen. Wenn ein Flottenpaket gesperrt wird, werden alle laufenden Rollouts fortgesetzt. Es werden keine neuen Roll-outs erstellt oder geplant, bis Sie den Status wieder inACTIVEändern. - Aktualisieren Sie die Kubernetes-Ressourcen, die vom Flottenpaket bereitgestellt werden, indem Sie das Feld
tagaktualisieren, um einen anderen Git-Tag abzurufen.
So aktualisieren Sie ein Flottenpaket:
Aktualisieren Sie die
FleetPackage-Spezifikation mit Ihren Änderungen.Aktualisieren Sie das Flottenpaket:
gcloud container fleet packages update FLEET_PACKAGE_NAME \ --source=fleetpackage-spec.yamlEs kann einige Minuten dauern, bis die Änderung übernommen wird und das Roll-out für Ihre Cluster beginnt.
Roll‑outs von Flottenpaketen verwalten
Sie können den Fortschritt der Bereitstellung von Flottenpaketen überwachen und aktive Rollouts verwalten. Wenn ein Flottenpaket geändert wird, wird automatisch ein neuer Roll-out erstellt. Mit den folgenden Befehlen können Sie detaillierte Informationen zu Rollouts abrufen. Wenn Sie beispielsweise ein Bereitstellungsproblem debuggen müssen, können Sie die Rollout-Details prüfen und einen Rollout bei Bedarf pausieren oder abbrechen.
Wenn Sie eine Einführung auflisten, sehen Sie den Status aller Einführungen, die mit einem Paket verknüpft sind, einschließlich Fehler, die dazu führen können, dass eine Einführung fehlschlägt. Führen Sie den folgenden Befehl aus, um Rollouts aufzulisten und ihren Status aufzurufen:
gcloud container fleet packages rollouts list --fleet-package FLEET_PACKAGE_NAMEDie Ausgabe sollte so aussehen:
ROLLOUT RELEASE START_TIME END_TIME STATE MESSAGE rollout-20250515-132857 v2-0-0 2025-05-15T13:28:58Z STALLED rollout-20250418-165528 v1-0-0 2025-04-18T16:55:29Z 2025-04-18T16:57:47Z COMPLETEDWenn Sie einen Roll-out beschreiben, erhalten Sie detaillierte Informationen zu einem bestimmten Roll-out, einschließlich des Status für jeden Zielcluster und aller clusterspezifischen Fehler. Führen Sie den folgenden Befehl aus, um ein Rollout zu beschreiben:
gcloud container fleet packages rollouts describe ROLLOUT_NAME --fleet-package FLEET_PACKAGE_NAMEErsetzen Sie ROLLOUT_NAME durch den Namen des Rollouts. Sie können den vollständigen Namen des Roll-outs mit dem Befehl
listim vorherigen Schritt abrufen.Die Ausgabe sollte so aussehen:
CLUSTER CURRENT_VERSION SYNC_STATE DESIRED_VERSION START_TIME END_TIME STATE MESSAGES cluster1 v2.0.0 SYNCED v2.0.0 2025-05-15T13:28:58Z 2025-05-15T13:30:27Z COMPLETED cluster2 v1.0.0 SYNCED v2.0.0 2025-05-15T13:30:27Z ERROR Membership no longer existsSie können aktive Rollouts mit den folgenden Befehlen verwalten:
Wenn Sie die Einführung anhalten, wird sie in den Status
SUSPENDEDversetzt. Laufende Paketupdates werden fortgesetzt und es werden keine weiteren Paketupdates geplant. Führen Sie den folgenden Befehl aus, um ein Rollout zu pausieren:gcloud container fleet packages rollouts suspend ROLLOUT_NAME --fleet-package FLEET_PACKAGE_NAMEWenn Sie die Einführung fortsetzen, wird der Status der Einführung von
SUSPENDEDwieder inIN_PROGRESSgeändert. Paketupdates werden wie geplant auf Zielclustern bereitgestellt. Führen Sie den folgenden Befehl aus, um ein Rollout fortzusetzen:gcloud container fleet packages rollouts resume ROLLOUT_NAME --fleet-package FLEET_PACKAGE_NAMEWenn Sie ein laufendes Roll-out abbrechen, wird es sofort beendet und in den Status
ABORTEDversetzt. Alle anstehenden Paketaktualisierungen, die im Rahmen des Roll-outs geplant sind, werden abgebrochen. Führen Sie den folgenden Befehl aus, um ein Rollout abzubrechen:gcloud container fleet packages rollouts abort ROLLOUT_NAME --fleet-package FLEET_PACKAGE_NAME
Labels verwenden, um in verschiedenen Clustern bereitzustellen
Labels sind Schlüssel/Wert-Paare, die Sie an Objekte anhängen. Flottenpakete unterstützen nur Labels für Flottenmitgliedschaften. GKE-Clusterlabels werden nicht unterstützt.
Sie können Labels verwenden, um ein Flottenpaket in einer Teilmenge von Clustern in Ihrer Flotte bereitzustellen.
Mitgliedschaftslabels hinzufügen
So fügst du ein Mitgliedschaftslabel hinzu:
Liste der Mitgliedschaften in der Flotte abrufen:
gcloud container fleet memberships listFügen Sie der Mitgliedschaft ein Label hinzu:
gcloud container fleet memberships update MEMBERSHIP_NAME \ --update-labels=KEY=VALUEErsetzen Sie Folgendes:
MEMBERSHIP_NAME: der Name des Clusters, der für die Flotte registriert ist.KEYundVALUE: Das Label, das der Mitgliedschaft hinzugefügt werden soll. Wenn ein Label vorhanden ist, wird sein Wert geändert. Andernfalls wird ein neues Label erstellt. Schlüssel müssen mit einem Kleinbuchstaben beginnen und dürfen nur Bindestriche (-), Unterstriche (_), Kleinbuchstaben und Ziffern enthalten. Werte dürfen nur Bindestriche (-), Unterstriche (_), Kleinbuchstaben und Zahlen enthalten.
Wiederholen Sie diesen Befehl für jede Mitgliedschaft, der Sie ein Label hinzufügen möchten.
Auf einer Teilmenge von Clustern bereitstellen
Sie können die Bereitstellung auf eine Teilmenge von Clustern beschränken, indem Sie das Feld target.fleet.selector.matchLabels mit Ihrem Schlüssel/Wert-Paar angeben. Wenn Sie beispielsweise matchLabels als country: "us" festlegen, werden Ihre Ressourcen vom Flottenpaketdienst nur in Clustern mit dem Label country bereitgestellt, das mit "us" übereinstimmt.
Führen Sie die folgenden Schritte aus, um ein Flottenpaket auf einer Teilmenge von Clustern bereitzustellen:
Erstellen oder aktualisieren Sie Ihre
FleetPackage-Spezifikation mit dem Label-Selektor:resourceBundleSelector: cloudBuildRepository: name: projects/PROJECT_ID/locations/us-central1/connections/CONNECTION_NAME/repositories/REPOSITORY_NAME tag: TAG serviceAccount: projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com path: CONFIG_FILE_PATH target: fleet: project: projects/PROJECT_ID selector: matchLabels: KEY: "VALUE" rolloutStrategy: rolling: maxConcurrent: MAX_CLUSTERSErstellen oder aktualisieren Sie das Flottenpaket:
Flottenpaket erstellen
gcloud container fleet packages create FLEET_PACKAGE_NAME \ --source=fleetpackage-spec.yamlFlottenpaket aktualisieren
gcloud container fleet packages update FLEET_PACKAGE_NAME \ --source=fleetpackage-spec.yaml
Variantenressourcen in Clustern bereitstellen
Varianten sind verschiedene Versionen einer Ressource. Diese Ressourcen können je nach Standort, Projekt oder Name des Clusters unterschiedliche Werte haben. Sie können Variant-Ressourcen in verschiedenen Clustern bereitstellen, indem Sie die Felder variantsPattern und variantNameTemplate angeben.
Sie können Mitgliedschafts-Labels oder andere Mitgliedschafts-Metadaten wie Standort, Projekt oder Name verwenden, um Varianten abzugleichen.
So stellen Sie ein Flottenpaket mit Varianten bereit:
Erstellen oder aktualisieren Sie die
FleetPackage-Spezifikation mit den Variantendetails:resourceBundleSelector: cloudBuildRepository: name: projects/PROJECT_ID/locations/us-central1/connections/CONNECTION_NAME/repositories/REPOSITORY_NAME tag: TAG serviceAccount: projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com path: CONFIG_FILE_PATH variantsPattern: VARIANT_PATTERN target: fleet: project: projects/PROJECT_ID rolloutStrategy: rolling: maxConcurrent: MAX_CLUSTERS target: fleet: project: projects/PROJECT_ID variantSelector: variantNameTemplate: VARIANT_NAME_TEMPLATEErsetzen Sie Folgendes:
VARIANT_PATTERN: Das Muster für die Variante, z. B."variants/*.yaml"oder"us-*".VARIANT_NAME_TEMPLATE: Ein Vorlagen-String, der auf Variablen verweist, die Metadaten zur Clustermitgliedschaft enthalten, wie z. B. Standort, Projekt, Name oder Label, um den Namen der Variante für einen Zielcluster zu bestimmen. Weitere Beispiele finden Sie in der Referenzdokumentation zuFleetPackage.
Erstellen oder aktualisieren Sie das Flottenpaket:
Flottenpaket erstellen
gcloud container fleet packages create FLEET_PACKAGE_NAME \ --source=fleetpackage-spec.yamlFlottenpaket aktualisieren
gcloud container fleet packages update FLEET_PACKAGE_NAME \ --source=fleetpackage-spec.yaml
Flottenpaket löschen
Wenn Sie ein Flottenpaket löschen, werden auch die folgenden Ressourcen gelöscht:
- Die in Ihren Clustern bereitgestellten Kubernetes-Ressourcen
- Der Roll‑out-Verlauf des Flottenpakets
Führen Sie den folgenden Befehl aus, um ein Flottenpaket zu löschen:
gcloud container fleet packages delete FLEET_PACKAGE_NAME --force
Fehlerbehebung
Methoden zur Diagnose und Behebung von Fehlern im Zusammenhang mit Cloud Build finden Sie unter Build-Fehler beheben.