Bereitstellung auf mehreren Zielen gleichzeitig

Mit Cloud Deploy können Sie eine Bereitstellung auf einem Ziel ausführen, das so konfiguriert ist, dass es mehrere Ziele darstellt. Ihre Anwendung wird dann parallel (gleichzeitig) auf diesen Zielen bereitgestellt. Das Ziel, das Sie als Phase in Ihrer Pipeline angeben, wird als Multi-Ziel bezeichnet. Die Ziele, aus denen das Multi-Ziel besteht, werden als untergeordnete Ziele bezeichnet.

Sie können die parallele Bereitstellung mit jedem Zieltyp verwenden, der von Cloud Deploy unterstützt wird, 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 auf mehreren Produktionszielen bereitzustellen. In diesem Fall müssen Sie nicht nacheinander auf jedem Ziel bereitstellen, da es keine Abfolge gibt (z. B. von der Entwicklungs- zur Staging-Umgebung und dann zur Produktionsumgebung).

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

Cloud Deploy-Ressourcen, die für die parallele Bereitstellung verwendet werden

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

  • Mehrere Ziele

    Ein Mehrfachziel ist ein Ziel, das mit der Eigenschaft multiTarget auf der obersten Ebene der Zielkonfigurations-YAML konfiguriert ist. Anstatt auf den Laufzeitcluster oder ‑dienst zu verweisen, verweist es mithilfe von multiTarget.targetIds auf ein oder mehrere andere Ziele.

  • Untergeordnete Ziele

    Ein untergeordnetes Ziel ist jedes Ziel, auf das ein Multi-Ziel als multiTarget.targetIds verweist. Das untergeordnete Element muss außerdem 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-Target entspricht.

    Weitere Informationen dazu, was Sie mit einem Controller-Roll-out tun können und was nicht, finden Sie unter Einschränkungen.

  • Untergeordnete Roll-outs

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

Parallele Bereitstellung einrichten

Um eine parallele Bereitstellung einzurichten, müssen Sie ein Multi-Ziel und die Anzahl der erforderlichen untergeordneten Ziele (bis zum Limit) definieren. Die Zieldefinitionen sind mit Ausnahme der folgenden Ausnahmen mit denen für alle Ziele identisch:

  • Mehrere Ziele umfassen das Attribut multiTarget.
  • Untergeordnete Ziele enthalten nicht das Attribut multiTarget, aber es wird über das Attribut multiTarget.targetIds auf sie verwiesen.
  • Sie können das Mehrfachziel für die Genehmigung konfigurieren, aber nicht die untergeordneten Ziele, die requireApproval:true nicht enthalten dürfen.

Multi-Ziel- 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 Multi-Zieldefinition definierte oder die Standardausführungsumgebung übernommen. Weitere Informationen finden Sie unter Ausführungsumgebungen und parallele Bereitstellung.

Mehrfachziel konfigurieren

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

Die Multi-Target-Konfiguration enthält das Attribut multiTarget. Ein Multi-Target-Element darf nicht die Eigenschaften gke, run oder anthosCluster haben. Die Konfiguration für ein Multi-Target ist unabhängig von der Laufzeit, auf die Sie bereitstellen.

Erstellen Sie in der YAML-Datei der Lieferpipeline 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-Targets, der in der Definition der Bereitstellungspipeline, im Attribut stages.targetId, verwendet wird.

  • CHILD_TARGET1, CHILD_TARGET2,...CHILD_TARGETn sind die Namen der untergeordneten Ziele, auf die dieses Multi-Ziel bereitgestellt wird. Jeder Name entspricht der name-Property in der Definition des untergeordneten Ziels.

Durch die Property multiTarget.targetIds wird dieses Ziel in ein Mehrfachziel umgewandelt.

Untergeordnete Ziele konfigurieren

Konfigurieren Sie für jedes Ziel, das in Ihrer Multi-Ziel-Konfiguration als untergeordnet identifiziert wurde, ein weiteres Ziel als untergeordnetes Ziel:

Erstellen Sie in der YAML-Datei der 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 in der multiTarget.targetIds-Property in der Definition mit mehreren Zielen.

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

Dieses Ziel wird genauso konfiguriert wie ein standardmäßiges GKE-Ziel. Das einzige, was dieses Ziel zu einem untergeordneten Ziel macht, ist der Verweis darauf durch die Property multiTarget.targetIds im Multi-Ziel.

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 in der multiTarget.targetIds-Property in der Definition mit mehreren Zielen.

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

Dieses Ziel wird genauso konfiguriert wie ein Standard-Cloud Run-Ziel. Das einzige, was dieses Ziel zu einem untergeordneten Ziel macht, ist die Referenzierung durch die Property multiTarget.targetIds im Multi-Ziel.

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 wird genauso konfiguriert wie ein standardmäßiges GKE Enterprise-Ziel. Das einzige, was dieses Ziel zu einem untergeordneten Ziel macht, ist die Referenzierung durch die Property multiTarget.targetIds im Multi-Ziel.

Bereitstellungsparameter an Ziele übergeben

Du kannst zwischen untergeordneten Zielen unterscheiden, indem du Parameter in dein Manifest und Werte in die Definition der Lieferpipeline aufnimmst. Diese Werte können separat auf die einzelnen Manifeste angewendet werden, basierend auf dem Label-Abgleich mit den entsprechenden Zielen.

Beispielsweise kann für jedes untergeordnete Ziel eine andere Anzahl von Replikas erforderlich sein. Dazu fügen Sie die Parameter und Werte in die Abfolge der Auslieferungspipeline ein. Außerdem müssen Sie Labels für die untergeordneten Ziele angeben, die mit jedem Parameter-Wert-Paar übereinstimmen müssen.

Weitere Informationen zu Bereitstellungsparametern

Release erstellen

Nachdem Sie ein Multi-Ziel und untergeordnete Ziele konfiguriert haben, erstellen Sie die Bereitstellungspipeline und die Zielressourcen und erstellen Sie dann wie gewohnt eine Version.

Der Lebenszyklus der Bereitstellungspipeline ist derselbe wie bei jeder Cloud Deploy-Pipeline und -Zielen. Der einzige Unterschied besteht darin, dass Cloud Deploy in der Phase mit dem Multi-Target-Ziel ein Controller-Roll-out für das Multi-Target-Ziel und ein untergeordnetes Roll-out erstellt, um die Anwendung auf jedem untergeordneten Ziel bereitzustellen.

Pub/Sub-Nachrichten als Antwort auf Cloud Deploy-Vorgänge unterscheiden zwischen Controller- und untergeordneten Roll-outs.

Beschränkungen

  • Ein Multi-Ziel kann maximal 100 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 Multi-Ziel kann keine untergeordneten Ziele haben und darf nicht auf sich selbst oder ein anderes Multi-Ziel verweisen.

  • Sie können ein untergeordnetes Ziel nicht mehrmals innerhalb einer einzelnen Bereitstellungspipeline verwenden, aber in einer anderen Pipeline wiederverwenden.

  • Standardpools haben Einschränkungen für die Parallelität, private Pools jedoch nicht.

    Bei der Bereitstellung für mehrere Ziele werden alle untergeordneten Roll-outs gleichzeitig bereitgestellt, bis das Cloud Build-Parallelisierungslimit erreicht ist. Wenn Sie mehr untergeordnete Ziele als dieses Limit haben, werden die Bereitstellungsjobs für einige Ziele erst ausgeführt, wenn andere abgeschlossen sind. In diesem Fall wird Cloud Deploy nicht gleichzeitig auf alle untergeordneten Ziele bereitgestellt.

    Wenn die Ziele Überprüfungsjobs enthalten, kann es vorkommen, dass einer oder mehrere dieser Jobs gestartet werden, bevor die Anwendung auf allen untergeordneten Zielen bereitgestellt wurde.

    Wenn Sie gleichzeitig auf mehr Ziele als das in der Cloud Build-Dokumentation angegebene Limit bereitstellen möchten, haben Sie zwei Möglichkeiten:

Ausführungsumgebungen und parallele Bereitstellung

Jedes Ziel kann so konfiguriert werden, dass eine andere Ausführungsumgebung als die Standardumgebung verwendet wird.

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

  • Wenn für das Multi-Ziel die Standardausführungsumgebung verwendet wird, wird für alle untergeordneten Ziele, die mit einer anderen Ausführungsumgebung konfiguriert sind, diese andere Ausführungsumgebung verwendet.

Mit diesen Regeln können Sie die Ausführungsumgebung von einem Multi-Ziel auf untergeordnete Ziele übertragen. Sie müssen die Ausführungsumgebung also nicht für jedes untergeordnete Ziel definieren oder ändern. Sie können die Ausführungsumgebung aber bei Bedarf für ein oder mehrere untergeordnete Ziele anpassen.

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

Parallele Bereitstellung rückgängig machen

Wenn Sie eine Bereitstellung von mehreren parallelen Zielen zurücksetzen möchten, führen Sie ein Rollback für das Mehrfachziel aus, wie unter Rollback für ein Ziel ausführen beschrieben.

Genehmigungen für die parallele Bereitstellung

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

Parallele Bereitstellung in der Google Cloud Console ansehen

Details zu Ihren Mehrfachzielen, untergeordneten Zielen, dem Controller-Roll-out und untergeordneten Roll-outs finden Sie in der Google Cloud Console.

Wenn Sie sich die Liste der Ziele für eine bestimmte Bereitstellungspipeline ansehen, wird in den Details der Bereitstellungspipeline das Multi-Ziel aufgeführt, aber keine untergeordneten Ziele. In den Releasedetails sehen Sie jedoch das Controller-Roll-out und die untergeordneten Roll-outs. Auf der Seite „Details zur Bereitstellungspipeline“ auf dem Tab Roll-outs sind auch Controller- und untergeordnete Roll-outs aufgeführt.

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

Parallele Bereitstellung mit einer Bereitstellungsstrategie verwenden

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

Nächste Schritte