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 vonmultiTarget.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.
-
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 AttributmultiTarget.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…
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.MEMBERSHIP_NAME ist der Name, den Sie beim Registrieren des GKE Enterprise-Nutzerclusters bei einer Flotte ausgewählt haben.
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
Kurzanleitung: Eine App gleichzeitig auf mehreren Zielen bereitstellen
Weitere Informationen zum Verwenden von Bereitstellungsparametern
Weitere Informationen finden Sie im Schema für die Zielkonfiguration.
Lesen Sie den Artikel Architektur des Cloud Deploy-Dienstes.