Auf mehreren Zielen gleichzeitig bereitstellen

Mit Cloud Deploy können Sie Ihre Anwendung auf einem Ziel bereitstellen, das für mehrere Ziele konfiguriert ist. Ihre Anwendung wird dann parallel (gleichzeitig) für diese Ziele bereitgestellt. Das Ziel, das Sie als Phase in Ihrer Pipeline festlegen, wird als multi-target bezeichnet und die Ziele, aus denen mehrere Ziele bestehen, als untergeordnete Ziele.

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

Vorteile einer parallelen Bereitstellung

Sie können die parallele Bereitstellung beispielsweise verwenden, um Ihre Anwendung für mehrere Produktionsziele bereitzustellen. In diesem Fall müssen Sie die Bereitstellung nicht nacheinander für jedes Ziel ausführen, da es keinen Fortschritt gibt (z. B. von der Entwicklung über das Staging bis zur Produktion).

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

Für die parallele Bereitstellung verwendete Cloud Deploy-Ressourcen

Die parallele Bereitstellung verwendet die folgenden spezialisierten Cloud Deploy-Ressourcen:

  • Mehrere Ziele

    Ein Mehrfachziel ist ein Ziel, das mit dem Attribut multiTarget auf der obersten Ebene der YAML-Zielkonfigurationsdatei konfiguriert wird. 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 verweisen (Google Kubernetes Engine, GKE Enterprise oder Cloud Run.

  • Controller-Roll-outs

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

    Weitere Informationen dazu, was mit einem Controller-Roll-out möglich ist und was nicht, finden Sie unter Einschränkungen.

  • Untergeordnete Roll-outs

    Unter Einschränkungen finden Sie weitere Informationen dazu, was mit einem untergeordneten Roll-out möglich ist und was nicht.

Parallele Bereitstellung einrichten

Bei der Einrichtung einer parallelen Bereitstellung definieren Sie ein Mehrfachziel und die Anzahl der erforderlichen untergeordneten Ziele (bis zum Limit). Die Zieldefinitionen sind bis auf Folgendes dieselben wie für alle Ziele:

  • Dazu gehört unter anderem das Attribut multiTarget.
  • Untergeordnete Ziele enthalten nicht das Attribut multiTarget, werden aber von mehreren Zielen über das Attribut multiTarget.targetIds referenziert.
  • Sie können mehrere Ziele für die Genehmigung konfigurieren, aber nicht die untergeordneten Ziele, die requireApproval:true nicht enthalten dürfen.

Mehrere Ziele und untergeordnete Ziele können benutzerdefinierte Konfigurationen für Ausführungsumgebung enthalten. Wenn ein untergeordnetes Ziel keine Ausführungsumgebung angibt, übernimmt es die in der Definition für mehrere Ziele definierte Umgebung oder die Standardeinstellung. Weitere Informationen finden Sie unter Ausführungsumgebungen und parallele Bereitstellung.

Mehrere Ziele konfigurieren

Ein Mehrfachziel 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-Ziel kann nicht die Attribute gke, run oder anthosCluster haben. Die Konfiguration für mehrere Ziele ist unabhängig von der Laufzeit, für die Sie die Bereitstellung vornehmen, gleich.

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 im Attribut stages.targetId verwendet wird.

  • CHILD_TARGET1, CHILD_TARGET2,...CHILD_TARGETn sind die Namen der untergeordneten Ziele, für die dieses Multi-Ziel bereitgestellt wird. Jeder Name entspricht dem Attribut name in der untergeordneten Zieldefinition.

Wenn das Attribut multiTarget.targetIds vorhanden ist, wird dieses Ziel zu einem Multi-Ziel.

Untergeordnete Ziele konfigurieren

Konfigurieren Sie für jedes in der Konfiguration für mehrere Ziele identifizierte Ziel 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 des untergeordneten Ziels. Der Name entspricht einem Mitglied in der Liste der Ziele im Attribut multiTarget.targetIds in der Definition für mehrere Ziele.

  • Der Wert des Attributs 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 ist genauso konfiguriert wie ein standardmäßiges GKE-Ziel. Das einzige, was dieses Ziel zu einem untergeordneten Ziel macht, ist, dass es im Attribut multiTarget.targetIds in den Multi-Zielen darauf verweist.

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 des untergeordneten Ziels. Der Name entspricht einem Mitglied in der Liste der Ziele im Attribut 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 ist wie ein standardmäßiges Cloud Run-Ziel konfiguriert. Das einzige, was dieses Ziel zu einem untergeordneten Ziel macht, ist, dass es im Attribut multiTarget.targetIds in den Multi-Zielen darauf verweist.

GKE Enterprise

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 GKE Enterprise-Standardziel konfiguriert. Das einzige, was dieses Ziel zu einem untergeordneten Ziel macht, ist, dass es im Attribut multiTarget.targetIds in den Multi-Zielen darauf verweist.

Bereitstellungsparameter an Ziele übergeben

Sie können zwischen untergeordneten Zielen unterscheiden, indem Sie Parameter in das Manifest und Werte in die Definition der Bereitstellungspipeline aufnehmen. Diese Werte können basierend auf dem Labelabgleich der entsprechenden Ziele separat auf die separaten Manifeste angewendet werden.

Beispielsweise können Sie für jedes untergeordnete Ziel eine andere Anzahl von Replikaten wünschen. Dazu nehmen Sie die Parameter und Werte in den Fortschritt der Bereitstellungspipeline auf, zusammen mit den Labels der untergeordneten Ziele, die mit jedem Parameter/Wert-Paar übereinstimmen.

Weitere Informationen zu Bereitstellungsparametern

Release erstellen

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

Der Lebenszyklus der Bereitstellungspipeline ist derselbe wie bei jeder Cloud Deploy-Pipeline und den Cloud Deploy-Zielen. Wenn sie jedoch die Phase mit mehreren Zielen erreicht, erstellt Cloud Deploy ein Controller-Rollout für das mehrere Ziele und ein untergeordnetes Rollout, um die Anwendung für jedes untergeordnete Ziel bereitzustellen.

Mit Pub/Sub-Nachrichten als Reaktion auf Cloud Deploy-Vorgänge wird zwischen Controller-Roll-outs und untergeordneten Roll-outs unterschieden.

Beschränkungen

  • Ein Mehrfachziel darf nicht mehr als 50 untergeordnete Ziele haben.

  • Alle untergeordneten Ziele eines einzelnen Mehrfachziels müssen dieselbe Ziellaufzeit haben (z. B. alle GKEs oder alle GKE Enterprise).

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

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

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

  • Standardpools haben Limits für die Nebenläufigkeit, private Pools jedoch nicht.

    Wenn Sie die Bereitstellung für ein Multi-Ziel vornehmen, werden alle untergeordneten Roll-outs gleichzeitig bis zum Cloud Build-Limit für die Nebenläufigkeit bereitgestellt. Wenn die Anzahl Ihrer untergeordneten Ziele diesen Grenzwert überschreitet, 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 bereitstellt.

    Wenn die Ziele außerdem Prüfjobs enthalten, ist es möglich, dass einer oder mehrere dieser Prüfjobs gestartet werden, bevor die Anwendung für alle untergeordneten Ziele bereitgestellt wurde.

    Wenn die gleichzeitige Bereitstellung für mehr Ziele möglich sein muss, als 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 nicht standardmäßige Ausführungsumgebung verwendet wird.

  • Wenn das mehrere 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 das mehrere Ziele die standardmäßige Ausführungsumgebung verwendet, wird von jedem untergeordneten Ziel, das mit einer nicht standardmäßigen Ausführungsumgebung konfiguriert ist, diese nicht standardmäßige Ausführungsumgebung verwendet.

Diese Regeln erleichtern die Weitergabe von Ausführungsumgebungen an untergeordnete Ziele von einem Multi-Ziel aus, sodass Sie die Ausführungsumgebung nicht für jedes untergeordnete Ziel definieren oder ändern müssen. Gleichzeitig können Sie die Ausführungsumgebung bei Bedarf für ein oder mehrere untergeordnete Ziele anpassen.

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

Rollback einer parallelen Bereitstellung durchführen

Wenn Sie für eine Bereitstellung von mehreren parallelen Zielen ein Rollback durchführen müssen, führen Sie für die Bereitstellung mit mehreren Zielen ein Rollback aus, wie unter Rollback für ein Ziel durchführen beschrieben.

Genehmigungen für die parallele Bereitstellung

Wie bei allen Zielen können Sie die parallele Bereitstellung so konfigurieren, dass Genehmigungen erforderlich sind. Bei einer parallelen Bereitstellung können Sie die Genehmigung jedoch nur für die Multi-Ziele konfigurieren. Die Genehmigung oder Ablehnung wirkt sich zusammen auf alle untergeordneten Ziele aus.

Parallele Bereitstellung in der Google Cloud Console ansehen

In der Google Cloud Console können Sie Details zu Ihren untergeordneten Zielen, den Controller-Rollouts und den untergeordneten Roll-outs ansehen.

Wenn Sie die Liste der Ziele für eine bestimmte Bereitstellungspipeline aufrufen, werden in den Details zur Bereitstellungspipeline nur die Ziele mit mehreren Zielen aufgeführt, die untergeordneten Ziele jedoch nicht. In den Releasedetails sehen Sie jedoch das Controller-Rollout und die untergeordneten Rollouts. Controller- und untergeordnete Rollouts werden auch auf der Detailseite der Bereitstellungspipeline auf dem Tab Rollouts aufgeführt.

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

Parallele Bereitstellung mit einer Bereitstellungsstrategie verwenden

Die Bereitstellung kann parallel erfolgen, wenn Sie eine Canary-Bereitstellungsstrategie verwenden. Weitere Informationen finden Sie unter Parallele Bereitstellung mit einer Canary-Bereitstellungsstrategie verwenden.

Nächste Schritte