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 für 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 Flottenstandard installieren
  • Ressourcen aus Ihrem Repository in Ihrer Clusterflotte bereitstellen

Hinweis

  1. Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Installieren Sie die Google Cloud CLI.

  3. Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

  4. Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  5. Erstellen Sie ein Google Cloud Projekt oder wählen Sie eines aus.

    Rollen, die zum Auswählen oder Erstellen eines Projekts erforderlich sind

    • Projekt auswählen: Für die Auswahl eines Projekts ist keine bestimmte IAM-Rolle erforderlich. Sie können jedes Projekt auswählen, für das Ihnen eine Rolle zugewiesen wurde.
    • Projekt erstellen: Zum Erstellen eines Projekts benötigen Sie die Rolle „Projektersteller“ (roles/resourcemanager.projectCreator), die die Berechtigung resourcemanager.projects.create enthält. Weitere Informationen zum Zuweisen von Rollen
    • So erstellen Sie ein Google Cloud -Projekt:

      gcloud projects create PROJECT_ID

      Ersetzen Sie PROJECT_ID durch einen Namen für das Google Cloud -Projekt, das Sie erstellen.

    • Wählen Sie das von Ihnen erstellte Google Cloud Projekt aus:

      gcloud config set project PROJECT_ID

      Ersetzen Sie PROJECT_ID durch den Namen Ihres Projekts in Google Cloud .

  6. Prüfen Sie, ob für Ihr Google Cloud Projekt die Abrechnung aktiviert ist.

  7. Aktivieren Sie die APIs für GKE, Config Delivery (Fleet-Pakete), Cloud Build und Developer Connect:

    Rollen, die zum Aktivieren von APIs erforderlich sind

    Zum Aktivieren von APIs benötigen Sie die IAM-Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin), die die Berechtigung serviceusage.services.enable enthält. Weitere Informationen zum Zuweisen von Rollen

    gcloud services enable container.googleapis.com  configdelivery.googleapis.com  cloudbuild.googleapis.com  developerconnect.googleapis.com
  8. Installieren Sie die Google Cloud CLI.

  9. Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

  10. Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  11. Erstellen Sie ein Google Cloud Projekt oder wählen Sie eines aus.

    Rollen, die zum Auswählen oder Erstellen eines Projekts erforderlich sind

    • Projekt auswählen: Für die Auswahl eines Projekts ist keine bestimmte IAM-Rolle erforderlich. Sie können jedes Projekt auswählen, für das Ihnen eine Rolle zugewiesen wurde.
    • Projekt erstellen: Zum Erstellen eines Projekts benötigen Sie die Rolle „Projektersteller“ (roles/resourcemanager.projectCreator), die die Berechtigung resourcemanager.projects.create enthält. Weitere Informationen zum Zuweisen von Rollen
    • So erstellen Sie ein Google Cloud -Projekt:

      gcloud projects create PROJECT_ID

      Ersetzen Sie PROJECT_ID durch einen Namen für das Google Cloud -Projekt, das Sie erstellen.

    • Wählen Sie das von Ihnen erstellte Google Cloud Projekt aus:

      gcloud config set project PROJECT_ID

      Ersetzen Sie PROJECT_ID durch den Namen Ihres Projekts in Google Cloud .

  12. Prüfen Sie, ob für Ihr Google Cloud Projekt die Abrechnung aktiviert ist.

  13. Aktivieren Sie die APIs für GKE, Config Delivery (Fleet-Pakete), Cloud Build und Developer Connect:

    Rollen, die zum Aktivieren von APIs erforderlich sind

    Zum Aktivieren von APIs benötigen Sie die IAM-Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin), die die Berechtigung serviceusage.services.enable enthält. Weitere Informationen zum Zuweisen von Rollen

    gcloud services enable container.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 Nutzern von Google Cloud steht möglicherweise eine kostenlose Testversion zur Verfügung.

Mit Git verbinden

Ihr Git-Repository enthält die Ressourcen, die Sie für eine 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 GitHub in Ihrem Webbrowser.

  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 mit 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 Öffentlich als Sichtbarkeit des Repositorys ausgewählt.

  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 Ihr fleet-package-tutorial-Repository aus.

  11. Klicken Sie auf Verknüpfen.

Flotte einrichten

In diesem Abschnitt richten Sie Ihre Flotte ein, indem Sie Cluster erstellen, sie 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 Flottenpakete verwenden können, um Ressourcen in mehreren Clustern bereitzustellen.

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. Zweiten GKE-Cluster erstellen:

    gcloud container clusters create-auto cluster2 \
      --project=PROJECT_ID \
      --region=REGION \
      --fleet-project=PROJECT_ID \
      --release-channel=rapid
    

Config Sync als Flottenstandard installieren

Damit Sie den Flottenpaketdienst verwenden können, muss Config Sync auf beiden Clustern installiert sein. Sie können Config Sync auf mehreren Clustern gleichzeitig und auf allen zukünftigen Clustern installieren, die in der Flotte registriert sind. 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 Version von Config Sync aus, die installiert werden soll.

  4. Klicken Sie auf Konfigurieren.

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

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

  4. Fügen Sie eine IAM-Richtlinienbindung für die Rolle Artifact Registry Writer hinzu:

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --member="serviceAccount:quickstart-service-account@PROJECT_ID.iam.gserviceaccount.com" \
       --role='roles/artifactregistry.writer'
    

    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 einem Nginx-Deployment hinzu, veröffentlichen eine Release und erstellen dann ein Flottenpaket, um die Nginx-Anwendung bereitzustellen.

Kubernetes-Manifest in Ihr Repository übertragen

So fügen Sie Ihre Ressourcen zu GitHub hinzu und veröffentlichen eine Version:

  1. Klicken Sie in einem Browserfenster Ihres GitHub-Repositorys 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 Repositorys 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 keine Cluster-Auswahl (im Abschnitt target.fleet) definiert. Es ist so konfiguriert, dass die Bereitstellungsvariante (abgeleitet aus Ihrer deployment.yaml-Datei) für alle diese Cluster bereitgestellt wird.

    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:
        # Match all files (including deployment.yaml) to generate variants
        variantsPattern: "*.yaml"
    target:
      fleet:
        project: projects/PROJECT_ID
    rolloutStrategy:
      rolling:
        maxConcurrent: 1
    variantSelector:
      # Explicitly match the variant generated from "deployment.yaml"
      variantNameTemplate: "deployment"
    

    Ersetzen Sie REPOSITORY_NAME durch den Repository-Namen aus Cloud Build. Dies ist normalerweise im Format USERNAME-REPOSITORY_NAME.

  2. Erstellen Sie das Flottenpaket, um mit dem Roll-out zu beginnen:

    gcloud container fleet packages create fp-nginx \
       --source=fleet-package.yaml \
       --project=PROJECT_ID
    
  3. Prüfen Sie, ob das Flottenpaket erstellt wurde:

    gcloud 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 Google Kubernetes Engine-Seite 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 das neue Deployment anpasst.

    Da maxConcurrent: in der Definition des Flottenpakets auf 1 festgelegt ist, wartet die Flottenpaket-API, bis 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 geändert haben, werden die Ressourcen gleichzeitig in beiden Clustern bereitgestellt.

    Nach einigen Minuten werden in beiden Clustern zwei neue Arbeitslasten für nginx-deployment angezeigt. 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 beobachten, dass 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 Projekt von Google Cloud zusammen mit den Ressourcen, damit Ihrem Konto von Google Cloud die auf dieser Seite verwendeten Ressourcen nicht in Rechnung gestellt werden.

  1. Wechseln Sie in der Google Cloud -Console zur Seite Ressourcen verwalten.

    Zur Seite „Ressourcen verwalten“

  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.

So löschen Sie Ihr Repository:

  1. Klicken Sie in einem Webbrowser Ihres GitHub-Repositorys 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