Auf dieser Seite wird erläutert, wie Sie mit Config Sync-Flottenpaketen Kubernetes Ressourcen in Clustern bereitstellen, die in einer Flotte registriert sind. Wenn Sie nach dem Erstellen und Bereitstellen eines Flottenpakets einen neuen Cluster zu Ihrer Flotte hinzufügen, werden die Kubernetes-Konfigurationsdateien im Git-Repository automatisch im neuen Cluster bereitgestellt.
Ein FleetPackage ist eine deklarative API zum Bereitstellen von Kubernetes-Rohmanifesten in einer
Flotte von Clustern. Alle Kubernetes-Ressourcen, die Sie mit einem Flottenpaket bereitstellen möchten, müssen
bereits hydriert sein (WET).
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
gcloud, undnomosenthält. Wenn Sie Cloud Shellverwenden, ist das Google Cloud CLI vorinstalliert. Wenn Sie das Google Cloud CLI bereits installiert haben, rufen Sie die neueste Version mitgcloud components updateab.Aktivieren Sie die Config Sync (
anthosconfigmanagement) API und dieConfigDeliveryAPI:gcloud services enable anthosconfigmanagement.googleapis.com configdelivery.googleapis.comLegen Sie einen Standardspeicherort fest:
gcloud config set config_delivery/location us-central1Legen Sie ein Standardprojekt fest:
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.
Verwenden Sie Cloud Build-Repositories, um eine Verbindung zu einem unterstützten Anbieter wie GitHub oder GitLab herzustellen. 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, lesen Sie die Empfehlungen und Anforderungen für die Clusterkonfiguration.
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 dem Google Cloud CLI installieren.
Console
Um Config Sync zu installieren, müssen alle Cluster in einer Flotte registriert sein. Wenn Sie Config Sync in der Google Cloud console installieren und einzelne Cluster auswählen, werden diese Cluster automatisch in Ihrer Flotte registriert.
- Rufen Sie in der Google Cloud console im Abschnitt Features 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
ConfigManagementFlotten-Feature:gcloud beta container fleet config-management enableErstellen Sie eine Datei mit dem Namen
apply-spec.yamlmit folgendem Inhalt, um Config Sync zu aktivieren:applySpecVersion: 1 spec: configSync: enabled: trueWenden Sie die
apply-spec.yamlDatei an: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 finden.
Dienstkonto für Cloud Build erstellen
Flottenpakete verwenden Cloud Build, um die Kubernetes-Ressourcen aus Ihrem Git-Repository abzurufen und bereitzustellen in Ihren Clustern. Cloud Build erfordert ein Dienstkonto mit den Berechtigungen zum Ausführen dieses Jobs. 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 Dienst konto. Der Name muss eine alphanumerische ID mit 6 bis 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'Wählen Sie bei Aufforderung
Noneals Bedingung für die Richtlinie aus.Fügen Sie eine IAM-Richtlinienbindung für die Logs Writer Rolle hinzu:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role='roles/logging.logWriter'Wählen Sie bei Aufforderung
Noneals Bedingung für die Richtlinie aus.Fügen Sie eine IAM-Richtlinienbindung für die Rolle „Artifact Registry Writer“ hinzu:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role='roles/artifactregistry.writer'Wählen Sie bei Aufforderung
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 das FleetPackage an, das die
Ressourcen aus Git abruft und in der gesamten Flotte bereitstellt.
Erstellen Sie eine Datei mit dem Namen
fleetpackage-spec.yamlmit 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 # Match all files and directories to generate variants variantsPattern: "*" target: fleet: project: projects/PROJECT_ID rolloutStrategy: rolling: maxConcurrent: MAX_CLUSTERS variantSelector: variantNameTemplate: "VARIANT_NAME" # 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 mit dem Befehlgcloud builds connections listoder auf der Seite Repositories in der Google Cloud console aufrufen:REPOSITORY_NAME: der Name Ihres Repositorys. Dieser muss mit dem Wert übereinstimmen, der beim Einrichten Ihrer 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, währendv1oderv1.0ungültige Tags sind.CONFIG_FILE_PATH: der Pfad zu Ihren Kubernetes-Ressourcen in dem 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 auf1setzen, werden Ressourcen pakete jeweils in einem Cluster bereitgestellt.VARIANT_NAME: die Variante, die in Ihren Clustern bereitgestellt werden soll. Der Name muss mit einer Variante in Ihrem Repository übereinstimmen (der Dateiname ohne Erweiterung oder der Verzeichnisname). Wenn Sie beispielsweise eine Datei mit dem Namenprod.yaml, setzen Sie dieses Feld aufprod. Wenn Sie das Standardverhalten verwenden möchten (z. B. dieselbe Konfiguration in allen Clustern einer Flotte bereitstellen), setzen Sie dieses Feld aufdefaultund prüfen Sie, ob Ihr Repository eine Datei mit dem Namendefault.yamlenthält.Eine vollständige Liste aller konfigurierbaren Felder finden Sie in der
FleetPackageReferenzdokumentation.
Erstellen Sie das Flottenpaket:
gcloud container fleet packages create FLEET_PACKAGE_NAME \ --source=fleetpackage-spec.yamlErsetzen Sie
FLEET_PACKAGE_NAMEdurch einen Namen für das Roll‑out Ihres Flotten pakets.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, werden die Kubernetes-Ressourcen mit dem Flottenpaket in Ihrer gesamten Flotte eingeführt.
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.
Wenn Sie jetzt einen neuen Cluster zu Ihrer Flotte hinzufügen, werden die im Flottenpaket definierten Kubernetes-Ressourcen automatisch im neuen Cluster bereitgestellt.
Flottenpaket aktualisieren
Sie können ein Flottenpaket aktualisieren, um Einstellungen zu ändern oder die Ressourcen zu ändern, die mit dem Flottenpaket bereitgestellt werden. Hier einige Beispiele:
- Ändern Sie die Roll‑out-Strategie, indem Sie den Wert des
maxConcurrentFelds ändern. - Pausieren Sie ein Flottenpaket vorübergehend, indem Sie
state: SUSPENDEDfestlegen. Wenn ein Flottenpaket pausiert ist, werden alle laufenden Roll‑outs fortgesetzt. Es werden keine neuen Roll‑outs erstellt oder geplant, bis Sie den Status wieder inACTIVEändern. - Aktualisieren Sie die Kubernetes-Ressourcen, die mit dem Flottenpaket bereitgestellt werden, indem Sie
das
tagFeld aktualisieren, um ein anderes Git-Tag abzurufen.
Führen Sie die folgenden Schritte aus, um ein Flottenpaket zu aktualisieren:
Aktualisieren Sie Ihre
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 und in Ihren Clustern eingeführt wird.
Ressourcenpakete und Releases prüfen
Wenn Sie ein Flottenpaket basierend auf Ihrem Git-Repository erstellen oder aktualisieren, werden mit der
FleetPackages API automatisch Ressourcenpakete und Release
Ressourcen erstellt. Das Prüfen dieser Ressourcen ist hilfreich bei der Fehlerbehebung, insbesondere
wenn Sie Varianten überprüfen müssen, die aus Ihrem Repository generiert wurden.
Verwenden Sie einen oder mehrere der folgenden Befehle, um Ressourcenpakete und Releases zu prüfen:
Detaillierte Informationen zu einem bestimmten Ressourcenpaket aufrufen:
gcloud container fleet packages resource-bundles describe flpkg-rb-FLEET_PACKAGE_NAMEAlle Releases auflisten, die mit einem Ressourcenpaket verknüpft sind:
gcloud container fleet packages resource-bundles releases list \ --resource-bundle flpkg-rb-FLEET_PACKAGE_NAMEDetaillierte Informationen zu einem bestimmten Release aufrufen, einschließlich des verwendeten Ressourcen pakets. Dieser Befehl ist besonders nützlich, um Probleme mit Varianten zu beheben, da Sie genau prüfen können, welche Varianten in einem bestimmten Release enthalten waren:
gcloud container fleet packages resource-bundles releases describe RELEASE_NAME\ --resource-bundle flpkg-rb-FLEET_PACKAGE_NAME
Ersetzen Sie Folgendes:
FLEET_PACKAGE_NAME: der Name Ihres Flottenpakets. Dem Namen des Ressourcenpakets wird automatisch das Präfixflpkg-rb-vorangestellt.RELEASE_NAME: der Name des Releases aus der Ausgabe des Befehlslist.
Roll‑outs von Flottenpaketen verwalten
Sie können den Fortschritt von Bereitstellungen von Flottenpaketen verfolgen und aktive Roll‑outs verwalten. Wenn ein Flottenpaket geändert wird, wird automatisch ein neues Roll‑out automatisch erstellt. Mit den folgenden Befehlen erhalten Sie detaillierte Informationen zu Roll‑outs. Wenn Sie beispielsweise ein Bereitstellungsproblem beheben müssen, können Sie die Roll‑out-Details prüfen und ein Roll‑out bei Bedarf pausieren oder abbrechen.
Wenn Sie ein Roll‑out auflisten, sehen Sie den Status aller Roll‑outs, die mit einem Paket verknüpft sind, einschließlich Fehlern, die dazu führen können, dass ein Roll‑out fehlschlägt. Führen Sie den folgenden Befehl aus, um Roll‑outs 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 ein 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 Roll‑out zu beschreiben:
gcloud container fleet packages rollouts describe ROLLOUT_NAME --fleet-package FLEET_PACKAGE_NAMEErsetzen Sie ROLLOUT_NAME durch den Namen Ihres Roll‑outs. Sie können den vollständigen Roll‑out-Namen im vorherigen Schritt mit dem Befehl
listabrufen.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 existsMit den folgenden Befehlen können Sie aktive Roll‑outs verwalten:
Wenn Sie ein Roll‑out pausieren, wird es in den Status
SUSPENDEDversetzt. Alle laufenden Paketaktualisierungen werden fortgesetzt und es werden keine weiteren Paketaktualisierungen geplant. Führen Sie den folgenden Befehl aus, um ein Roll‑out zu pausieren:gcloud container fleet packages rollouts suspend ROLLOUT_NAME --fleet-package FLEET_PACKAGE_NAMEWenn Sie ein Roll‑out fortsetzen, wird es von
SUSPENDEDwieder in denIN_PROGRESSStatus versetzt. Paketaktualisierungen werden wie geplant in Zielclustern bereitgestellt. Führen Sie den folgenden Befehl aus, um ein Roll‑out 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 Roll‑out abzubrechen:gcloud container fleet packages rollouts abort ROLLOUT_NAME --fleet-package FLEET_PACKAGE_NAME
Bereitstellungsstrategien
Sie können Ressourcen auf verschiedene Arten bereitstellen, entweder in einer Teilmenge von Clustern, indem Sie Labels angeben, oder mithilfe von Musterabgleich für Varianten, um verschiedene Ressourcen bereitzustellen. Sie können beide Strategien kombinieren, um besser zu steuern, welche Ressourcen in verschiedenen Clustern bereitgestellt werden.
In einer Teilmenge von Clustern bereitstellen
Sie können dieselbe Ressource in einer Teilmenge von Clustern bereitstellen, indem Sie Labels verwenden und
das Feld target.fleet.selector.matchLabels mit Ihren Labels
(Schlüssel-Wert-Paar) angeben. Wenn Sie beispielsweise matchLabels als country: "us" festlegen, werden Ihre Ressourcen mit dem
Flottenpaketdienst nur in Clustern mit dem Label
country bereitgestellt, das mit "us" übereinstimmt.
Flottenpakete unterstützen nur Labels für Flottenmitgliedschaften. GKE-Cluster labels werden nicht unterstützt.
(Optional) Wenn Sie noch keine Labels haben, die Sie verwenden möchten, fügen Sie sie mit den folgenden Schritten hinzu:
Liste der Mitgliedschaften in der Flotte abrufen:
gcloud container fleet memberships listLabel zur Mitgliedschaft hinzufügen:
gcloud container fleet memberships update MEMBERSHIP_NAME \ --update-labels=KEY=VALUEErsetzen Sie Folgendes:
MEMBERSHIP_NAME: der Name des Clusters, der in der 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 Ziffern enthalten.
Wiederholen Sie diesen Befehl für jede Mitgliedschaft, der Sie ein Label hinzufügen möchten.
Erstellen oder aktualisieren Sie Ihre
FleetPackage-Spezifikation mit dem Labelselektor: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
Sie können eindeutige Konfigurationen in verschiedenen Clustern bereitstellen (z. B. dev im Vergleich zu
prod), indem Sie Ihrem Flottenpaket Variantendefinitionen hinzufügen.
Eine konzeptionelle Übersicht darüber, wie Varianten aus Ihrer Repository struktur generiert werden, finden Sie unter So werden Varianten generiert.
Führen Sie die folgenden Schritte aus, um ein Flottenpaket mit Varianten bereitzustellen:
Erstellen oder aktualisieren Sie Ihre
FleetPackage-Spezifikation, um die FeldervariantsPatternundvariantNameTemplateeinzufügen: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: ein Glob-Muster zum Generieren von Varianten aus Ihrem Repository, z. B.*(entspricht allen Dateien und Verzeichnissen) oder*.yaml(entspricht nur Dateien). Weitere Informationen zu den unterstützten Mustern finden Sie untervariantsPatternAbgleich.VARIANT_NAME_TEMPLATE: ein String oder eine Vorlage zum Auswählen einer Variante für jeden Cluster. Sie können Metadatavariablen wie${membership.labels['env']}oder${membership.location}verwenden.
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.
Nächste Schritte
- Referenzseite für
FleetPackageFelder