Gleichzeitig auf mehreren Zielen bereitstellen

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 multiTarget auf der obersten Ebene der YAML-Datei für die Zielkonfiguration konfiguriert ist. Anstatt auf den Laufzeitcluster oder -dienst zu verweisen, wird mit multiTarget.targetIds auf ein oder mehrere andere Ziele verwiesen.

  • Untergeordnete Ziele

    Ein untergeordnetes Ziel ist ein beliebiges Ziel, auf das in einem Multi-Ziel als multiTarget.targetIds verwiesen 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 Attribut multiTarget.targetIds vom Multi-Ziel referenziert.
  • Sie können das Multi-Target für die Genehmigung konfigurieren, nicht aber die untergeordneten Targets, die requireApproval:true nicht 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.targetIds in der Definition für mehrere Ziele.

  • Der Wert der Eigenschaft 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 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.targetIds in der Definition für mehrere Ziele.

  • 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 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.targetIds in 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.targetIds in 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 CustomTargetType verweisen.

  • 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