Für mehrere Ziele gleichzeitig bereitstellen

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Mit Google Cloud Deploy können Sie das Ziel auf einem Ziel bereitstellen, das für die Darstellung mehrerer Ziele konfiguriert ist. Ihre Anwendung wird dann parallel auf diesen Zielen bereitgestellt. Das Ziel, das Sie als Phase in Ihrer Pipeline angeben, wird als Multi-Target bezeichnet. Die darin enthaltenen Ziele werden als untergeordnete Ziele bezeichnet.

Sie können die parallele Bereitstellung mit jedem Zieltyp verwenden, der von Google Cloud Deploy unterstützt wird, einschließlich Google Kubernetes Engine, Cloud Run und Anthos.

Gründe für die parallele Bereitstellung

Sie können die parallele Bereitstellung beispielsweise verwenden, um Ihre Anwendung auf mehreren Produktionszielen bereitzustellen. In diesem Fall müssen Sie nicht für jedes Ziel nacheinander bereitstellen, da es keinen Fortschritt gibt (z. B. von der Entwicklung über die Staging-Phase zur Produktion).

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

Für die parallele Bereitstellung verwendete Google Cloud Deploy-Ressourcen

Bei der parallelen Bereitstellung werden die folgenden spezialisierten Ressourcen von Google Cloud Deploy verwendet:

  • Mehrere Ziele

    Ein Ziel mit mehreren Zielen ist das Ziel, das mit dem Attribut multiTarget auf der obersten Ebene der YAML-Zielkonfigurationskonfiguration 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 von einem Mehrfachziel als multiTarget.targetIds verwiesen wird. Das untergeordnete Element muss auch auf einen unterstützten Zieltyp (Google Kubernetes Engine, Anthos oder Cloud Run) verweisen.

  • Controller-Roll-outs

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

    Unter Einschränkungen finden Sie weitere Informationen dazu, was Sie mit einem Controller-Rollout tun können und was nicht.

  • Untergeordnete Roll-outs

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

Parallele Bereitstellung einrichten

Bei der Einrichtung der parallelen Bereitstellung werden ein einzelnes Ziel und die Anzahl der erforderlichen untergeordneten Ziele (bis zum Limit) definiert. Die Zieldefinitionen sind bis auf die folgenden identisch:

  • Zu mehreren Zielen gehört die Property multiTarget.
  • Untergeordnete Ziele enthalten nicht das Attribut multiTarget, sondern werden von dem Multi-Ziel mithilfe des Attributs multiTarget.targetIds referenziert.
  • Sie können das Multi-Ziel für die Genehmigung konfigurieren, aber nicht die untergeordneten Ziele, die requireApproval:true nicht enthalten dürfen.

Mehrfachziele und untergeordnete Ziele können benutzerdefinierte Konfigurationen für die Ausführungsumgebung enthalten. Wenn für ein untergeordnetes Ziel keine Ausführungsumgebung angegeben ist, übernimmt es diejenige, die in der Definition mit mehreren Zielen definiert ist, oder die Standardumgebung. Weitere Informationen finden Sie unter Ausführungsumgebungen und parallele Bereitstellung.

Mehrere Ziele konfigurieren

Ein Mehrziel ist ein einzelnes Ziel, das als Phase in Ihrer Bereitstellungspipeline identifiziert wird, aber auf ein oder mehrere untergeordnete Ziele verweist.

Die Konfiguration mit mehreren Zielen enthält die Property multiTarget. Ein Ziel mit mehreren Zielen darf nicht die Attribute gke, run oder anthosCluster haben. Die Konfiguration für ein Ziel mit mehreren Zielen bleibt immer gleich, unabhängig davon, für welche Laufzeit Sie die Bereitstellung vornehmen.

Erstellen Sie in der YAML-Datei für die Bereitstellungspipeline 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-Ziels, der in der Definition der Bereitstellungspipeline stages.targetId verwendet wird.

  • CHILD_TARGET1, CHILD_TARGET2,...CHILD_TARGETn sind die Namen der untergeordneten Ziele, für die dieses Ziel mit mehreren Zielen bereitgestellt wird. Jeder Name entspricht dem Attribut name in der Definition des untergeordneten Ziels.

Das Attribut multiTarget.targetIds macht dieses Ziel zu einem Multi-Ziel.

Untergeordnete Ziele konfigurieren

Konfigurieren Sie für jedes Ziel, das in Ihrer Konfiguration mit mehreren Zielen als untergeordnetes Element identifiziert wurde, ein weiteres Ziel als untergeordnetes Ziel:

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

  • CHILD_TARGET1 ist der Name dieses untergeordneten Ziels. Der Name entspricht einem Mitglied in der Liste der Ziele im Attribut multiTarget.targetIds in der Definition mehrerer Ziele.

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

Dieses Ziel ist wie ein GKE-Standardziel konfiguriert. Das einzige, was dieses Element zu einem untergeordneten Ziel macht, ist, dass es vom Attribut multiTarget.targetIds im Multi-Ziel 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 im Attribut multiTarget.targetIds in der Definition mehrerer Ziele.

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

Dieses Ziel ist genauso konfiguriert wie ein Cloud Run-Standardziel. Das einzige, was dieses Element zu einem untergeordneten Ziel macht, ist, dass es im Attribut mit mehreren Zielen von dem Attribut multiTarget.targetIds referenziert wird.

Anthos

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...

Dieses Ziel ist wie ein Anthos-Standardziel konfiguriert. Das einzige, was dieses Element zu einem untergeordneten Ziel macht, ist, dass es im Attribut mit mehreren Zielen von dem Attribut multiTarget.targetIds referenziert wird.

Release erstellen

Wenn Sie mehrere Ziele und untergeordnete Ziele konfiguriert haben, erstellen Sie die Bereitstellungspipeline und Zielressourcen und dann wie gewohnt einen Release.

Der Lebenszyklus der Bereitstellungspipeline ist derselbe wie bei allen Google Cloud Deploy-Pipelines und -Zielen, mit der Ausnahme, dass Google Cloud Deploy für die Phase mit mehreren Zielen einen Controller-Roll-out und einen untergeordneten Roll-out für die Bereitstellung der Anwendung für jedes untergeordnete Ziel erstellt.

Pub/Sub-Nachrichten als Reaktion auf Google Cloud Deploy-Vorgänge, die zwischen Controller-Rollouts und untergeordneten Rollouts unterscheiden.

Beschränkungen

  • Ein Ziel mit mehreren Zielen darf nicht mehr als 50 untergeordnete Ziele aufweisen.

  • Innerhalb einer Bereitstellungspipeline kann ein untergeordnetes Ziel nur ein übergeordnetes Mehrfachziel haben.

  • Ein Ziel mit mehreren Zielen kann nicht untergeordnete Elemente sein und es kann nicht auf sich selbst oder ein anderes Ziel als untergeordnete Ziele verweisen.

  • Sie können ein untergeordnetes Ziel in einer einzelnen Bereitstellungspipeline nur einmal verwenden, können es jedoch in einer anderen Pipeline wiederverwenden.

  • Standardpools haben Gleichzeitigkeitslimits, private Pools jedoch nicht.

    Bei einem Deployment mit mehreren Zielen werden alle untergeordneten Roll-outs gleichzeitig bis zum Cloud Build-Gleichzeitlimit bereitgestellt. Wenn Sie mehr untergeordnete Ziele als dieses Limit haben, werden die Bereitstellungsjobs für einige Ziele erst ausgeführt, wenn die anderen abgeschlossen sind. Das bedeutet, dass Google Cloud Deploy in diesem Fall nicht gleichzeitig für alle untergeordneten Ziele bereitgestellt wird.

    Wenn die Ziele außerdem Überprüfungsjobs enthalten, kann es passieren, dass einer oder mehrere dieser Überprüfungsjobs gestartet werden, bevor die Anwendung für alle untergeordneten Ziele bereitgestellt wurde.

    Wenn es möglich ist, gleichzeitig mehr Ziele bereitzustellen als in der Cloud Build-Dokumentation angegeben, haben Sie zwei Möglichkeiten:

Ausführungsumgebungen und parallele Bereitstellung

Jedes Ziel kann so konfiguriert werden, dass eine nicht standardmäßige Ausführungsumgebung verwendet wird.

  • 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 von der Multi-Ziel-Umgebung

  • Wenn das Multi-Ziel die Standard-Ausführungsumgebung verwendet, verwendet jedes untergeordnete Ziel, das mit einer nicht standardmäßigen Ausführungsumgebung konfiguriert ist, diese nicht-standardmäßige.

Mit diesen Regeln ist es einfacher, Ausführungsumgebungen für mehrere Ziele als untergeordnete Ziele festzulegen. Sie müssen die Ausführungsumgebung also nicht für jedes untergeordnete Ziel definieren oder ändern und Sie können die Ausführungsumgebung für ein oder mehrere untergeordnete Ziele nach Bedarf anpassen.

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

Parallele Bereitstellung rückgängig machen

Wenn Sie ein Deployment von mehreren parallelen Zielen rückgängig machen müssen, führen Sie ein Rollback des Multi-Ziels aus, wie unter Rollback eines Ziels beschrieben.

Genehmigungen für die parallele Bereitstellung

Wie bei jedem Ziel können Sie für Ihre parallele Bereitstellung Genehmigungen festlegen. Bei der parallelen Bereitstellung können Sie die Genehmigung jedoch nur für das Multi-Ziel konfigurieren. Die Genehmigung oder Ablehnung betrifft alle untergeordneten Ziele zusammen.

Parallele Bereitstellung in der Google Cloud Console ansehen

Sie können Details für Ihre Mehrfach-Ziel-, untergeordneten Ziele, den Controller-Rollout und die untergeordneten Roll-outs in der Google Cloud Console ansehen.

Wenn Sie die Liste der Ziele für eine bestimmte Bereitstellungspipeline aufrufen, wird in den Bereitstellungspipeline-Details das Multi-Ziel aufgeführt, das untergeordnete Ziel jedoch nicht. In den Release-Details sehen Sie jedoch den Controller-Rollout und die untergeordneten Rollouts. Außerdem sind die Controller und untergeordneten Roll-outs auf der Detailseite der Bereitstellungspipeline auf dem Tab Roll-outs aufgeführt.

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

Nächste Schritte