Auf mehreren Zielen gleichzeitig bereitstellen

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

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

Vorteile der parallelen Bereitstellung

Mit der parallelen Bereitstellung können Sie beispielsweise Ihre Anwendung für mehrere Produktionsziele bereitstellen. In diesem Fall müssen Sie die Bereitstellung nicht nacheinander für jedes Ziel vornehmen, da es keinen Fortschritt gibt (z. B. von der Entwicklung über das Staging bis zur Produktion).

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

Für die parallele Bereitstellung verwendete Cloud Deploy-Ressourcen

Für die parallele Bereitstellung werden die folgenden spezialisierten Ressourcen von Cloud Deploy verwendet:

  • mehrere Ziele

    Ein Mehrfachziel ist ein Ziel, das mit dem Attribut multiTarget auf oberster Ebene der YAML-Datei für die Zielkonfiguration 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 ein beliebiges 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-Roll-out ist ein Roll-out, das dem Multi-Ziel entspricht.

    Unter Einschränkungen finden Sie weitere Informationen darüber, was mit einem Controller-Roll-out möglich ist und was nicht.

  • Untergeordnete Roll-outs

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

Parallele Bereitstellung einrichten

Bei der Einrichtung der parallelen Bereitstellung werden ein Multi-Ziel und die Anzahl der erforderlichen untergeordneten Ziele (bis zum Limit) definiert. Zieldefinitionen sind dieselben wie für alle Ziele mit Ausnahme der folgenden:

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

Multi-Ziele und untergeordnete Ziele können benutzerdefinierte Konfigurationen für die Ausführungsumgebung enthalten. Wenn ein untergeordnetes Ziel keine Ausführungsumgebung angibt, übernimmt es die in der Definition für mehrere Ziele definierte Umgebung oder die Standardeinstellung. 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 wurde, 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, immer 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 stages.targetId verwendet wird.

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

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

Untergeordnete Ziele konfigurieren

Konfigurieren Sie für jedes als untergeordnetes Ziel in Ihrer Multi-Ziel-Konfiguration identifizierte Ziel 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 standardmäßiges GKE-Ziel konfiguriert. Das Einzige, was dieses Ziel zu einem untergeordneten Ziel macht, ist, dass das Attribut multiTarget.targetIds im Multiziel darauf verweist.

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 das Attribut multiTarget.targetIds im Multiziel darauf verweist.

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 standardmäßiges GKE Enterprise-Ziel konfiguriert. Das Einzige, was dieses Ziel zu einem untergeordneten Ziel macht, ist, dass das Attribut multiTarget.targetIds im Multiziel darauf verweist.

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 basierend auf dem Labelabgleich auf den entsprechenden Zielen separat auf die separaten Manifeste angewendet werden.

Sie können beispielsweise eine andere Anzahl von Replikaten für jedes untergeordnete Ziel wünschen. Dazu fügen Sie die Parameter und Werte in den Fortschritt der Bereitstellungspipeline sowie Labels für die untergeordneten Ziele ein, die für jedes Parameterwertpaar übereinstimmen sollen.

Weitere Informationen zu Bereitstellungsparametern

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 der gleiche wie bei jeder anderen Cloud Deploy-Pipeline und -Zielen, mit der Ausnahme, dass Cloud Deploy beim Erreichen des Multi-Ziels 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 Mehrfachziel darf maximal 50 untergeordnete Ziele haben.

  • 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 Mehrfachziel 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 mehrmals verwenden, aber Sie können sie in einer anderen Pipeline wiederverwenden.

  • Standardpools haben Limits für 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 Cloud Build-Nebenläufigkeit 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 außerdem Überprüfungsjobs enthalten, kann 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 Multi-Ziel eine nicht standardmäßige Ausführungsumgebung hat, übernehmen alle untergeordneten Ziele, die die Standardausfü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 nicht standardmäßige Ausführungsumgebung.

Diese Regeln erleichtern die Weitergabe von Ausführungsumgebungen an untergeordnete Ziele eines Multi-Ziels, sodass Sie die Ausführungsumgebung nicht für jedes untergeordnete Ziel definieren oder ändern müssen. Die Ausführungsumgebung lässt sich jedoch bei Bedarf 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 parallele Bereitstellung

Wie bei allen Zielen können Sie Ihre parallele Bereitstellung so konfigurieren, dass Genehmigungen erforderlich sind. Bei paralleler 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-Ziel-, untergeordneten Zielen, Controller-Roll-outs und untergeordneten Roll-outs aufrufen.

Wenn Sie die Liste der Ziele für eine bestimmte Bereitstellungspipeline aufrufen, wird in den Details der Bereitstellungspipeline das Multi-Ziel aufgeführt, untergeordnete Ziele jedoch nicht. In den Releasedetails sehen Sie jedoch das Controller-Roll-out und die untergeordneten Roll-outs. Controller- und untergeordnete Roll-outs werden auch auf dem Tab Roll-outs der Detailseite der Bereitstellungspipeline aufgeführt.

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

Parallele Bereitstellung mit einer Bereitstellungsstrategie verwenden

Sie können parallel bereitstellen, wenn Sie eine Canary-Bereitstellungsstrategie verwenden. Weitere Informationen finden Sie unter Parallele Bereitstellung mit einer Canary-Bereitstellungsstrategie verwenden.

Nächste Schritte