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

  1. 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.
  2. Install the Google Cloud CLI.
  3. 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.

  4. To initialize the gcloud CLI, run the following command:

    gcloud init
  5. 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.

  6. Make sure that billing is enabled for your Google Cloud project.

  7. 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
  8. Install the Google Cloud CLI.
  9. 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.

  10. To initialize the gcloud CLI, run the following command:

    gcloud init
  11. 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.

  12. Make sure that billing is enabled for your Google Cloud project.

  13. 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
  14. 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. Neuen Google Cloud-Nutzern steht möglicherweise eine kostenlose Testversion zur Verfügung.

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:

  1. Öffnen Sie in Ihrem Webbrowser GitHub.

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

  3. Wählen Sie in der Symbolleiste Hinzufügen und dann Neues Repository aus.

  4. Geben Sie fleet-package-tutorial als Namen des Repositorys ein.

  5. Lassen Sie die Sichtbarkeit des Repositories auf Öffentlich eingestellt.

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

  1. Öffnen Sie in der Google Cloud Console die Seite „Cloud Build“ und wählen Sie Repositories aus.

    Zur Seite „Repositories“

  2. Achten Sie darauf, dass Sie sich auf der Seite Repositories der 2. Generation befinden. Wählen Sie bei Bedarf Repositories ansehen (2. Generation) aus.

  3. Klicken Sie auf Hostverbindung erstellen.

  4. Wählen Sie im Menü Region die Option us-central1 (Iowa) aus.

  5. Geben Sie im Feld Name fleet-package-quickstart-connection als Namen für die Verbindung ein.

  6. Klicken Sie auf Verbinden.

  7. Wenn Sie Cloud Build zum ersten Mal mit Ihrem GitHub-Konto verbinden, führen Sie die folgenden Schritte aus:

    1. 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.
    2. Installieren Sie Cloud Build in Ihrem GitHub-Repository. Wählen Sie In neuem Konto installieren aus.
    3. 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.
    4. Folgen Sie den Authentifizierungsaufforderungen, um Ihre Identität in GitHub zu bestätigen.
    5. Wählen Sie im GitHub-Fenster für den Zugriff auf das Cloud Build-Repository die Option Nur Repositories auswählen aus.
    6. Wählen Sie im Drop-down-Menü mit den Repositorys Ihr fleet-package-tutorial-Repository aus.
    7. Klicken Sie auf Speichern.
  8. 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.

  9. Wählen Sie im Menü Verbindung die Option fleet-package-quickstart-connection aus.

  10. Wählen Sie im Menü Repositories das Repository fleet-package-tutorial aus.

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

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

  1. Rufen Sie in der Google Cloud Console die Seite Feature Manager auf.

    Zu Feature Manager

  2. Klicken Sie im Bereich Config Sync auf Konfigurieren.

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

  4. Klicken Sie auf Änderungen speichern.

  5. Klicken Sie auf Konfigurieren.

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

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

  1. Erstellen Sie das Dienstkonto:

    gcloud iam service-accounts create "quickstart-service-account"
    
  2. 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.

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

  1. Klicken Sie in einem Browserfenster Ihres GitHub-Repositories auf Datei hinzufügen und dann auf Neue Datei erstellen.

  2. 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
    
  3. Klicken Sie auf Änderungen übernehmen....

  4. Lassen Sie im Bestätigungsdialogfeld die Option Commit direkt in den main-Zweig durchführen ausgewählt und klicken Sie dann auf Änderungen übernehmen.

  5. Wählen Sie auf der Hauptseite Ihres Repositories in der Seitenleiste Releases aus.

  6. Wählen Sie oben auf der Seite Neuen Release entwerfen aus.

  7. Wählen Sie das Menü Tag auswählen aus und geben Sie v1.0.0 als Tag ein. Klicken Sie auf Neues Tag erstellen.

  8. Klicken Sie auf Release veröffentlichen.

Ressourcen mit einem Flottenpaket in Clustern bereitstellen

Erstellen Sie ein neues Flottenpaket, um die neue Ressource bereitzustellen:

  1. 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 Format USERNAME-REPOSITORY_NAME.

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

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

    Seite „Arbeitslasten“ öffnen

    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 auf 1 festgelegt ist, wartet die Fleet Package API, bis die nginx-deployment vollständig in einem Cluster bereitgestellt wurde, bevor die Bereitstellung im zweiten Cluster gestartet wird. Wenn Sie die Einführungsstrategie auf maxConcurrent: 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.

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

So löschen Sie Ihr Repository:

  1. Klicken Sie in einem Webbrowser Ihrer GitHub-Fork von Cymbal Bank unter Ihrem Repository-Namen auf Einstellungen.

  2. Klicken Sie auf der Seite „Allgemeine Einstellungen“ (standardmäßig ausgewählt) im Abschnitt „Gefahrenzone“ auf Dieses Repository löschen.

  3. Klicken Sie auf Ich möchte dieses Repository löschen.

  4. Lesen Sie die Warnungen und klicken Sie auf Ich habe die Auswirkungen gelesen und verstanden.

  5. Geben Sie im Textfeld den Namen Ihres Repositorys ein, um zu prüfen, ob Sie das richtige Repository löschen.

  6. Klicken Sie auf Dieses Repository löschen.

Nächste Schritte