Ressourcen in einer Flotte bereitstellen
In dieser Anleitung erfahren Sie, wie Sie mit einem Flottenpaket Kubernetes-Ressourcenmanifeste in einer Flotte von Clustern bereitstellen. Mit GitOps-Tools wie den Flottenpaketen von Config Sync können Sie die Konfigurationsverwaltung auf eine große Anzahl von Clustern skalieren.
In dieser Anleitung führen Sie die folgenden Aufgaben aus:
- Git-Repository mit Cloud Build verbinden
- Cluster erstellen und bei einer Flotte registrieren
- Config Sync als Standard für die gesamte Flotte installieren
- Ressourcen aus Ihrem Repository in Ihrer Clusterflotte bereitstellen
Hinweise
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
- Install the Google Cloud CLI.
-
To use a federated identity with the gcloud CLI, you must first configure the tool to use a federated identity.
For more information, see Browser-based sign-in with the gcloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the GKE Enterprise, Config Delivery (fleet packages), Cloud Build, Developer Connect APIs:
gcloud services enable anthos.googleapis.com
configdelivery.googleapis.com cloudbuild.googleapis.com developerconnect.googleapis.com - Install the Google Cloud CLI.
-
To use a federated identity with the gcloud CLI, you must first configure the tool to use a federated identity.
For more information, see Browser-based sign-in with the gcloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the GKE Enterprise, Config Delivery (fleet packages), Cloud Build, Developer Connect APIs:
gcloud services enable anthos.googleapis.com
configdelivery.googleapis.com cloudbuild.googleapis.com developerconnect.googleapis.com - Ein GitHub-Konto erstellen oder Zugriff darauf haben.
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Verbindung zu Git herstellen
Ihr Git-Repository enthält die Ressourcen, die Sie in einer Flotte bereitstellen möchten. Wenn Sie diese Ressourcen mit einem Flottenpaket bereitstellen möchten, müssen Sie Ihr Git-Repository mit Cloud Build verbinden.
Git-Repository erstellen
In dieser Anleitung wird GitHub als Git-Anbieter verwendet. So erstellen Sie ein neues GitHub-Repository:
Öffnen Sie in Ihrem Webbrowser GitHub.
Melden Sie sich gegebenenfalls in Ihrem GitHub-Konto an. Wenn Sie Zugriff auf andere Organisationen oder Teams auf GitHub haben, achten Sie darauf, das Repository in Ihrem privaten Konto zu erstellen.
Wählen Sie in der Symbolleiste Hinzufügen add und dann Neues Repository aus.
Geben Sie
fleet-package-tutorial
als Namen des Repositorys ein.Lassen Sie die Sichtbarkeit des Repositories auf Öffentlich eingestellt.
Wählen Sie Repository erstellen aus.
Repository mit Cloud Build verbinden
Der Flottenpaketdienst von Config Sync verwendet Cloud Build, um die Kubernetes-Ressourcen aus Ihrem Git-Repository zu synchronisieren und abzurufen.
So verbinden Sie Ihr GitHub-Repository mit Cloud Build:
Öffnen Sie in der Google Cloud Console die Seite „Cloud Build“ und wählen Sie Repositories aus.
Achten Sie darauf, dass Sie sich auf der Seite Repositories der 2. Generation befinden. Wählen Sie bei Bedarf Repositories ansehen (2. Generation) aus.
Klicken Sie auf Hostverbindung erstellen.
Wählen Sie im Menü Region die Option us-central1 (Iowa) aus.
Geben Sie im Feld Name
fleet-package-quickstart-connection
als Namen für die Verbindung ein.Klicken Sie auf Verbinden.
Wenn Sie Cloud Build zum ersten Mal mit Ihrem GitHub-Konto verbinden, führen Sie die folgenden Schritte aus:
- Akzeptieren Sie die Anfrage für Ihr GitHub-OAuth-Token. Das Token wird in Secret Manager zur Verwendung mit der Cloud Build-GitHub-Verbindung gespeichert. Klicken Sie auf Weiter.
- Installieren Sie Cloud Build in Ihrem GitHub-Repository. Wählen Sie In neuem Konto installieren aus.
- Wählen Sie im neuen GitHub-Fenster das GitHub-Konto aus, in dem Sie zuvor die Fork von Cymbal Bank erstellt haben. In einer Produktionsumgebung können Sie andere Konten oder Repositories auswählen, für die Sie den Zugriff delegiert haben.
- Folgen Sie den Authentifizierungsaufforderungen, um Ihre Identität in GitHub zu bestätigen.
- Wählen Sie im GitHub-Fenster für den Zugriff auf das Cloud Build-Repository die Option Nur Repositories auswählen aus.
- Wählen Sie im Drop-down-Menü mit den Repositorys Ihr
fleet-package-tutorial
-Repository aus. - Klicken Sie auf Speichern.
Klicken Sie auf der Cloud Build-Seite in der Google Cloud -Console auf Repository verknüpfen, um ein neues Git-Repository mit Cloud Build zu verbinden.
Wählen Sie im Menü Verbindung die Option
fleet-package-quickstart-connection
aus.Wählen Sie im Menü Repositories das Repository
fleet-package-tutorial
aus.Klicken Sie auf Verknüpfen.
Flotte einrichten
In diesem Abschnitt richten Sie Ihre Flotte ein, indem Sie Cluster erstellen, bei einer Flotte registrieren und Config Sync als Flottenpaket installieren.
Cluster erstellen
In dieser Anleitung wird gezeigt, wie Sie zwei Cluster erstellen, um zu demonstrieren, wie Sie mithilfe von Flottenpaketen Ressourcen in mehreren Clustern bereitstellen können.
So erstellen Sie die beiden Cluster und registrieren sie in der Flotte Ihres Projekts:
Erstellen Sie einen GKE-Cluster.
gcloud container clusters create-auto cluster1 \ --project=PROJECT_ID \ --region=REGION \ --fleet-project=PROJECT_ID \ --release-channel=rapid
Ersetzen Sie Folgendes:
PROJECT_ID
durch Ihre Projekt-ID,REGION
durch die Region, in der Sie den Cluster erstellen möchten, z. B.us-central1
.
Erstellen Sie einen zweiten GKE-Cluster:
gcloud container clusters create-auto cluster2 \ --project=PROJECT_ID \ --region=REGION \ --fleet-project=PROJECT_ID \ --release-channel=rapid
Config Sync als Standard für die gesamte Flotte installieren
Wenn Sie den Flottenpaketdienst verwenden möchten, muss Config Sync in beiden Clustern installiert sein. Sie können Config Sync auf mehreren Clustern gleichzeitig und auf allen zukünftigen Clustern installieren, die bei der Flotte registriert werden. Führen Sie dazu die folgenden Schritte aus:
Rufen Sie in der Google Cloud Console die Seite Feature Manager auf.
Klicken Sie im Bereich Config Sync auf Konfigurieren.
Klicken Sie auf Flotteneinstellungen anpassen. Wählen Sie im angezeigten Dialogfeld die Option Automatische Upgrades aus. Mit dieser Einstellung wird sichergestellt, dass Ihre Cluster eine Config Sync-Version haben, die Flottenpakete unterstützt.
Klicken Sie auf Änderungen speichern.
Klicken Sie auf Konfigurieren.
Klicken Sie im Bestätigungsdialogfeld Flotteneinstellungen konfigurieren auf Bestätigen. Wenn Sie Config Sync noch nicht aktiviert haben, wird durch Klicken auf Bestätigen auch die
anthosconfigmanagement.googleapis.com
API aktiviert.Wählen Sie in der Tabelle Cluster in der Flotte beide Cluster aus und klicken Sie dann auf Mit Flotteneinstellungen synchronisieren. Dadurch wird Config Sync mit den von Ihnen konfigurierten Einstellungen in beiden Clustern installiert.
Es kann einige Minuten dauern, bis die Cluster synchronisiert sind. Sie können mit den nächsten Schritten fortfahren, wenn Config Sync als Installiert angezeigt wird.
Dienstkonto für Cloud Build einrichten
Führen Sie die folgenden Schritte aus, um das Dienstkonto zu erstellen und Cloud Build die erforderlichen Berechtigungen zu erteilen:
Erstellen Sie das Dienstkonto:
gcloud iam service-accounts create "quickstart-service-account"
Gewähren Sie dem Dienstkonto die Berechtigung, Ressourcen aus Ihrem Git-Repository abzurufen. Fügen Sie dazu eine IAM-Richtlinienbindung für die Rolle „Resource Bundle Publisher“ hinzu:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:quickstart-service-account@PROJECT_ID.iam.gserviceaccount.com" \ --role='roles/configdelivery.resourceBundlePublisher'
Wählen Sie bei Aufforderung
None
als Bedingung für die Richtlinie aus.Gewähren Sie dem Dienstkonto die Berechtigung zum Schreiben von Protokollen, indem Sie eine IAM-Richtlinienbindung für die Rolle Logs Writer hinzufügen:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:quickstart-service-account@PROJECT_ID.iam.gserviceaccount.com" \ --role='roles/logging.logWriter'
Wählen Sie bei Aufforderung
None
als Bedingung für die Richtlinie aus.
Ressourcen in Ihrer Flotte bereitstellen
In dieser Anleitung fügen Sie Ihrem Git-Repository ein Kubernetes-Manifest mit einer nginx-Bereitstellung hinzu, veröffentlichen eine Version und erstellen dann ein Flottenpaket, um die nginx-Anwendung bereitzustellen.
Kubernetes-Manifest in Ihr Repository committen
So fügen Sie Ihre Ressourcen zu GitHub hinzu und veröffentlichen eine Version:
Klicken Sie in einem Browserfenster Ihres GitHub-Repositories auf Datei hinzufügen und dann auf Neue Datei erstellen.
Benennen Sie die Datei in
deployment.yaml
um und fügen Sie den folgenden Inhalt ein:apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - image: nginx:1.14.2 name: nginx ports: - containerPort: 80
Klicken Sie auf Änderungen übernehmen....
Lassen Sie im Bestätigungsdialogfeld die Option Commit direkt in den
main
-Zweig durchführen ausgewählt und klicken Sie dann auf Änderungen übernehmen.Wählen Sie auf der Hauptseite Ihres Repositories in der Seitenleiste Releases aus.
Wählen Sie oben auf der Seite Neuen Release entwerfen aus.
Wählen Sie das Menü Tag auswählen aus und geben Sie
v1.0.0
als Tag ein. Klicken Sie auf Neues Tag erstellen.Klicken Sie auf Release veröffentlichen.
Ressourcen mit einem Flottenpaket in Clustern bereitstellen
Erstellen Sie ein neues Flottenpaket, um die neue Ressource bereitzustellen:
Dieses Flottenpaket richtet sich an alle Cluster in Ihrer Flotte, da es kein Auswahlfeld enthält. Das bedeutet auch, dass der nginx-Deployment automatisch allen zukünftigen Clustern hinzugefügt wird, die der Flotte hinzugefügt werden.
Erstellen Sie in Cloud Shell eine Datei namens
fleet-package.yaml
mit folgendem Inhalt:resourceBundleSelector: cloudBuildRepository: name: projects/PROJECT_ID/locations/us-central1/connections/fleet-package-quickstart-connection/repositories/REPOSITORY_NAME tag: v1.0.0 serviceAccount: projects/PROJECT_ID/serviceAccounts/quickstart-service-account@PROJECT_ID.iam.gserviceaccount.com path: target: fleet: project: projects/PROJECT_ID rolloutStrategy: rolling: maxConcurrent: 1
Ersetzen Sie
REPOSITORY_NAME
durch den Namen des Repositorys aus Cloud Build. Dieser hat normalerweise das FormatUSERNAME-REPOSITORY_NAME
.Erstellen Sie das Flottenpaket, um mit dem Roll-out zu beginnen:
gcloud alpha container fleet packages create fp-nginx.yaml \ --source=fleet-package.yaml \ --project=PROJECT_ID
Prüfen Sie, ob das Flottenpaket erstellt wurde:
gcloud alpha container fleet packages list
Sie können auf den bereitgestellten Link klicken, um die Streaming-Logs für den Cloud Build-Job aufzurufen.
Das Fleet-Paket beginnt mit der Einführung der Kubernetes-Ressourcen in Ihrer Flotte.
Rufen Sie auf der Seite „Google Kubernetes Engine“ der Google Cloud Console die Seite Arbeitslasten auf, um eine aggregierte Ansicht der Arbeitslasten anzuzeigen, die in allen Ihren GKE-Clustern bereitgestellt werden:
Es kann einige Minuten dauern, bis die Arbeitslasten verfügbar sind. Möglicherweise treten auch Verfügbarkeitsfehler auf, während Autopilot Ihre Ressourcenanfragen für die neue Bereitstellung anpasst.
Da
maxConcurrent:
in Ihrer Flottenpaketdefinition auf1
festgelegt ist, wartet die Fleet Package API, bis dienginx-deployment
vollständig in einem Cluster bereitgestellt wurde, bevor die Bereitstellung im zweiten Cluster gestartet wird. Wenn Sie die Einführungsstrategie aufmaxConcurrent: 2
oder höher ändern, werden die Ressourcen gleichzeitig in beiden Clustern bereitgestellt.Nach einigen Minuten sehen Sie in beiden Clustern zwei neue Arbeitslasten für die
nginx-deployment
. Möglicherweise müssen Sie die Seite aktualisieren.
Sie können verschiedene Bereitstellungsstrategien mit Flottenpaketen weiter untersuchen. Sie können Ihrer Flotte beispielsweise einen neuen Cluster hinzufügen, um zu sehen, ob Ihre Arbeitslast automatisch in diesem neuen Cluster bereitgestellt wird. Weitere Informationen zu Bereitstellungsstrategien und ‑varianten finden Sie unter Flottenpakete bereitstellen.
Bereinigen
Löschen Sie das Google Cloud -Projekt mit den Ressourcen, damit Ihrem Google Cloud -Konto die auf dieser Seite verwendeten Ressourcen nicht in Rechnung gestellt werden.
Löschen Sie das erstellte Projekt, um zu vermeiden, dass Ihrem Google Cloud -Konto die in dieser Anleitung verwendeten Ressourcen in Rechnung gestellt werden.
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
So löschen Sie Ihr Repository:
Klicken Sie in einem Webbrowser Ihrer GitHub-Fork von Cymbal Bank unter Ihrem Repository-Namen auf Einstellungen.
Klicken Sie auf der Seite „Allgemeine Einstellungen“ (standardmäßig ausgewählt) im Abschnitt „Gefahrenzone“ auf Dieses Repository löschen.
Klicken Sie auf Ich möchte dieses Repository löschen.
Lesen Sie die Warnungen und klicken Sie auf Ich habe die Auswirkungen gelesen und verstanden.
Geben Sie im Textfeld den Namen Ihres Repositorys ein, um zu prüfen, ob Sie das richtige Repository löschen.
Klicken Sie auf Dieses Repository löschen.
Nächste Schritte
- Weitere Informationen zu Flottenpaketen
- Weitere Informationen zum Bereitstellen von Flottenpaketen
- In der Anleitung Skalierbare Anwendungen erfahren Sie, wie Sie moderne Anwendungsumgebungen in GKE Enterprise bereitstellen, ausführen und verwalten. Dazu gehört die Anleitung Änderungsmanagement zentralisieren, in der die Skalierung von Konfigurationsänderungen mit Flottenpaketen behandelt wird.