Mit Cloud Deploy können Sie die Bereitstellung auf einem Ziel ausführen, das für die Darstellung mehrerer Ziele konfiguriert ist. Ihre Anwendung wird parallel (gleichzeitig) auf diesen Zielen bereitgestellt. Das Ziel, das Sie als Phase in Ihrer Pipeline identifizieren, wird als Multi-Ziel bezeichnet. Die Ziele, aus denen dieses 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.
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 Progression gibt (z. B. von der Entwicklungs- über die Staging- zur Produktionsumgebung).
Diese parallele Bereitstellung kann Teil einer normalen Lieferpipeline sein:
dev -> staging -> prod [prod1, prod2, prod3, prod4, ...].
Cloud Deploy-Ressourcen für die parallele Bereitstellung
Bei der parallelen Bereitstellung werden die folgenden Cloud Deploy-Ressourcen verwendet:
mehrere Ziele
Ein Multi-Target ist ein Ziel, das mit der Eigenschaft
multiTargetauf der obersten Ebene der YAML-Datei für die Zielkonfiguration konfiguriert ist. Anstatt auf den Laufzeitcluster oder -dienst zu verweisen, wird mitmultiTarget.targetIdsauf ein oder mehrere andere Ziele verwiesen.Untergeordnete Ziele
Ein untergeordnetes Ziel ist ein beliebiges Ziel, auf das in einem Multi-Ziel als
multiTarget.targetIdsverwiesen wird.Controller-Roll-outs
Ein Controller-Roll-out ist ein Roll-out, der dem Multi-Target entspricht.
Weitere Informationen dazu, was Sie mit einem Controller-Rollout tun können und was nicht, finden Sie unter Einschränkungen.
Roll-outs für untergeordnete Konten
Weitere Informationen dazu, was Sie mit einem untergeordneten Rollout tun können und was nicht, finden Sie unter Einschränkungen.
Parallele Bereitstellung einrichten
Für die parallele Bereitstellung müssen Sie ein Multi-Ziel und die erforderliche Anzahl untergeordneter Ziele (bis zum Limit) definieren. Zieldefinitionen sind dieselben wie für alle Ziele, mit Ausnahme der folgenden:
- Multi-Targets enthalten das Attribut
multiTarget. - Untergeordnete Ziele enthalten nicht das Attribut
multiTarget, sondern werden über das AttributmultiTarget.targetIdsvom Multi-Ziel referenziert. - Sie können das Multi-Target für die Genehmigung konfigurieren, nicht aber die untergeordneten Targets, die
requireApproval:truenicht enthalten dürfen.
Multi-Ziele und untergeordnete Ziele können benutzerdefinierte Konfigurationen der Ausführungsumgebung enthalten. Wenn für ein untergeordnetes Ziel keine Ausführungsumgebung angegeben ist, wird die in der Multi-Ziel-Definition definierte oder die Standardumgebung ü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 identifiziert wird, aber auf ein oder mehrere untergeordnete Ziele verweist.
Die Konfiguration für mehrere Ziele enthält das Attribut multiTarget. Ein Multi-Target kann nicht die Eigenschaften gke, run oder anthosCluster haben.
Die Konfiguration für ein Multi-Target ist unabhängig davon, in welcher Laufzeit Sie es bereitstellen.
Erstellen Sie in der YAML-Datei Ihrer 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,
stages.targetId-Attribut, verwendet wird.CHILD_TARGET1, CHILD_TARGET2,...CHILD_TARGETn sind die Namen der untergeordneten Ziele, auf denen dieses Multi-Ziel bereitgestellt wird. Jeder Name entspricht der
name-Property in der Definition des untergeordneten Zielvorhabens.
Durch das Attribut multiTarget.targetIds wird dieses Ziel zu einem Ziel mit mehreren Zielen.
Untergeordnete Ziele konfigurieren
Konfigurieren Sie für jedes Ziel, das in Ihrer Multi-Ziel-Konfiguration als untergeordnetes Ziel identifiziert wurde, ein weiteres Ziel als untergeordnetes Ziel:
Erstellen Sie in Ihrer 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 in der Property
multiTarget.targetIdsin der Definition für mehrere Ziele.Der Wert der Eigenschaft
gke.clusterist 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 Standard-GKE-Ziel.
Das Einzige, was dieses Ziel zu einem untergeordneten Ziel macht, ist, dass es in der multiTarget.targetIds-Property des Multi-Ziels 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 in der Property
multiTarget.targetIdsin der Definition für mehrere Ziele.Der Wert des Attributs
run.locationist 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 Standardziel für Cloud Run. Das einzige, was dieses Ziel zu einem untergeordneten Ziel macht, ist, dass es in der multiTarget.targetIds-Property des Multi-Ziels referenziert wird.
In GKE angehängte Cluster
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 Element in der Liste der Ziele in der Property
multiTarget.targetIdsin der Definition für mehrere Ziele.MEMBERSHIP_NAME ist der Name, den Sie beim Registrieren des Clusters für eine Flotte ausgewählt haben.
Benutzerdefiniertes Ziel
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: CHILD_TARGET1
description: TARGET_DESCRIPTION
customTarget:
customTargetType: CUSTOM_TARGET_TYPE_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 Property
multiTarget.targetIdsin der Definition für mehrere Ziele.CUSTOM_TARGET_TYPE_NAME ist der Name des benutzerdefinierten Zieltyps, der von diesem Ziel verwendet wird.
Bereitstellungsparameter an Ziele übergeben
Sie können untergeordnete Ziele unterscheiden, indem Sie Parameter in Ihr Manifest und Werte in Ihre Definition der Lieferpipeline aufnehmen. Diese Werte können separat auf die einzelnen Manifeste angewendet werden, basierend auf dem Label-Abgleich der entsprechenden Ziele.
Möglicherweise möchten Sie für jedes untergeordnete Ziel eine andere Anzahl von Replikaten. Dazu müssen Sie die Parameter und Werte in die progression der Auslieferungspipeline aufnehmen und Labels für die untergeordneten Ziele angeben, die für jedes Parameter-Werte-Paar abgeglichen werden sollen.
Weitere Informationen zu Bereitstellungsparametern
Release erstellen
Wenn Sie ein Multi-Ziel und untergeordnete Ziele konfiguriert haben, erstellen Sie die Bereitstellungspipeline und die Zielressourcen und dann wie gewohnt ein Release.
Der Lebenszyklus der Bereitstellungspipeline ist derselbe wie bei jeder anderen Cloud Deploy-Pipeline und ‑Zielen. Wenn jedoch die Phase mit dem Multi-Target erreicht wird, erstellt Cloud Deploy einen Controller-Rollout für das Multi-Target und einen untergeordneten Rollout, um die Anwendung auf jedem untergeordneten Ziel bereitzustellen.
Pub/Sub-Nachrichten als Reaktion auf Cloud Deploy-Vorgänge unterscheiden zwischen Controller-Rollouts und untergeordneten Rollouts.
Beschränkungen
Ein Multi-Ziel kann maximal 100 untergeordnete Ziele haben.
Alle untergeordneten Ziele eines einzelnen Multi-Ziels müssen dieselbe Ziel-Laufzeit haben (z. B. alle GKE oder alle Cloud Run).
In einer Bereitstellungspipeline kann ein untergeordnetes Ziel nur ein übergeordnetes Multi-Ziel haben.
Ein Multi-Ziel kann nicht ohne untergeordnete Ziele sein und kann nicht auf sich selbst oder ein anderes Multi-Ziel als untergeordnete Ziele verweisen.
Sie können ein untergeordnetes Ziel nicht mehrmals in einer einzelnen Bereitstellungspipeline verwenden, aber in verschiedenen Pipelines wiederverwenden.
Wenn die untergeordneten Ziele benutzerdefinierte Ziele sind, müssen sie alle auf dieselbe
CustomTargetTypeverweisen.Standardpools haben Parallelitätslimits, private Pools jedoch nicht.
Wenn Sie eine Bereitstellung für mehrere Ziele vornehmen, werden alle untergeordneten Roll-outs gleichzeitig bereitgestellt, bis zum Cloud Build-Concurrency-Limit. Wenn Sie mehr untergeordnete Ziele als dieses Limit haben, 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 bereitgestellt wird.
Wenn die Ziele außerdem Überprüfungsjobs enthalten, kann es sein, dass einer oder mehrere dieser Überprüfungsjobs 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üssen, haben Sie zwei Möglichkeiten:
Ausführungsumgebungen und parallele Bereitstellung
Für jedes Ziel kann eine nicht standardmäßige Ausführungsumgebung konfiguriert werden.
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 das Multi-Ziel die Standardausführungsumgebung verwendet wird, wird für alle untergeordneten Ziele, die mit einer anderen Ausführungsumgebung konfiguriert sind, diese andere Umgebung verwendet.
Diese Regeln erleichtern die Übertragung von Ausführungsumgebungen von einem Multi-Ziel auf untergeordnete Ziele. Sie müssen die Ausführungsumgebung also nicht für jedes untergeordnete Ziel definieren oder ändern. Sie können die Ausführungsumgebung aber weiterhin für ein oder mehrere untergeordnete Ziele anpassen, wenn dies erforderlich ist.
Weitere Informationen zu Ausführungsumgebungen in Cloud Deploy finden Sie unter Cloud Deploy-Ausführungsumgebungen verwenden.
Paralleles Deployment rückgängig machen
Wenn Sie die Bereitstellung von mehreren parallelen Zielen aus zurücksetzen müssen, führen Sie das Rollback des Multi-Targets wie unter Rollback eines Ziels durchführen beschrieben durch.
Genehmigungen für die parallele Bereitstellung
Wie bei allen Zielen können Sie für die parallele Bereitstellung Genehmigungen konfigurieren. Bei der parallelen Bereitstellung können Sie die Genehmigung jedoch nur für das Multi-Target konfigurieren. Die Genehmigung oder Ablehnung wirkt sich auf alle untergeordneten Ziele aus.
Parallele Bereitstellung in der Google Cloud -Konsole ansehen
Details zu Ihrem Multi-Target, den untergeordneten Targets, dem Controller-Rollout und den untergeordneten Rollouts finden Sie in der Google Cloud -Konsole.
Wenn Sie sich die Liste der Ziele für eine bestimmte Lieferpipeline in den Details der Lieferpipeline ansehen, wird das Multi-Ziel aufgeführt, untergeordnete Ziele jedoch nicht. Wenn Sie sich die Releasedetails ansehen, können Sie jedoch das Controller-Roll-out und die untergeordneten Roll-outs sehen. Controller- und untergeordnete Roll-outs werden auch auf der Seite „Details zur Bereitstellungspipeline“ auf dem Tab 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
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
Kurzanleitung: App gleichzeitig auf mehreren Zielen bereitstellen
Weitere Informationen zum Verwenden von Bereitstellungsparametern
Lesen Sie den Artikel Architektur des Cloud Deploy-Dienstes.