Die Cloud Deploy-Konfigurationsdatei oder -Dateien definieren die Bereitstellungspipeline, die Ziele für die Bereitstellung und den Fortschritt dieser Ziele.
Die Konfigurationsdatei für die Bereitstellungspipeline kann Zieldefinitionen enthalten oder sich in einer oder mehreren separaten Dateien befinden. Konventionsgemäß wird eine Datei, die sowohl die Konfiguration der Bereitstellungspipeline als auch die Zielkonfigurationen enthält, als clouddeploy.yaml
bezeichnet. Eine Pipelinekonfiguration ohne Ziele heißt delivery-pipeline.yaml
. Sie können diesen Dateien
jedoch einen beliebigen Namen geben.
Aufbau
Cloud Deploy verwendet zwei Hauptkonfigurationsdateien:
- Definition der Bereitstellungspipeline
- Zieldefinition
Dabei kann es sich um separate Dateien handeln oder die Bereitstellungspipeline und die Ziele können in derselben Datei konfiguriert werden.
Struktur einer Konfigurationsdatei für eine Lieferpipeline.
Die folgende Konfiguration enthält eine Zieldefinition:
# Delivery pipeline config
apiVersion: deploy.cloud.google.com/v1
kind: DeliveryPipeline
metadata:
name:
annotations:
labels:
description:
suspended:
serialPipeline:
stages:
- targetId:
profiles: []
# Deployment strategies
# One of:
# standard:
# canary:
# See the strategy section in this document for details.
strategy:
standard:
verify:
predeploy:
actions: []
postdeploy:
actions: []
deployParameters:
- values:
matchTargetLabels:
- targetId:
profiles: []
strategy:
deployParameters:
---
# Target config
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name:
annotations:
labels:
description:
multiTarget:
targetIds: []
deployParameters:
requireApproval:
#
# Runtimes
# one of the following runtimes:
gke:
cluster:
internalIp:
proxyUrl:
#
# or:
anthosCluster:
membership:
#
# or:
run:
location:
#
# or:
customTarget:
customTargetType:
#
# (End runtimes. See documentation in this article for more details.)
#
executionConfigs:
- usages:
- [RENDER | PREDEPLOY | DEPLOY | VERIFY | POSTDEPLOY]
workerPool:
serviceAccount:
artifactStorage:
executionTimeout:
---
# Custom target type config
apiVersion: deploy.cloud.google.com/v1
kind: CustomTargetType
metadata:
name:
annotations:
labels:
description:
customActions:
renderAction:
deployAction:
includeSkaffoldModules:
- configs:
# either:
googleCloudStorage:
source:
path:
# or:
git:
repo:
path:
ref:
---
# Automation config
apiVersion: deploy.cloud.google.com/v1
kind: Automation
metadata:
name:
labels:
annotations:
description:
suspended:
serviceAccount:
selector:
- target:
id:
# or
labels:
rules:
- [RULE_TYPE]:
name:
[RULE-SPECIFIC_CONFIG]
Diese YAML-Datei besteht aus drei Hauptkomponenten:
Hauptlieferpipeline und Fortschritt
Die Konfigurationsdatei kann eine beliebige Anzahl an Pipelinedefinitionen enthalten.
Zieldefinitionen
Der Einfachheit halber wird in diesem Beispiel nur ein Ziel gezeigt, es kann aber beliebig viele davon geben. Außerdem können Ziele in einer oder mehreren separaten Dateien definiert werden.
Definitionen benutzerdefinierter Zieltypen
Benutzerdefinierte Ziele – erfordern eine Definition des benutzerdefinierten Zieltyps. Wie bei Zielen und Automatisierungen können benutzerdefinierte Zieltypen in derselben Datei wie die Bereitstellungspipeline oder in einer separaten Datei definiert werden.
Automatisierungsdefinitionen
Sie können beliebige Bereitstellungsautomatisierungen in derselben Datei wie Ihre Bereitstellungspipeline und Ziele oder in einer oder mehreren separaten Dateien erstellen. Der Einfachheit halber wird hier nur eine
Automation
angezeigt, Sie können aber beliebig viele erstellen.
Diese Komponenten werden im Rest dieses Dokuments definiert.
Pipelinedefinition und -fortschritt
Zusätzlich zu Pipeline-Metadaten wie name
enthält die Hauptpipeline-Definition eine Liste von Verweisen auf Ziele in der Reihenfolge der Deployment-Sequenz. Das heißt, das erste aufgelistete Ziel ist das erste Bereitstellungsziel. Nach der Bereitstellung auf diesem Ziel wird der Release auf das nächste Ziel in der Liste hochgestuft.
Im Folgenden finden Sie die Konfigurationsattribute für eine Bereitstellungspipeline, ohne Zieldefinitionen.
metadata.name
Das name
-Feld verwendet einen String, der pro Projekt und Standort einmalig sein muss.
metadata.annotations
und metadata.labels
Die Konfiguration der Lieferpipeline kann Annotationen und Labels enthalten. Annotationen und Labels werden mit der Ressource der Lieferpipeline gespeichert, nachdem die Pipeline registriert wurde.
Weitere Informationen finden Sie unter Labels und Annotationen mit Cloud Deploy verwenden.
description
Beliebiger String, der diese Lieferpipeline beschreibt. Diese Beschreibung wird in den Details zur Bereitstellungspipeline in der Google Cloud Console angezeigt.
suspended
Ein boolescher Wert, mit dem true
die Bereitstellungspipeline sperrt, sodass sie nicht zum Erstellen, Hochstufen, Rollback oder erneuten Bereitstellen von Releases verwendet werden kann.
Wenn die Bereitstellungspipeline ausgesetzt ist, können Sie ein aus dieser Pipeline erstelltes Rollout weder genehmigen noch ablehnen.
Der Standardwert ist false
.
serialPipeline
Der Anfang der Definition einer Pipeline für die Bereitstellung serieller Fortsetzungen. Diese Stanza ist erforderlich.
stages
Liste aller Ziele, für die diese Lieferpipeline konfiguriert wurde.
Die Liste muss in der gewünschten Reihenfolge der Auslieferung angeordnet sein. Beispiel: Wenn Sie Ziele mit den Namen dev
, staging
und production
haben, listen Sie diese in dieser Reihenfolge auf, damit Ihre erste Bereitstellung für dev
und Ihre letzte Bereitstellung für production
erfolgt.
Füllen Sie jedes stages.targetId
-Feld mit dem Wert des Felds metadata.name
in der entsprechenden Zieldefinition. Fügen Sie unter targetId
profiles
hinzu:
serialPipeline:
stages:
- targetId:
profiles: []
strategy:
standard:
verify:
targetId
Gibt das spezifische Ziel an, das für diese Phase der Lieferpipeline verwendet werden soll.
Der Wert ist das metadata.name
-Attribut aus der Zieldefinition.
Wenn strategy.standard.verify
auf true
gesetzt ist, wird die Bereitstellungsprüfung für das Ziel aktiviert. Wenn keine Bereitstellungsstrategie angegeben ist, wird die Bereitstellungsstrategie standard
verwendet, wobei die Prüfung auf false
gesetzt ist.
profiles
Erstellt eine Liste mit null oder mehr Skaffold-Profilnamen aus skaffold.yaml
.
Cloud Deploy verwendet das Profil mit skaffold render
beim Erstellen des Release. Mit Skaffold-Profilen können Sie die Konfiguration für verschiedene Ziele variieren und nur eine einzige Konfigurationsdatei verwenden.
strategy
Enthält Attribute zum Festlegen einer Bereitstellungsstrategie. Die folgenden Strategien werden unterstützt:
standard:
Die Anwendung wird vollständig auf dem angegebenen Ziel bereitgestellt.
Dies ist die standardmäßige Bereitstellungsstrategie. Wenn Sie
strategy
weglassen, verwendet Cloud Deploy die Bereitstellungsstrategiestandard
.canary:
Bei einem Canary-Deployment stellen Sie eine neue Version der Anwendung nach und nach bereit. Dabei wird die bereits ausgeführte Version in prozentualen Schritten ersetzt (z. B. 25%, dann 50%, dann 75 % und dann vollständig).
Die Bereitstellungsstrategie wird pro Ziel definiert. Angenommen, Sie haben eine Canary-Strategie für das Ziel prod
, aber eine Standardstrategie (keine strategy
angegeben) für Ihre anderen Ziele.
Weitere Informationen finden Sie unter Bereitstellungsstrategie verwenden.
strategy
Konfiguration
In diesem Abschnitt werden die Konfigurationselemente für strategy
für jede unterstützte Laufzeit aufgeführt.
Standardbereitstellungsstrategie
Die Standardstrategie umfasst nur die folgenden Elemente:
strategy:
standard:
verify: true|false
Das Attribut verify
ist optional. Der Standardwert ist false
. Das bedeutet, dass es für die resultierenden Roll-outs keine verify-Phase gibt.
Für eine Standard-Bereitstellungsstrategie können Sie das Element strategy
weglassen.
Canary-Bereitstellungsstrategie
In den folgenden Abschnitten wird die Konfiguration einer Strategie für eine Canary-Bereitstellung für jede von Cloud Deploy unterstützte Laufzeit beschrieben.
Für Cloud Run-Ziele
strategy:
canary:
runtimeConfig:
cloudRun:
automaticTrafficControl: true | false
canaryDeployment:
percentages: [PERCENTAGES]
verify: true | false
Für GKE- und GKE Enterprise-Ziele
Die folgende YAML-Datei zeigt, wie Sie eine Bereitstellungsstrategie für ein GKE- oder GKE Enterprise-Ziel mithilfe eines dienstbasierten Netzwerks konfigurieren:
canary:
runtimeConfig:
kubernetes:
serviceNetworking:
service: "SERVICE_NAME"
deployment: "DEPLOYMENT_NAME"
disablePodOverprovisioning: true | false
canaryDeployment:
percentages: [PERCENTAGES]
verify: true | false
Die folgende YAML-Datei zeigt, wie Sie mit der Gateway API eine Bereitstellungsstrategie für ein GKE- oder GKE Enterprise-Ziel konfigurieren:
canary:
runtimeConfig:
kubernetes:
gatewayServiceMesh:
httpRoute: "HTTP_ROUTE_NAME"
service: "SERVICE_NAME"
deployment: "DEPLOYMENT_NAME"
routeUpdateWaitTime: "WAIT_TIME"
canaryDeployment:
percentages: ["PERCENTAGES"]
verify: true | false
Beachten Sie in diesem Beispiel routeUpdateWaitTime
. Dies ist enthalten, da die Gateway API den Traffic mithilfe einer HTTPRoute
-Ressource aufteilt und es manchmal zu Verzögerungen bei der Weitergabe von Änderungen an der HTTPRoute
kommt. In solchen Fällen können Anfragen verworfen werden, da Traffic an nicht verfügbare Ressourcen gesendet wird. Sie können routeUpdateWaitTime
verwenden, damit Cloud Deploy nach dem Anwenden von HTTPRoute
-Änderungen wartet, wenn Sie diese Verzögerung beobachten.
Die folgende YAML-Datei zeigt, wie Sie eine benutzerdefinierte oder benutzerdefiniert automatisierte Canary-Bereitstellungsstrategie konfigurieren. Die laufzeitspezifische Konfiguration im Abschnitt runtimeConfig
wird bei der benutzerdefinierten Canary-Version weggelassen, aber in der automatisierten und benutzerdefinierten automatisierten Canary-Konfiguration enthalten.
strategy:
canary:
# Runtime configs are configured as shown in the
# Canary Deployment Strategy section of this document.
runtimeConfig:
# Manual configuration for each canary phase
customCanaryDeployment:
- name: "PHASE1_NAME"
percent: PERCENTAGE1
profiles: [ "PROFILE1_NAME" ]
verify: true | false
- …
- name: "stable"
percent: 100
profiles: [ "LAST_PROFILE_NAME" ]
verify: true|false
verify
Optionaler boolescher Wert, der angibt, ob die Bereitstellungsprüfung für dieses Ziel unterstützt werden soll. Der Standardwert ist false
.
Das Aktivieren der Bereitstellungsprüfung erfordert auch eine verify
-Stanza im skaffold.yaml
. Wenn Sie dieses Attribut nicht angeben, schlägt der Überprüfungsjob fehl.
deployParameters
Mit Bereitstellungsparametern können Sie Schlüssel/Wert-Paare angeben, um Werte an Manifeste für Ziele zu übergeben, die mit Labels übereinstimmen.
Sie können es auch in Ziele aufnehmen.
Stellen Sie Parameter, die in einer Bereitstellungspipeline festgelegt wurden, mithilfe von Labels bereit, um Ziele abzugleichen:
deployParameters:
- values:
someKey: "value1"
matchTargetLabels:
label1: firstLabel
- values:
someKey: "value2"
matchTargetLabels:
label2: secondLabel
In diesem Beispiel werden zwei Werte für den Schlüssel angegeben und für jeden Wert gibt es ein Label. Der Wert wird für jedes Ziel mit einem übereinstimmenden Label auf das Manifest angewendet.
predeploy
- und postdeploy
-Jobs
Damit können Sie auf benutzerdefinierte Aktionen (separat definiert in skaffold.yaml
) verweisen, die vor dem Bereitstellungsjob (predeploy
) und nach dem Überprüfungsjob, falls vorhanden (postdeploy
), ausgeführt werden. Wenn kein Prüfjob vorhanden ist, wird der Job nach dem Bereitstellungsjob ausgeführt.
Bereitstellungs-Hooks werden unter strategy.standard
oder strategy.canary
so konfiguriert:
serialPipeline:
stages:
- targetId:
strategy:
standard:
predeploy:
actions: [ACTION_NAME]
postdeploy:
actions: [ACTION_NAME]
Dabei ist ACTION_NAME der in skaffold.yaml
für customActions.name
konfigurierte Name.
Sie können Jobs vom Typ predeploy
und postdeploy
unter jeder Strategie konfigurieren (z. B. standard
, canary
).
Weitere Informationen zum Konfigurieren und Verwenden von Hooks vor und nach der Bereitstellung finden Sie unter Hooks vor und nach der Bereitstellung ausführen.
Zieldefinitionen
Die Definitionsdatei der Lieferpipeline kann Zieldefinitionen enthalten. Alternativ können Sie Ziele in einer separaten Datei angeben. Sie können Zielnamen innerhalb eines Projekts wiederholen, diese müssen aber innerhalb einer Lieferpipeline einmalig sein.
Sie können Ziele in mehreren Lieferpipelines wiederverwenden. Sie können jedoch nur einmal innerhalb einer einzelnen Lieferpipeline auf ein Ziel verweisen.
Siehe auch: Definitionen benutzerdefinierter Zieltypen
Für GKE-Ziele
Die folgende YAML-Datei zeigt, wie ein Ziel konfiguriert wird, das in einem GKE-Cluster bereitgestellt wird:
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name:
annotations:
labels:
description:
deployParameters:
multiTarget:
targetIds: []
requireApproval:
gke:
cluster: projects/[project_name]/locations/[location]/clusters/[cluster_name]
internalIp:
proxyUrl:
executionConfigs:
- usages:
- [RENDER | PREDEPLOY | DEPLOY | VERIFY | POSTDEPLOY]
workerPool:
serviceAccount:
artifactStorage:
executionTimeout:
verbose:
metadata.name
Der Name dieses Ziels. Dieser Name muss global eindeutig sein.
metadata.annotations
und metadata.labels
Die Zielkonfiguration unterstützt Kubernetes-Annotationen und Labels, aber Cloud Deploy erfordert sie nicht.
Annotationen und Labels werden mit der Zielressource gespeichert. Weitere Informationen finden Sie unter Labels und Annotationen mit Cloud Deploy verwenden.
description
Dieses Feld verwendet einen beliebigen String, der die Verwendung des Ziels beschreibt.
deployParameters
Sie können für jedes Ziel Bereitstellungsparameter zusammen mit Werten hinzufügen. Diese Werte werden nach dem Rendering den entsprechenden Schlüsseln in Ihrem Manifest zugewiesen.
Die Stanza deployParameters
nimmt Schlüssel/Wert-Paare an, wie hier gezeigt:
deployParameters:
someKey: "someValue"
someOtherKey: "someOtherValue"
Wenn Sie Bereitstellungsparameter für ein multi-target festlegen, wird der Wert für alle untergeordneten Ziele dieses Ziels dem Manifest zugewiesen.
multiTarget.targetIds: []
Dieses Attribut ist optional und wird zum Konfigurieren eines multi-target für die parallele Bereitstellung verwendet.
Der Wert ist eine durch Kommas getrennte Liste von untergeordneten Zielen.
Untergeordnete Ziele werden als normale Ziele konfiguriert und enthalten das Attribut multiTarget
nicht.
requireApproval
Gibt an, ob das Hochstufen zu diesem Ziel eine manuelle Genehmigung erfordert. Kann true
oder false
sein.
Dieses Attribut ist optional. Der Standardwert ist false
.
Wenn Sie eine parallele Bereitstellung konfigurieren, können Sie eine Genehmigung nur für mehrere Ziele anfordern, nicht für untergeordnete Ziele.
gke
Nur bei GKE-Clustern der Ressourcenpfad, der den Cluster identifiziert, in dem Ihre Anwendung bereitgestellt wird:
gke:
cluster: projects/[project_name]/locations/[location]/clusters/[cluster_name]
project_name
Das Google Cloud-Projekt, in dem sich der Cluster befindet.
location
Der Standort, an dem sich der Cluster befindet. Beispiel:
us-central1
. Der Cluster kann auch zonal sein (us-central1-c
).cluster_name
Der Name des Clusters, wie er in der Liste der Cluster in der Google Cloud Console angezeigt wird.
Beispiel:
gke:
cluster: projects/cd-demo-01/locations/us-central1/clusters/prod
Lassen Sie das Attribut gke
weg, wenn Sie ein multi-target konfigurieren.
Der GKE-Cluster wird stattdessen innerhalb des entsprechenden untergeordneten Ziels konfiguriert.
Unter executionConfigs
in diesem Artikel finden Sie Beschreibungen der Attribute der Ausführungsumgebung.
internalIp
Gibt an, ob der angegebene GKE-Cluster eine private IP-Adresse verwendet. Dieses Attribut ist optional. Standardmäßig verwendet Cloud Deploy die öffentlich verfügbare IP-Adresse für den Cluster. Wenn Sie eine private IP-Adresse verwenden möchten, legen Sie dafür true
fest.
proxyUrl
Wenn Sie über einen Proxy auf Cluster zugreifen, geben Sie hier das Attribut proxyUrl
an. Der Wert ist die URL Ihres Proxy-GKE-Clusters, der beim Herstellen einer Verbindung zum Cluster an kubectl übergeben wird.
Für Cloud Run-Ziele
Die folgende YAML-Datei zeigt, wie ein Ziel konfiguriert wird, das in einem Cloud Run-Dienst bereitgestellt wird:
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name:
annotations:
labels:
description:
multiTarget:
targetIds: []
requireApproval:
run:
location: projects/[project_name]/locations/[location]
executionConfigs:
- usages:
- [RENDER | PREDEPLOY| DEPLOY | VERIFY | POSTDEPLOY]
workerPool:
serviceAccount:
artifactStorage:
executionTimeout:
verbose:
metadata.name
Der Name dieses Ziels. Dieser Name muss in jeder Region eindeutig sein.
metadata.annotations
und metadata.labels
Die Zielkonfiguration unterstützt Annotationen und Labels, aber Cloud Deploy erfordert sie nicht.
Annotationen und Labels werden mit der Zielressource gespeichert. Weitere Informationen finden Sie unter Labels und Annotationen mit Cloud Deploy verwenden.
description
Dieses Feld verwendet einen beliebigen String, der die Verwendung des Ziels beschreibt.
multiTarget.targetIds: []
Dieses Attribut ist optional und wird zum Konfigurieren eines multi-target für die parallele Bereitstellung verwendet.
Der Wert ist eine durch Kommas getrennte Liste von untergeordneten Zielen.
Untergeordnete Ziele werden als normale Ziele konfiguriert und enthalten das Attribut multiTarget
nicht.
requireApproval
Gibt an, ob das Hochstufen zu diesem Ziel eine manuelle Genehmigung erfordert. Kann true
oder false
sein.
Dieses Attribut ist optional. Der Standardwert ist false
.
Wenn Sie eine parallele Bereitstellung konfigurieren, können Sie eine Genehmigung nur für mehrere Ziele anfordern, nicht für untergeordnete Ziele.
run
Nur für Cloud Run-Dienste der Standort, an dem der Dienst erstellt wird:
run:
location: projects/[project_name]/locations/[location]
project_name
Das Google Cloud-Projekt, in dem der Dienst gespeichert wird.
location
Der Standort, an dem der Dienst bereitgestellt wird. Beispiel:
us-central1
.
Lassen Sie das Attribut run
weg, wenn Sie ein [mehreres Ziel] konfigurieren. Der Speicherort des Cloud Run-Dienstes wird stattdessen innerhalb des entsprechenden untergeordneten Ziels konfiguriert.
Unter executionConfigs
in diesem Artikel finden Sie Beschreibungen der Attribute der Ausführungsumgebung.
Für GKE Enterprise-Ziele
Die Zielkonfiguration für die Bereitstellung in einem GKE-Cluster ähnelt der Konfiguration eines Ziels für ein GKE-Ziel, mit der Ausnahme, dass das Attribut anthosCluster.membership
anstelle von gke.cluster
ist, der Ressourcenpfad anders ist und internalIp
nicht anwendbar ist.
anthosCluster:
membership: projects/[project_name]/locations/global/memberships/[membership_name]
project_name
Das Google Cloud-Projekt, in dem sich der GKE Enterprise-Cluster befindet.
/location/global/
Der Standort, an dem der Cluster registriert ist. In allen Fällen
global
.membership_name
Der Name der GKE Enterprise-Clustermitgliedschaft.
Beispiel:
anthosCluster:
membership: projects/cd-demo-01/locations/global/memberships/prod
Lassen Sie das Attribut anthosCluster
weg, wenn Sie ein [mehreres Ziel] konfigurieren. Der GKE Enterprise-Cluster wird stattdessen im entsprechenden untergeordneten Ziel konfiguriert.
Weitere Informationen zum Bereitstellen in GKE-Clustern finden Sie unter In Anthos-Nutzerclustern bereitstellen.
Für benutzerdefinierte Ziele
Die Konfiguration für benutzerdefinierte Ziele ähnelt allen anderen Zieltypen, mit der Ausnahme, dass sie weder eine gke
-Stanza noch eine run
-Stanza oder eine anthosCluster
-Stanza enthält.
Stattdessen enthalten benutzerdefinierte Ziele eine customTarget
-Stanza:
customTarget:
customTargetType: [CUSTOM_TARGET_TYPE_NAME]
Dabei ist CUSTOM_TARGET_TYPE_NAME
der Name, den Sie in der Definition des benutzerdefinierten Zieltyps verwendet haben.
Beispiel:
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: sample-env
customTarget:
customTargetType: basic-custom-target
executionConfigs
Eine Reihe von Feldern zur Angabe einer nicht standardmäßigen Ausführungsumgebung für dieses Ziel.
usages
Entweder
RENDER
oderDEPLOY
oder beide, plusPREDEPLOY
,VERIFY
oderPOSTDEPLOY
, wenn Verifizierung oder Bereitstellungs-Hooks für das Ziel aktiviert sind. Diese geben an, welche dieser Vorgänge für dieses Ziel in dieser Ausführungsumgebung ausgeführt werden sollen. Um anzugeben, dass eine benutzerdefinierte Ausführungsumgebung für den Pre-Deploy-Hook, -Rendering, -Deploy, -Post-Deploy-Hook und -Überprüfung verwendet werden soll, konfigurieren Sie sie so:usages: - RENDER - PREDEPLOY - DEPLOY - VERIFY - POSTDEPLOY
Wenn die Überprüfung in der Pipelinephase aktiviert ist und Sie
VERIFY
nicht in einerusages
-Stanza angeben, verwendet Cloud Deploy die Standardausführungsumgebung zur Prüfung. Hooks vor und nach der Bereitstellung funktionieren auf die gleiche Weise.Wenn jedoch eine benutzerdefinierte Ausführungsumgebung für
RENDER
undDEPLOY
vorhanden ist, müssen Sie eine fürVERIFY
,PREDEPLOY
ODERPOSTDEPLOY
angeben, wenn diese in der Bereitstellungspipeline konfiguriert sind.VERIFY
,PREDEPLOY
undPOSTDEPLOY
können sich im selbenusages
wieRENDER
oderDEPLOY
oder in separatenusages
befinden.Sie können
usages.VERIFY
,usages.PREDEPLOY
oderusages.POSTDEPLOY
nicht angeben, es sei denn,RENDER
undDEPLOY
werden in derselben oder in separaten benutzerdefinierten Ausführungsumgebungen angegeben.workerPool
Konfiguration für den zu verwendenden Worker-Pool. Dazu wird ein Ressourcenpfad verwendet, der den Cloud Build-Worker-Pool angibt, der für dieses Ziel verwendet werden soll. Beispiel:
projects/p123/locations/us-central1/workerPools/wp123
.Wenn Sie den Cloud Build-Standardpool verwenden möchten, lassen Sie dieses Attribut weg.
Ein bestimmtes Ziel kann zwei
workerPool
s haben (eine fürRENDER
und eine fürDEPLOY
). Beim Konfigurieren des Standardpools können Sie ein alternatives Dienstkonto oder einen alternativen Speicherort oder beides angeben.serviceAccount
Der Name des Dienstkontos, das für diesen Vorgang (
RENDER
oderDEPLOY
) für dieses Ziel verwendet werden soll.artifactStorage
Der Cloud Storage-Bucket, der für diesen Vorgang (
RENDER
oderDEPLOY
) für dieses Ziel verwendet werden soll, anstelle des Standard-Buckets.executionTimeout
Optional. Legt das Zeitlimit in Sekunden für Vorgänge fest, die Cloud Build für Cloud Deploy ausführt. Der Standardwert ist
3600
Sekunden (1 Stunde).
Beispiel:executionTimeout: "5000s"
verbose
Optional. Wenn
true
, werden die Ausführlichkeitsstufen für die folgenden Tools aufdebug
gesetzt:Skaffold
--verbosity
ist aufdebug
festgelegt. Der Skaffold-Standardwert istwarn
.kubectl
--v
ist auf4
gesetzt, was der Fehlerbehebung entspricht. Der kubectl-Standardwert ist2
.--verbosity
der Google Cloud CLI ist aufdebug
eingestellt. Der Standardwert istwarning
.
Alternative unterstützte Syntax
Die in diesem Dokument beschriebene executionConfigs
-Konfiguration ist neu. Die bisherige Syntax wird weiterhin unterstützt:
executionConfigs:
- privatePool:
workerPool:
serviceAccount:
artifactStorage:
usages:
- [RENDER | DEPLOY]
- defaultPool:
serviceAccount:
artifactStorage:
usages:
- [RENDER | DEPLOY]
Wenn Sie eine executionConfigs
-Stanza für ein multi-target konfigurieren, kann jedes untergeordnete Ziel diese Ausführungsumgebung von diesem Multi-Ziel übernehmen.
Definitionen benutzerdefinierter Zieltypen
In diesem Abschnitt werden die Felder beschrieben, mit denen benutzerdefinierte Zieltypen definiert werden.
Wie bei Standardzielen und Automatisierungen können CustomTargetType
-Definitionen in die Definition Ihrer Bereitstellungspipeline oder in eine oder mehrere separate Dateien aufgenommen werden.
Die folgende YAML-Datei zeigt, wie ein benutzerdefinierter Zieltyp konfiguriert wird:
apiVersion: deploy.cloud.google.com/v1
kind: CustomTargetType
metadata:
name: [CUSTOM_TARGET_TYPE_NAME]
annotations:
labels:
description:
customActions:
renderAction: [RENDER_ACTION_NAME]
deployAction: [DEPLOY_ACTION_NAME]
includeSkaffoldModules:
- configs:
# either:
googleCloudStorage:
source:
path:
# or:
git:
repo:
path:
ref:
Wobei:
[CUSTOM_TARGET_TYPE_NAME]
Dies ist ein beliebiger Name, den Sie dieser benutzerdefinierten Zieltypdefinition geben. Auf diesen Namen wird in der Zieldefinition für alle Ziele verwiesen, die den von Ihnen definierten benutzerdefinierten Zieltyp verwenden.
[RENDER_ACTION_NAME]
Der Name der benutzerdefinierten Renderingaktion. Dieser Wert ist der in
skaffold.yaml
definiertecustomAction.name
.[DEPLOY_ACTION_NAME]
Der Name der benutzerdefinierten Bereitstellungsaktion. Dieser Wert ist der in
skaffold.yaml
definiertecustomAction.name
.Informationen zu
includeSkaffoldModules
finden Sie unter Remote-Skafffold-Konfigurationen verwenden.
Automatisierungsdefinitionen
In diesem Abschnitt werden die Felder beschrieben, die zum Definieren der Automatisierungsressourcen von Cloud Deploy verwendet werden.
Wie bei Zielen können Automation
-Definitionen in die Definition Ihrer Bereitstellungspipeline oder in eine oder mehrere separate Dateien aufgenommen werden.
Weitere Informationen zur Automatisierung in Cloud Deploy finden Sie in der Dokumentation zur Automatisierung.
Der folgende YAML-Code zeigt, wie eine Automatisierung konfiguriert wird. Beachten Sie, dass die Eigenschaften einer Automatisierungsregel pro Regel unterschiedlich sind. (Die Konfiguration der verfügbaren Automatisierungsregeltypen finden Sie im Dokument Automatisierungsregeln verwenden.)
apiVersion: deploy.cloud.google.com/v1
kind: Automation
metadata:
name: [PIPELINE_NAME]/[PURPOSE]
labels:
annotations:
description: [DESCRIPTION]
suspended: true | false
serviceAccount: [SERVICE_ACCOUNT_ID]
selector:
targets:
- id: [TARGET_ID]
labels:
[LABEL_KEY]:[LABEL_VALUE]
rules:
- [RULE_TYPE]:
name:[RULE_NAME]
[RULE-SPECIFIC_CONFIG]
Wobei:
[PIPELINE_NAME]
Ist mit dem Wert
metadata.name
in der Bereitstellungspipeline identisch, die diese Automatisierung verwendet. Alle Automatisierungen gelten ausschließlich für die Bereitstellungspipelines, für die sie erstellt werden. Das heißt, Sie können eine Automatisierung nicht für mehr als eine Bereitstellungspipeline freigeben.[PURPOSE]
Gibt einen weiteren beschreibenden Namen für diese Automatisierung an. In der Regel erfolgt dies automatisch. Beispiel:
my-app-pipeline/promote
.labels
undannotations
sind beliebige Labels oder Annotationen, die Sie mit dieser Automatisierung verknüpfen möchten.[DESCRIPTION]
Ist eine optionale Beschreibung für diese Automatisierung.
suspended
true
oderfalse
: gibt an, ob diese Automatisierung aktiv oder gesperrt ist. Wenntrue
festgelegt ist, wird die Automatisierung nicht verwendet. Dies kann nützlich sein, wenn Sie eine Automatisierung testen möchten, ohne die Bereitstellungspipeline zu beeinträchtigen.[SERVICE_ACCOUNT_ID]
Die ID des Dienstkontos, das zum Ausführen der Automatisierung verwendet wird. Wenn die Automatisierung beispielsweise
promoteReleaseRule
verwendet, führt dieses Dienstkonto die Releasehochstufung durch und benötigt daher die Berechtigungen, die zum Hochstufen eines Release erforderlich sind.Für diese Property ist ein Wert erforderlich. Cloud Deploy verwendet nicht das Standarddienstkonto für Automatisierungen.
Dieses Dienstkonto muss die folgenden Berechtigungen haben:
actAs
-Berechtigung, um die Identität des Ausführungsdienstkontos zu übernehmen.permission zum Ausführen des automatisierten Vorgangs, z. B.
clouddeploy.releases.promote
, um einen Release hochzustufen, oderclouddeploy.rollouts.advance
, um eine Roll-out-Phase voranzutreiben.
[TARGET_ID]
Ist die ID des Ziels, für das diese Automatisierung verwendet wird. Obwohl eine Automatisierung an eine Bereitstellungspipeline gebunden ist, wird sie nur für die angegebenen Ziele ausgeführt.
Sie können diesen Wert auf
*
festlegen, um alle Ziele in der Bereitstellungspipeline auszuwählen.[LABEL_KEY]:[LABEL_VALUE]
Ist ein Schlüssel/Wert-Paar zum Abgleich mit einem auf dem Ziel definierten Schlüssel/Wert-Paar. Dadurch werden alle Ziele ausgewählt, die mit der Bereitstellungspipeline verknüpft sind und dasselbe Label und denselben Wert haben.
[RULE_TYPE]
Der Name der Automatisierungsregel, die für diese Automatisierung verwendet wird. Dies ist entweder
promoteReleaseRule
oderadvanceRolloutRule
. Sie können mehrere Regeln in eine Automatisierung aufnehmen, einschließlich mehrerer Regeln desselbenRULE_TYPE
. Sie können beispielsweise mehr als einepromoteReleaseRule
-Regel in derselben Automatisierung haben. Weitere Informationen[RULE_NAME]
Ein Name für die Regel. Dieser Name muss innerhalb der Bereitstellungspipeline eindeutig sein. Für diese Property ist ein Wert erforderlich.
[RULE-SPECIFIC_CONFIG]
Die Konfiguration ist für jeden unterstützten Automatisierungstyp unterschiedlich. Diese Konfigurationen werden unter Automatisierungsregeln verwenden beschrieben.
Nächste Schritte
Weitere Informationen zum Einrichten einer Lieferpipeline für Ihre Anwendung.
Erfahren Sie, wie Sie Manifeste verwalten.
Vermeiden Sie Nichtübereinstimmungen zwischen Ihrem Release und Ihrer Lieferpipeline. Dazu können sollten Sie mehr über Pipelineinstanzen erfahren.