Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Kurzanleitung: App gleichzeitig für mehrere Ziele bereitstellen

App für mehrere Ziele gleichzeitig bereitstellen

Auf dieser Seite erfahren Sie, wie Sie mit Google Cloud Deploy eine Beispielanwendung gleichzeitig an zwei Ziele senden: eine parallele Bereitstellung.

Dieser Schnellstart erläutert folgende Schritte:

  1. Erstellen Sie zwei GKE-Cluster oder zwei Cloud Run-Dienste.

    Sie können auch parallel zu Anthos-Clustern bereitstellen. In dieser Kurzanleitung werden jedoch nur GKE und Cloud Run verwendet.

  2. Erstellen Sie eine Skaffold-Konfiguration und entweder ein Kubernetes-Manifest oder eine Cloud Run-Dienstdefinition.

  3. Definieren Sie die Bereitstellungspipeline und Bereitstellungsziele für Google Cloud Deploy.

    Diese Pipeline hat nur ein Ziel, aber dieses Ziel ist ein Multi-Ziel, also ein Ziel, das mehr als ein Bereitstellungsziel darstellt. Dieses Mehrziel besteht aus zwei tatsächlichen Zielen, die Ihre Anwendung an die beiden Cluster oder Dienste liefern.

  4. Instanziieren Sie die Bereitstellungspipeline. Erstellen Sie dazu einen Release, der automatisch parallel auf den beiden Zielen bereitgestellt wird.

  5. Sehen Sie sich in der Google Cloud Console die Roll-outs der Controller und untergeordneten Roll-outs an.

Hinweis

  1. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch 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. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für ein Projekt aktiviert ist.

  4. Google Cloud Deploy, Cloud Build, GKE, Cloud Run, and Cloud Storage APIs aktivieren.

    Aktivieren Sie die APIs

  5. Installieren Sie die Google Cloud CLI.
  6. Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  7. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  8. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für ein Projekt aktiviert ist.

  9. Google Cloud Deploy, Cloud Build, GKE, Cloud Run, and Cloud Storage APIs aktivieren.

    Aktivieren Sie die APIs

  10. Installieren Sie die Google Cloud CLI.
  11. Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  12. Wenn die Befehlszeile bereits installiert ist, müssen Sie die neueste Version ausführen:

    gcloud components update
    

  13. Prüfen Sie, ob das Compute Engine-Standarddienstkonto die erforderlichen Berechtigungen hat.

    Das Dienstkonto hat möglicherweise bereits die erforderlichen Berechtigungen. Diese Schritte sind für Projekte enthalten, die automatische Rollenzuweisungen für Standarddienstkonten deaktivieren.

    1. Fügen Sie zuerst die Rolle clouddeploy.jobRunner hinzu:

      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member=serviceAccount:$(gcloud projects describe PROJECT_ID \
          --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
          --role="roles/clouddeploy.jobRunner"
      

    2. Fügen Sie die Entwicklerrolle für die jeweilige Laufzeit hinzu.
      • Für GKE:

        gcloud projects add-iam-policy-binding PROJECT_ID \
            --member=serviceAccount:$(gcloud projects describe PROJECT_ID \
            --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
            --role="roles/container.developer"
        

      • Für Cloud Run:

        gcloud projects add-iam-policy-binding PROJECT_ID \
            --member=serviceAccount:$(gcloud projects describe PROJECT_ID \
            --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
            --role="roles/run.developer"
        

    3. Fügen Sie die Rolle iam.serviceAccountUser hinzu, die die Berechtigung actAs für die Laufzeit enthält:

      gcloud iam service-accounts add-iam-policy-binding $(gcloud projects describe PROJECT_ID \
          --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
          --member=serviceAccount:$(gcloud projects describe PROJECT_ID \
          --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
          --role="roles/iam.serviceAccountUser" \
          --project=PROJECT_ID
      

Laufzeitumgebungen erstellen

Bei der Bereitstellung in Cloud Run können Sie diesen Befehl überspringen.

Erstellen Sie für GKE zwei Cluster: quickstart-cluster-qsprod1 und quickstart-cluster-qsprod2 mit Standardeinstellungen. Die Kubernetes API-Endpunkte der Cluster müssen über das Internet aus dem Netzwerk erreichbar sein. GKE-Cluster sind standardmäßig extern zugänglich.

gcloud container clusters create-auto quickstart-cluster-qsprod1 \
                 --project=PROJECT_ID \
                 --region=us-central1 \
                 && gcloud container clusters create-auto quickstart-cluster-qsprod2 \
                 --project=PROJECT_ID \
                 --region=us-west1

Skaffold-Konfiguration und Kubernetes-Manifest vorbereiten

Google Cloud Deploy verwendet Skaffold, um die Details für die Bereitstellung und die korrekte Bereitstellung für Ihre separaten Ziele anzugeben.

In dieser Kurzanleitung erstellen Sie eine skaffold.yaml-Datei, die das Kubernetes-Manifest angibt, das zum Bereitstellen der Beispielanwendung verwendet werden soll.

  1. Öffnen Sie ein Terminalfenster.

  2. Erstellen Sie ein neues Verzeichnis und rufen Sie es auf.

    GKE

    mkdir deploy-gke-parallel-quickstart
    cd deploy-gke-parallel-quickstart
    

    Cloud Run

    mkdir deploy-run-parallel-quickstart
    cd deploy-run-parallel-quickstart
    
  3. Erstellen Sie eine Datei mit dem Namen skaffold.yaml und mit folgendem Inhalt:

    GKE

    apiVersion: skaffold/v4beta1
    kind: Config
    manifests:
      rawYaml:
      - k8s-pod.yaml
    deploy:
      kubectl: {}
    

    Cloud Run

    apiVersion: skaffold/v4beta1
    kind: Config
    manifests:
      rawYaml:
      - service.yaml
    deploy:
      cloudrun: {}
    

    Diese Datei ist eine minimale Skaffold-Konfiguration. In dieser Kurzanleitung erstellen Sie die Datei. Sie können aber auch Google Cloud Deploy für Sie erstellen, um einfache Nicht-Produktionsanwendungen zu erstellen.

    Weitere Informationen zu dieser Datei finden Sie in der Referenz zu skaffold.yaml.

  4. Erstellen Sie die Definition für Ihre Anwendung – eine Dienstdefinition für Cloud Run oder ein Kubernetes-Manifest für GKE.

    GKE

    Erstellen Sie eine Datei mit dem Namen k8s-pod.yaml und folgendem Inhalt:

    apiVersion: v1
    kind: Pod
    metadata:
      name: getting-started
    spec:
      containers:
      - name: echoserver
        image: my-app-image
    

    Diese Datei ist ein einfaches Kubernetes-Manifest, das auf den Cluster angewendet wird, um die Anwendung bereitzustellen.

    Cloud Run

    Erstellen Sie eine Datei mit dem Namen service.yaml und folgendem Inhalt:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: my-parallel-run-service
    spec:
      template:
        spec:
          containers:
          - image: my-app-image
    

    Diese Datei ist eine einfache Cloud Run-Dienstdefinition, die bei der Bereitstellung zum Erstellen des Cloud Run-Dienstes verwendet wird.

Lieferpipeline und Ziele erstellen

Sie können Pipeline und Ziele in einer Datei oder in separaten Dateien definieren. In dieser Kurzanleitung erstellen Sie nur eine Datei.

  1. Erstellen Sie Ihre Bereitstellungspipeline und Zieldefinition:

    GKE

    Erstellen Sie im Verzeichnis deploy-gke-parallel-quickstart eine neue Datei clouddeploy.yaml mit folgendem Inhalt:

    apiVersion: deploy.cloud.google.com/v1
    kind: DeliveryPipeline
    metadata:
     name: my-parallel-demo-app-1
    description: main application pipeline
    serialPipeline:
     stages:
     - targetId: qsprod-multi
       profiles: []
    ---
    
    apiVersion: deploy.cloud.google.com/v1
    kind: Target
    metadata:
     name: qsprod-multi
    description: production clusters
    multiTarget:
     targetIds: [qsprod-a, qsprod-b]
    ---
    
    apiVersion: deploy.cloud.google.com/v1
    kind: Target
    metadata:
     name: qsprod-a
    description: production cluster 1
    gke:
     cluster: projects/PROJECT_ID/locations/us-central1/clusters/quickstart-cluster-qsprod1
    ---
    
    apiVersion: deploy.cloud.google.com/v1
    kind: Target
    metadata:
     name: qsprod-b
    description: production cluster 2
    gke:
     cluster: projects/PROJECT_ID/locations/us-west1/clusters/quickstart-cluster-qsprod2
    

    Cloud Run

    Erstellen Sie im Verzeichnis deploy-run-parallel-quickstart eine neue Datei clouddeploy.yaml mit folgendem Inhalt:

    apiVersion: deploy.cloud.google.com/v1
    kind: DeliveryPipeline
    metadata:
     name: my-parallel-demo-app-1
    description: main application pipeline
    serialPipeline:
     stages:
     - targetId: qsprod-multi
       profiles: []
    ---
    
    apiVersion: deploy.cloud.google.com/v1
    kind: Target
    metadata:
     name: qsprod-multi
    description: production
    multiTarget:
     targetIds: [qsprod-a, qsprod-b]
    ---
    
    apiVersion: deploy.cloud.google.com/v1
    kind: Target
    metadata:
     name: qsprod-a
    description: production us-central1
    run:
     location: projects/PROJECT_ID/locations/us-central1
    ---
    
    apiVersion: deploy.cloud.google.com/v1
    kind: Target
    metadata:
     name: qsprod-b
    description: production us-west1
    run:
     location: projects/PROJECT_ID/locations/us-west1
    
  2. Registrieren Sie Ihre Pipeline und Ziele beim Google Cloud Deploy-Dienst:

    gcloud deploy apply --file=clouddeploy.yaml --region=us-central1 --project=PROJECT_ID
    

    Sie haben jetzt eine Pipeline mit einem Multi-Ziel, das aus zwei GKE- oder Cloud Run-Zielen besteht, die Ihre Anwendung bereitstellen können.

  3. Bestätigen Sie Pipeline und Ziele:

    Rufen Sie in der Google Cloud Console die Seite Bereitstellungspipelines für Google Cloud Deploy auf, um eine Liste der verfügbaren Bereitstellungspipelines aufzurufen.

    Zur Seite der Lieferpipelines

    Die soeben erstellte Bereitstellungspipeline wird angezeigt. In der Spalte Targets (Ziele) ist ein Ziel aufgeführt, obwohl Sie drei Ziele (ein Ziel mit mehreren Zielen und zwei untergeordnete Ziele) in der Datei clouddeploy.yaml konfiguriert haben.

    Visualisierung der Bereitstellungspipeline in der Google Cloud Console

    Das einzige aufgeführte Ziel ist das qsprod-multi mit mehreren Zielen. Untergeordnete Ziele werden nicht angezeigt.

Release erstellen

Ein Release ist die zentrale Ressource von Google Cloud Deploy, die die bereitgestellten Änderungen darstellt. Die Bereitstellungspipeline definiert den Lebenszyklus dieses Release. Weitere Informationen zu diesem Lebenszyklus finden Sie unter Google Cloud Deploy-Dienstarchitektur.

GKE

Führen Sie im Verzeichnis deploy-gke-parallel-quickstart den folgenden Befehl aus, um eine release-Ressource zu erstellen, die das bereitzustellende Container-Image darstellt:

 gcloud deploy releases create test-release-001 \
   --project=PROJECT_ID \
   --region=us-central1 \
   --delivery-pipeline=my-parallel-demo-app-1 \
   --images=my-app-image=registry.k8s.io/echoserver:1.4 \
   --to-target=qsprod-multi

Cloud Run

Führen Sie im Verzeichnis deploy-run-parallel-quickstart den folgenden Befehl aus, um eine release-Ressource zu erstellen, die das bereitzustellende Container-Image darstellt:

 gcloud deploy releases create test-release-001 \
   --project=PROJECT_ID \
   --region=us-central1 \
   --delivery-pipeline=my-parallel-demo-app-1 \
   --images=my-app-image=gcr.io/cloudrun/hello \
   --to-target=qsprod-multi

Wie immer wird beim Erstellen eines Release automatisch ein Roll-out für das erste Ziel in der Pipeline (oder wie in diesem Fall ein bestimmtes Ziel, das mit --to-target= angegeben wird) erstellt. In dieser Kurzanleitung ist dieses Ziel ein Multi-Ziel. Der rollout ist also ein „Controller-Roll-out“ für zwei untergeordnete Ziele und es gibt keine nachfolgenden Ziele in der Bereitstellungspipeline. Das bedeutet, dass Ihre Anwendung bei der Einführung überall bereitgestellt wird.

Ergebnisse in der Google Cloud Console ansehen

Nachdem Sie den Release erstellt und die Controller-Rollouts und -Child-Rollouts erstellt haben, werden diese jetzt in den entsprechenden GKE-Clustern oder Cloud Run-Diensten bereitgestellt (oder werden sie gerade eingeführt).

  1. Rufen Sie in der Google Cloud Console die Seite Bereitstellungspipelines für Google Cloud Deploy auf, um die Bereitstellungspipeline my-parallel-demo-app-1 aufzurufen.

    Zur Seite der Lieferpipelines

  2. Klicken Sie auf den Namen der Bereitstellungspipeline „my-parallel-demo-app-1“.

    In der Pipelinevisualisierung wird der Bereitstellungsstatus der Anwendung angezeigt. Da es in der Pipeline nur eine Phase gibt, wird in der Visualisierung nur ein Knoten angezeigt.

    Visualisierung der Bereitstellungspipeline in der Google Cloud Console

    Ihre Version wird auf dem Tab Releases unter Details zur Lieferpipeline aufgeführt.

  3. Klicken Sie auf den Releasenamen, test-release-001.

    Ihre Roll-outs werden unter Roll-outs angezeigt. Sie können auf ein Roll-out klicken, um die Details aufzurufen, einschließlich des Deployment-Logs.

    Roll-outs in der Google Cloud Console

Bereinigen

So vermeiden Sie, dass Ihrem Google Cloud-Konto die auf dieser Seite verwendeten Ressourcen in Rechnung gestellt werden:

  1. Löschen Sie die GKE-Cluster oder Cloud Run-Dienste:

    GKE

    gcloud container clusters delete quickstart-cluster-qsprod1 --region=us-central1 --project=PROJECT_ID \
    && gcloud container clusters delete quickstart-cluster-qsprod2 --region=us-west1 --project=PROJECT_ID
    

    Cloud Run

    gcloud run services delete my-parallel-run-service --region=us-central1 --project=PROJECT_ID \
    && gcloud run services delete my-parallel-run-service --region=us-west1 --project=PROJECT_ID
    
  2. Löschen Sie die Bereitstellungspipeline, mehrere Ziele, untergeordnete Ziele, Releases und Roll-outs:

    gcloud deploy delete --file=clouddeploy.yaml --force --region=us-central1 --project=PROJECT_ID
    
  3. Löschen Sie die von Google Cloud Deploy erstellten Cloud Storage-Buckets.

    Eines davon endet mit _clouddeploy und das andere [region].deploy-artifacts.[project].appspot.com.

    Die Cloud Storage-Browserseite öffnen

Das war alles. Sie haben diesen Schnellstart abgeschlossen!

Nächste Schritte