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 vonmultiTarget.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 AttributsmultiTarget.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...
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.MEMBERSHIP_NAME ist der Name, den Sie bei der Registrierung des Anthos-Nutzerclusters für eine Flotte ausgewählt haben.
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:
Fordern Sie eine Erhöhung der Anzahl gleichzeitiger Builds an, die Sie ausführen können.
Richten Sie einen privaten Pool ein und konfigurieren Sie Ihre Ziele für die Verwendung dieses Pools.
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
Kurzanleitung: App gleichzeitig für mehrere Ziele bereitstellen
Siehe das Schema für die Zielkonfiguration.
Lesen Sie den Artikel Google Cloud Deploy-Dienstarchitektur.