Für mehrere Ziele gleichzeitig bereitstellen

Mit Cloud Deploy können Sie die Anwendung auf einem Ziel bereitstellen, das für die Darstellung mehrerer Ziele konfiguriert ist. Ihre Anwendung wird dann parallel (gleichzeitig) auf diesen Zielen bereitgestellt. Das Ziel, das Sie in Ihrer Pipeline als Phase festlegen, wird multi-target genannt. Die Ziele, die mehrere Ziele umfassen, werden als untergeordnete Ziele bezeichnet.

Sie können die parallele Bereitstellung mit jedem Zieltyp verwenden, den Cloud Deploy unterstützt, einschließlich Google Kubernetes Engine, Cloud Run und GKE Enterprise.

Vorteile der parallelen Bereitstellung

Sie können die parallele Bereitstellung beispielsweise verwenden, um Ihre Anwendung für mehrere Produktionsziele bereitzustellen. In diesem Fall muss die Bereitstellung nicht nacheinander für jedes Ziel erfolgen, da es keinen Fortschritt gibt (z. B. von der Entwicklung über das Staging bis zur Produktion).

Diese parallele Bereitstellung kann Teil des normalen Fortschritts der Bereitstellungspipeline sein:
dev -> staging -> prod [prod1, prod2, prod3, prod4, ...].

Für die parallele Bereitstellung verwendete Cloud Deploy-Ressourcen

Die parallele Bereitstellung verwendet die folgenden spezialisierten Ressourcen von Cloud Deploy:

  • mehrere Ziele

    Ein Mehrfachziel ist ein Ziel, das mit dem Attribut multiTarget auf oberster Ebene der YAML-Zielkonfigurationsdatei konfiguriert ist. Anstatt auf den Laufzeitcluster oder den Laufzeitdienst zu verweisen, verweist es mit multiTarget.targetIds auf ein oder mehrere andere Ziele.

  • Untergeordnete Ziele

    Ein untergeordnetes Ziel ist jedes Ziel, auf das von einem Multi-Ziel als multiTarget.targetIds verwiesen wird. Das untergeordnete Element muss auch auf einen unterstützten Zieltyp verweisen (Google Kubernetes Engine, GKE Enterprise oder Cloud Run.

  • Controller-Roll-outs

    Ein Controller-Rollout ist ein Rollout, das dem Multi-Ziel entspricht.

    Unter Einschränkungen erfahren Sie, was Sie bei einem Controller-Roll-out tun können und was nicht.

  • Untergeordnete Roll-outs

    Unter Einschränkungen finden Sie weitere Informationen dazu, was Sie bei einem untergeordneten Roll-out tun können und was nicht.

Parallele Bereitstellung einrichten

Beim Einrichten der parallelen Bereitstellung müssen Sie ein Multi-Ziel und die Anzahl der erforderlichen untergeordneten Ziele (bis zum Limit) definieren. Die Zieldefinitionen sind die gleichen wie für alle Ziele, mit Ausnahme der folgenden:

  • Zu den Mehrfachzielen gehört das Attribut multiTarget.
  • Untergeordnete Ziele enthalten nicht das Attribut multiTarget, sondern werden vom Multiziel mithilfe des Attributs multiTarget.targetIds referenziert.
  • Sie können das Multi-Ziel zur Genehmigung konfigurieren, aber nicht die untergeordneten Ziele, die requireApproval:true nicht enthalten dürfen.

Multiziele und untergeordnete Ziele können benutzerdefinierte Konfigurationen für die Ausführungsumgebung enthalten. Wenn für ein untergeordnetes Ziel keine Ausführungsumgebung angegeben ist, wird die in der Definition für mehrere Ziele definierte Umgebung oder die Standardeinstellung übernommen. Weitere Informationen finden Sie unter Ausführungsumgebungen und parallele Bereitstellung.

Multi-Ziel konfigurieren

Ein Multi-Ziel ist ein einzelnes Ziel, das als Phase in Ihrer Bereitstellungspipeline identifiziert wird, aber auf ein oder mehrere untergeordnete Ziele verweist.

Die Konfiguration für mehrere Ziele enthält das Attribut multiTarget. Ein Multi-Ziel kann nicht die Attribute gke, run oder anthosCluster haben. Die Konfiguration für ein Multi-Ziel ist unabhängig von der Laufzeit, für die die Bereitstellung erfolgt, gleich.

Erstellen Sie in der YAML-Datei für die Bereitstellungspipeline oder in einer separaten YAML-Datei die grundlegende Zieldefinition, einschließlich multiTarget:

apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
 name: TARGET_NAME
description: TARGET_DESCRIPTION
multiTarget:
 targetIds: [ CHILD_TARGET1, CHILD_TARGET2, CHILD_TARGETn ]

In diesem YAML-Code...

  • TARGET_NAME ist der Name dieses Multi-Ziels, der in der Definition der Bereitstellungspipeline, des Attributs stages.targetId, verwendet wird.

  • CHILD_TARGET1, CHILD_TARGET2,...CHILD_TARGETn sind die Namen der untergeordneten Ziele, für die dieses Multi-Ziel bereitgestellt wird. Jeder Name entspricht dem Attribut name in der Definition des untergeordneten Ziels.

Wenn das Attribut multiTarget.targetIds vorhanden ist, ist dieses Ziel ein Multi-Ziel.

Untergeordnete Ziele konfigurieren

Konfigurieren Sie für jedes als untergeordnetes Ziel identifizierte Ziel in Ihrer Multi-Ziel-Konfiguration ein weiteres Ziel als untergeordnetes Ziel:

Erstellen Sie in der YAML-Datei für die Bereitstellungspipeline oder in einer separaten YAML-Datei die grundlegende Zieldefinition:

GKE

apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
 name: CHILD_TARGET1
description: TARGET_DESCRIPTION
gke:
 cluster: projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_NAME

In diesem YAML-Code...

  • CHILD_TARGET1 ist der Name dieses untergeordneten Ziels. Der Name entspricht einem Mitglied in der Liste der Ziele im Attribut multiTarget.targetIds in der Definition mit mehreren Zielen.

  • Der Wert des Attributs gke.cluster ist der Ressourcenname des Clusters, auf den sich dieses Ziel bezieht, einschließlich der Projekt-ID, der Region und des Clusternamens.

Dieses Ziel ist wie ein GKE-Standardziel konfiguriert. Das Einzige, was dieses Ziel zu einem untergeordneten Ziel macht, ist, dass es im Multiziel durch das Attribut multiTarget.targetIds referenziert wird.

Cloud Run

apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
 name: CHILD_TARGET1
description: TARGET_DESCRIPTION
run:
 location: projects/PROJECT_ID/locations/REGION

In diesem YAML-Code...

  • CHILD_TARGET1 ist der Name dieses untergeordneten Ziels. Der Name entspricht einem Mitglied in der Liste der Ziele im Attribut multiTarget.targetIds in der Definition mit mehreren Zielen.

  • Der Wert des Attributs run.location ist der Ressourcenname des Cloud Run-Dienstes, auf den sich dieses Ziel bezieht, einschließlich der Projekt-ID und der Region.

Dieses Ziel ist wie ein standardmäßiges Cloud Run-Ziel konfiguriert. Das Einzige, was dieses Ziel zu einem untergeordneten Ziel macht, ist, dass es im Multiziel durch das Attribut multiTarget.targetIds referenziert wird.

GKE Enterprise

apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
 name: CHILD_TARGET1
description: TARGET_DESCRIPTION
anthosCluster:
 membership: projects/PROJECT_ID/locations/global/memberships/MEMBERSHIP_NAME

In diesem YAML-Code...

Dieses Ziel ist wie ein GKE Enterprise-Standardziel konfiguriert. Das Einzige, was dieses Ziel zu einem untergeordneten Ziel macht, ist, dass es im Multiziel durch das Attribut multiTarget.targetIds referenziert wird.

Release erstellen

Wenn ein Multi-Ziel und untergeordnete Ziele konfiguriert sind, erstellen Sie die Bereitstellungspipeline und die Zielressourcen und dann wie gewohnt einen Release.

Der Lebenszyklus der Bereitstellungspipeline ist derselbe wie bei jeder anderen Cloud Deploy-Pipeline und -Zielen, mit der Ausnahme, dass Cloud Deploy bei der Phase mit dem Multi-Ziel ein Controller-Rollout für das Multi-Ziel und ein untergeordnetes Rollout erstellt, um die Anwendung für jedes untergeordnete Ziel bereitzustellen.

In Pub/Sub-Nachrichten als Reaktion auf Cloud Deploy-Vorgänge wird zwischen Controller-Roll-outs und untergeordneten Roll-outs unterschieden.

Beschränkungen

  • Ein Multi-Ziel kann maximal 50 untergeordnete Ziele enthalten.

  • Alle untergeordneten Ziele eines einzelnen Multi-Ziels müssen dieselbe Ziellaufzeit haben (z. B. alle GKE oder alle GKE Enterprise).

  • Innerhalb einer Bereitstellungspipeline kann ein untergeordnetes Ziel nur ein übergeordnetes Multi-Ziel haben.

  • Ein Multi-Ziel kann nicht ohne untergeordnetes Ziel sein und kann nicht auf sich selbst oder ein anderes Multi-Ziel als untergeordnete Ziele verweisen.

  • Sie können ein untergeordnetes Ziel in einer einzelnen Bereitstellungspipeline nicht mehr als einmal verwenden, aber Sie können sie in einer anderen Pipeline wiederverwenden.

  • Standardpools haben Limits für die Nebenläufigkeit, private Pools jedoch nicht.

    Bei der Bereitstellung für ein Multi-Ziel werden alle untergeordneten Roll-outs gleichzeitig bis zum Limit für die Nebenläufigkeit von Cloud Build bereitgestellt. Wenn die Anzahl der untergeordneten Ziele dieses Limit überschreitet, werden die Bereitstellungsjobs für einige Ziele erst ausgeführt, wenn andere abgeschlossen sind. Das bedeutet, dass Cloud Deploy in diesem Fall nicht gleichzeitig für alle untergeordneten Ziele bereitstellt.

    Wenn die Ziele Überprüfungsjobs enthalten, kann außerdem einer oder mehrere dieser Prüfjobs gestartet werden, bevor die Anwendung für alle untergeordneten Ziele bereitgestellt wurde.

    Wenn die Bereitstellung gleichzeitig für mehr Ziele möglich sein muss, als in der Cloud Build-Dokumentation angegeben ist, haben Sie zwei Möglichkeiten:

Ausführungsumgebungen und parallele Bereitstellung

Jedes Ziel kann so konfiguriert werden, dass es eine nicht standardmäßige Ausführungsumgebung verwendet.

  • Wenn das Multiziel eine nicht standardmäßige Ausführungsumgebung hat, übernehmen alle untergeordneten Ziele, die die standardmäßige Ausführungsumgebung verwenden, die nicht standardmäßige Ausführungsumgebung vom Multi-Ziel

  • Wenn für mehrere Ziele die standardmäßige Ausführungsumgebung verwendet wird, verwendet jedes untergeordnete Ziel, das mit einer nicht standardmäßigen Ausführungsumgebung konfiguriert ist, diese.

Diese Regeln erleichtern die Weitergabe von Ausführungsumgebungen an untergeordnete Ziele von einem Mehrfachziel, sodass Sie nicht für jedes untergeordnete Ziel die Ausführungsumgebung definieren oder ändern müssen. Gleichzeitig können Sie bei Bedarf die Ausführungsumgebung für ein oder mehrere untergeordnete Ziele anpassen.

Weitere Informationen zu Ausführungsumgebungen in Cloud Deploy finden Sie unter Google Cloud Deploy-Ausführungsumgebungen verwenden.

Rollback einer parallelen Bereitstellung durchführen

Wenn Sie für eine Bereitstellung von mehreren parallelen Zielen ein Rollback durchführen müssen, führen Sie ein Rollback für mehrere Ziele durch, wie unter Rollback für ein Ziel durchführen beschrieben.

Genehmigungen für die parallele Bereitstellung

Wie bei allen Zielen können Sie Ihre parallele Bereitstellung so konfigurieren, dass Genehmigungen erforderlich sind. Bei der parallelen Bereitstellung können Sie die Genehmigung jedoch nur für mehrere Ziele konfigurieren. Die Genehmigung oder Ablehnung wirkt sich auf alle untergeordneten Ziele zusammen aus.

Parallele Bereitstellung in der Google Cloud Console ansehen

In der Google Cloud Console können Sie Details zu Multi-Zielen, untergeordneten Zielen, dem Controller-Rollout und den untergeordneten Roll-outs aufrufen.

Wenn Sie die Liste der Ziele für eine bestimmte Bereitstellungspipeline aufrufen, wird in den Details der Bereitstellungspipeline das Multiziel aufgeführt, untergeordnete Ziele nicht. In den Releasedetails sehen Sie jedoch das Controller-Roll-out und die untergeordneten Roll-outs. Sie können Controller- und untergeordnete Roll-outs auch auf der Seite mit den Details der Bereitstellungspipeline auf dem Tab Roll-outs auflisten.

Im Release Inspector können Sie gerenderte Manifeste für untergeordnete Roll-outs ansehen und vergleichen.

Bereitstellungsparameter an Ziele übergeben

Sie können zwischen untergeordneten Zielen unterscheiden, indem Sie Parameter in Ihr Manifest und Werte in die Definition der Bereitstellungspipeline aufnehmen. Diese Werte können auf Grundlage des Labelabgleichs mit den entsprechenden Zielen separat auf die separaten Manifeste angewendet werden.

Dies ist beispielsweise sinnvoll, wenn Sie für jedes untergeordnete Ziel eine andere Anzahl von Replikaten wünschen. Dazu schließen Sie die Parameter und Werte in den Fortschritt der Bereitstellungspipeline zusammen mit Labels für die untergeordneten Ziele ein, die für jedes Parameter/Wert-Paar übereinstimmen.

Weitere Informationen zu Bereitstellungsparametern

Parallele Bereitstellung mit einer Bereitstellungsstrategie verwenden

Wenn Sie eine Canary-Bereitstellungsstrategie verwenden, ist eine parallele Bereitstellung möglich. Weitere Informationen finden Sie unter Parallele Bereitstellung mit einer Canary-Bereitstellungsstrategie verwenden.

Nächste Schritte