Gleichzeitig auf mehreren Zielen bereitstellen

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 parallel (gleichzeitig) auf diesen Zielen bereitgestellt. Das Ziel, das Sie als Phase in Ihrer Pipeline identifizieren, wird als Multi-Target bezeichnet. Die Ziele, aus denen das Multi-Target 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 die Bereitstellung nicht nacheinander auf jedem Ziel ausführen, da es keine Progression gibt (z. B. von der Entwicklung über die Staging- zur Produktionsumgebung).

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

Cloud Deploy-Ressourcen für die parallele Bereitstellung

Bei der parallelen Bereitstellung werden die folgenden speziellen Cloud Deploy-Ressourcen verwendet:

  • Multi-Targets

    Ein Multi-Target ist ein Ziel, das mit der Property multiTarget konfiguriert ist, auf der obersten Ebene der Zielkonfigurations-YAML. Anstatt auf den Laufzeitcluster oder -dienst 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-Target als multiTarget.targetIds verwiesen wird.

  • Controller-Roll-outs

    Ein Controller-Roll-out ist ein Roll-out, das dem Multi-Target entspricht.

    Weitere Informationen zu den Möglichkeiten und Einschränkungen bei der Verwendung eines Controller-Roll-outs finden Sie unter Beschränkungen.

  • Untergeordnete Roll-outs

    Weitere Informationen zu den Möglichkeiten und Einschränkungen bei der Verwendung eines untergeordneten Roll-outs finden Sie unter Beschränkungen.

Parallele Bereitstellung einrichten

Zum Einrichten der parallelen Bereitstellung müssen Sie ein Multi-Target und die Anzahl der benötigten untergeordneten Ziele definieren (bis zum Limit). Zieldefinitionen sind für alle Ziele gleich, mit Ausnahme der folgenden:

  • Multi-Targets enthalten die Property multiTarget.
  • Untergeordnete Ziele enthalten nicht die Property multiTarget, sondern werden vom Multi-Target mit der Property multiTarget.targetIds referenziert.
  • Sie können das Multi-Target für die Genehmigung konfigurieren, nicht aber die untergeordneten Ziele, die nicht requireApproval:true enthalten können.

Multi-Targets und untergeordnete Ziele können benutzerdefinierte Ausführungsumgebung konfigurationen enthalten. Wenn für ein untergeordnetes Ziel keine Ausführungsumgebung angegeben ist, wird die in der Multi-Target-Definition definierte oder die Standardumgebung übernommen. Weitere Informationen finden Sie unter Ausführungsumgebungen und parallele Bereitstellung.

Multi-Target konfigurieren

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

Die Multi-Target-Konfiguration enthält die Property multiTarget. Ein Multi-Target kann nicht die Properties gke, run oder anthosCluster haben. Die Konfiguration für ein Multi-Target ist unabhängig davon, in welcher Laufzeitumgebung Sie die Bereitstellung ausführen.

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 dieser YAML-Datei...

  • TARGET_NAME ist der Name dieses Multi-Targets, der in der Definition der Lieferpipeline, stages.targetId Property verwendet wird.

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

Durch das Vorhandensein der Property multiTarget.targetIds wird dieses Ziel zu einem Multi-Target.

Untergeordnete Ziele konfigurieren

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

Erstellen Sie in der YAML-Datei Ihrer Lieferpipeline 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 dieser YAML-Datei...

  • 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 Multi-Target-Definition.

  • Der Wert der Property 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 wird genauso konfiguriert wie ein Standard-GKE-Ziel. Das Einzige, was es zu einem untergeordneten Ziel macht, ist, dass es von der Property multiTarget.targetIds im Multi-Target 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 dieser YAML-Datei...

  • 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 Multi-Target-Definition.

  • Der Wert der Property 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 wird genauso konfiguriert wie ein Standard-Cloud Run-Ziel. Das Einzige, was es zu einem untergeordneten Ziel macht, ist, dass es von der Property multiTarget.targetIds im Multi-Target 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 dieser YAML-Datei...

  • 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 Multi-Target-Definition.

  • 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 dieser YAML-Datei...

  • 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 Multi-Target-Definition.

  • CUSTOM_TARGET_TYPE_NAME ist der Name des benutzerdefinierten Zieltyps , der von diesem Ziel verwendet wird.

Bereitstellungsparameter an Ziele übergeben

Sie können zwischen untergeordneten Zielen unterscheiden, indem Sie Parameter in Ihr Manifest und Werte in Ihre Lieferpipeline-Definition aufnehmen. Diese Werte können basierend auf dem Labelabgleich für die entsprechenden Ziele separat auf die einzelnen Manifeste angewendet werden. separat

Beispielsweise möchten Sie möglicherweise eine unterschiedliche Anzahl von Replikaten für jedes untergeordnete Ziel. Dazu müssen Sie die Parameter und Werte in die Liefer pipeline's Progression aufnehmen und Labels für die untergeordneten Ziele hinzufügen, die für jedes Parameter-Wert-Paar abgeglichen werden sollen.

Weitere Informationen zu Bereitstellungsparametern.

Release erstellen

Nachdem Sie ein Multi-Target und untergeordnete Ziele konfiguriert haben, erstellen Sie wie gewohnt die Lieferpipeline und die Zielressourcen, und dann ein Release.

Der Lebenszyklus der Lieferpipeline ist derselbe wie bei jeder Cloud Deploy-Pipeline und allen Zielen. Wenn die Phase mit dem Multi-Target erreicht wird, erstellt Cloud Deploy jedoch ein Controller-Roll-out für das Multi-Target und ein untergeordnetes Roll-out, um die Anwendung auf jedem untergeordneten Ziel bereitzustellen.

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

Beschränkungen

  • Ein Multi-Target kann maximal 100 untergeordnete Ziele haben.

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

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

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

  • Sie können ein untergeordnetes Ziel nicht mehrmals innerhalb einer einzelnen Lieferpipeline verwenden, aber in verschiedenen Pipelines wiederverwenden.

  • Wenn die untergeordneten Ziele benutzerdefinierte Ziele sind, müssen sie alle auf denselben CustomTargetType verweisen.

  • Standardpools haben Limits für die Parallelität, private Pools nicht.

    Wenn Sie eine Bereitstellung auf einem Multi-Target ausführen, werden alle untergeordneten Roll-outs gleichzeitig bereitgestellt, bis zum Limit für die Parallelität von Cloud Build. Wenn Sie mehr untergeordnete Ziele haben als dieses Limit, werden die Bereitstellungsjobs für einige Ziele erst ausgeführt, wenn andere abgeschlossen sind. Das bedeutet, dass Cloud Deploy in diesem Fall nicht gleichzeitig auf allen untergeordneten Zielen bereitgestellt wird.

    Wenn die Ziele Überprüfungsjobs enthalten, ist es außerdem möglich, dass einer oder mehrere dieser Überprüfungsjobs gestartet werden, bevor die Anwendung auf allen untergeordneten Zielen bereitgestellt wurde.

    Wenn Sie gleichzeitig auf mehr Zielen bereitstellen müssen, als im Limit in der Cloud Build-Dokumentation angegeben ist, haben Sie zwei Möglichkeiten:

Ausführungsumgebungen und parallele Bereitstellung

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

  • Wenn das Multi-Target eine andere als die Standardausführungsumgebung hat, übernehmen alle untergeordneten Ziele, die die Standardausführungsumgebung verwenden, die andere Ausführungsumgebung vom Multi-Target.

  • Wenn das Multi-Target die Standardausführungsumgebung verwendet, verwendet jedes untergeordnete Ziel, das mit einer anderen Ausführungsumgebung konfiguriert ist, diese andere Ausführungsumgebung.

Diese Regeln erleichtern die Weitergabe von Ausführungsumgebungen an untergeordnete Ziele von einem Multi-Target. So müssen Sie die Ausführungsumgebung 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 Ausführungsumgebungen von Cloud Deploy verwenden.

Rollback einer parallelen Bereitstellung durchführen

Wenn Sie eine Bereitstellung von mehreren parallelen Zielen rückgängig machen müssen, machen Sie das Multi-Target rückgängig, wie unter Ziel rückgängig machen beschrieben.

Genehmigungen für die parallele Bereitstellung

Wie bei allen Zielen können Sie auch für Ihre parallele Bereitstellung Genehmigungenkonfigurieren. 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

Sie können sich Details zu Ihrem Multi-Target, den untergeordneten Zielen, dem Controller Roll-out und den untergeordneten Roll-outs in der Google Cloud Konsole ansehen.

Wenn Sie die Liste der Ziele für eine bestimmte Lieferpipeline auf der Seite „Details zur Lieferpipeline“ aufrufen, wird das Multi-Target aufgeführt, nicht aber die untergeordneten Ziele. Wenn Sie sich jedoch die Releasedetails ansehen, sehen Sie das Controller-Roll-out und die untergeordneten Roll-outs. Controller- und untergeordnete Roll-outs werden auch auf der Seite „Details zur Lieferpipeline“ 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 die Bereitstellung parallel ausführen, wenn Sie eine Canary-Bereitstellungsstrategie verwenden. Weitere Informationen finden Sie unter Parallele Bereitstellung mit einer Canary-Bereitstellungsstrategie verwenden.

Nächste Schritte