Die Cloud Deploy-Konfigurationsdatei oder -Dateien definieren die Bereitstellungspipeline Ziele für die Bereitstellung und der Fortschritt dieser Ziele.
Die Konfigurationsdatei für die Bereitstellungspipeline kann Folgendes enthalten:
Zieldefinitionen. Diese können sich auch in einer separaten Datei befinden oder
-Dateien. Konventionsgemäß kann eine Datei sowohl die Konfiguration der Bereitstellungspipeline
heißt die Zielkonfiguration clouddeploy.yaml
und eine Pipelinekonfiguration ohne
hat den Namen delivery-pipeline.yaml
. Sie können diesen Dateien jedoch beliebige
den gewünschten Namen.
Aufbau
Cloud Deploy verwendet zwei Hauptkonfigurationsdateien:
- Definition der Bereitstellungspipeline
- Zieldefinition
Dabei kann es sich um separate Dateien handeln oder es lassen sich die Bereitstellungspipeline und Ziele die in derselben Datei konfiguriert sind.
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 können aber auch beliebige wie viele davon. Außerdem können Ziele in einer oder mehreren separaten Dateien definiert werden.
Definitionen für benutzerdefinierte Zieltypen
Benutzerdefinierte Ziele (benutzerdefinierter Zieltyp erforderlich) Definition. Wie bei Zielen und Automatisierungen lassen sich auch benutzerdefinierte Zieltypen in derselben Datei wie die Bereitstellungspipeline oder in einer separaten Datei definiert ist.
Automatisierungsdefinitionen
Sie können beliebige Automatisierungen für die Bereitstellung in derselben als Bereitstellungspipeline und -ziele oder in separaten Dateien. Zur Vereinfachung wird hier nur eine
Automation
angezeigt. Sie können aber beliebig viele erstellen.
Diese Komponenten werden im Rest dieses Dokuments definiert.
Pipelinedefinition und -fortschritt
Neben Pipeline-Metadaten wie name
enthält die Hauptpipelinedefinition eine Liste mit Verweisen auf Ziele in der Reihenfolge der Bereitstellungssequenz. Das heißt, das erste aufgeführte Ziel ist das erste
Bereitstellungsziel. Nach der Bereitstellung auf diesem Ziel wird der Release hochgestuft.
für das nächste Ziel in der Liste bereitgestellt.
Im Folgenden sind die Konfigurationsattribute für eine Bereitstellungspipeline aufgeführt, nicht einschließlich 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 angezeigt in den Details zur Bereitstellungspipeline in der Google Cloud Console.
suspended
Ein boolescher Wert, der bei true
die Bereitstellungspipeline pausiert, sodass damit keine Releases erstellt, hochgestuft, rückgängig gemacht oder neu bereitgestellt werden können.
Wenn die Bereitstellungspipeline ausgesetzt ist, können Sie
ein mit dieser Pipeline erstelltes Roll-out.
Der Standardwert ist false
.
serialPipeline
Der Anfang der Definition einer Pipeline für die Bereitstellung serieller Fortsetzungen. Dieses 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.
Geben Sie in jedem Feld stages.targetId
den Wert des Felds metadata.name
in der entsprechenden Zieldefinition ein. Fügen Sie unter targetId
profiles
:
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.
strategy.standard.verify
wird auf true
festgelegt, aktiviert
Bereitstellungsprüfung für das Ziel. Falls nein
Bereitstellungsstrategie ist angegeben, die Bereitstellungsstrategie standard
wird verwendet,
wobei die Bestätigung auf false
festgelegt ist.
profiles
Nimmt eine Liste mit null oder mehr Skaffold-Profilnamen aus skaffold.yaml
an.
Cloud Deploy verwendet das Profil mit skaffold render
beim Erstellen des Release. Mit Skaffold-Profilen können Sie
mit nur einer Konfigurationsdatei.
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 Standard-Bereitstellungsstrategie. Wenn Sie
strategy
weglassen, gilt Folgendes: Cloud Deploy verwendet die Bereitstellungsstrategiestandard
.canary:
Bei einem Canary-Deployment eine neue Version Ihrer Anwendung schrittweise bereitstellen, wodurch die bereits ausgeführte Version in prozentualen Schritten (z. B. 25%, dann 50%, dann 75 % und dann voll)
Die Bereitstellungsstrategie wird pro Ziel definiert. Beispiel: Sie haben eine
Canary-Strategie für Ihr prod
-Ziel, aber eine Standardstrategie (keine strategy
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 jedes unterstützte
Laufzeit.
Standardbereitstellungsstrategie
Die Standardstrategie umfasst nur die folgenden Elemente:
strategy:
standard:
verify: true|false
Das Attribut verify
ist optional. Die Standardeinstellung ist false
, was bedeutet, dass
keine verify-Phase für die resultierenden Roll-outs.
Du kannst das strategy
-Element für einen Standard weglassen.
der Implementierungsstrategie.
Canary-Bereitstellungsstrategie
In den folgenden Abschnitten wird die Konfiguration eines Canary-Bereitstellungsstrategie für jede von Cloud Deploy unterstützte Laufzeit.
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 eine GKE- oder GKE Enterprise-Ziel mit dienstbasiertes Netzwerk:
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 eine Bereitstellungsstrategie für eine GKE- oder GKE Enterprise-Ziel mit Gateway API:
canary:
runtimeConfig:
kubernetes:
gatewayServiceMesh:
httpRoute: "HTTP_ROUTE_NAME"
service: "SERVICE_NAME"
deployment: "DEPLOYMENT_NAME"
routeUpdateWaitTime: "WAIT_TIME"
canaryDeployment:
percentages: ["PERCENTAGES"]
verify: true | false
Hinweis in diesem Beispiel
routeUpdateWaitTime
Dieses
ist enthalten, da die Gateway API den Traffic mithilfe einer HTTPRoute
-Ressource aufteilt.
Manchmal kommt es bei der Übertragung von Änderungen an HTTPRoute
zu Verzögerungen. In
in solchen Fällen werden Anfragen
unter Umständen verworfen, da der Traffic
die nicht verfügbar sind. Wenn Sie diese Verzögerung feststellen, können Sie mit routeUpdateWaitTime
festlegen, dass Cloud Deploy nach dem Anwenden von HTTPRoute
-Änderungen wartet.
Im folgenden YAML-Code sehen Sie, wie ein benutzerdefinierter
oder custom-automated
Canary-Bereitstellungsstrategie. Die laufzeitspezifische Konfiguration im Abschnitt runtimeConfig
wird für benutzerdefinierte Canary-Versionen weggelassen, aber in die Konfiguration für automatische und benutzerdefinierte automatische Canary-Versionen aufgenommen.
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 unterstützt werden soll
für dieses Ziel. Der Standardwert ist false
.
Das Aktivieren der Bereitstellungsüberprüfung erfordert auch eine verify
-Stanza
in skaffold.yaml
. Wenn Sie diese Property nicht angeben, wird der Überprüfungsjob
scheitern.
deployParameters
Ermöglicht das Angeben von Schlüssel/Wert-Paaren, um Werte an Manifeste zu übergeben mit Labels übereinstimmende Ziele, wenn Parameter zum Bereitstellen verwendet werden.
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 für den Schlüssel zwei Werte angegeben, gibt es ein Label. Der Wert wird auf das Manifest für jedes Ziel angewendet, das einen zugehörigen Labels.
predeploy
- und postdeploy
-Jobs
Damit können Sie auf benutzerdefinierte Aktionen
(separat definiert, in
skaffold.yaml
), der vor dem Bereitstellungsjob (predeploy
) und nach der Überprüfung ausgeführt werden soll
Job, falls vorhanden (postdeploy
). Wenn kein Prüfjob vorhanden ist, wird der Job nach der Bereitstellung
nach dem Bereitstellungsjob ausgeführt wird.
Bereitstellungs-Hooks werden unter strategy.standard
konfiguriert oder
strategy.canary
so:
serialPipeline:
stages:
- targetId:
strategy:
standard:
predeploy:
actions: [ACTION_NAME]
postdeploy:
actions: [ACTION_NAME]
Dabei ist ACTION_NAME der in skaffold.yaml
konfigurierte Name für
customActions.name
Sie können predeploy
- und postdeploy
-Jobs unter jeder Strategie konfigurieren
(z. B. standard
oder canary
).
Weitere Informationen zum Konfigurieren und Verwenden von Hooks vor und nach der Bereitstellung Siehe 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.
Weitere Informationen finden Sie unter Definitionen benutzerdefinierter Zieltypen.
Für GKE-Ziele
Im folgenden YAML-Code wird gezeigt, 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 für Cloud Deploy sind sie nicht erforderlich.
Annotationen und Labels werden mit der Zielressource gespeichert. Weitere Informationen Siehe Labels und Annotationen mit Cloud Deploy verwenden.
description
Dieses Feld verwendet einen beliebigen String, der die Verwendung des Ziels beschreibt.
deployParameters
Sie können Bereitstellungsparameter für jedes Ziel, zusammen mit den Werten. Diese Werte werden nach dem Rendern 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 eine multi-target hat, wird der Wert das Manifest für alle Ziele untergeordnete Ziele festlegen.
multiTarget.targetIds: []
Diese Property ist optional und wird verwendet, um ein Multi-Target für die parallele Bereitstellung zu konfigurieren.
Der Wert ist eine durch Kommas getrennte Liste von untergeordneten Zielen.
Untergeordnete Ziele werden als normale Ziele konfiguriert und schließen dies nicht ein
multiTarget
-Property.
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
.
Beim Konfigurieren der parallelen Bereitstellung können Sie Folgendes festlegen: Genehmigung für mehrere Ziele, nicht für untergeordnete Ziele.
gke
Nur bei GKE-Clustern: Der Ressourcenpfad zur Identifizierung des Cluster, 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 Google Cloud Console
Beispiel:
gke:
cluster: projects/cd-demo-01/locations/us-central1/clusters/prod
Lassen Sie das Attribut gke
weg, wenn Sie ein Multi-Ziel konfigurieren.
Der GKE-Cluster wird stattdessen im entsprechenden untergeordneten Ziel konfiguriert.
Eine Beschreibung finden Sie in diesem Artikel unter executionConfigs
.
der Ausführungsumgebung.
internalIp
Gibt an, ob der angegebene GKE-Cluster einen privaten GKE-Cluster verwendet
IP-Adresse. Dieses Attribut ist optional. Standardmäßig verwendet Cloud Deploy
Die öffentlich verfügbare IP-Adresse für den Cluster. Wenn eine private IP-Adresse vorhanden ist
und Sie diese verwenden möchten, legen Sie dafür true
fest.
proxyUrl
Wenn Sie über einen Proxy auf Cluster zugreifen, geben Sie hier die proxyUrl
-Eigenschaft an. Der Wert ist die URL Ihrer Proxy-GKE-Instanz
„Cluster“, also
an kubectl übergeben
wenn Sie eine Verbindung zu Ihrem Cluster herstellen.
Für Cloud Run-Ziele
Die folgende YAML-Datei zeigt, wie ein Ziel konfiguriert wird, in einem Cloud Run-Dienst bereitgestellt:
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 für Cloud Deploy sind sie nicht erforderlich.
Annotationen und Labels werden mit der Zielressource gespeichert. Weitere Informationen Siehe 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 verwendet, um ein mehrere Ziele, die für parallele Bereitstellung.
Der Wert ist eine durch Kommas getrennte Liste von untergeordneten Zielen.
Untergeordnete Ziele werden als normale Ziele konfiguriert und schließen dies nicht ein
multiTarget
-Property.
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
.
Beim Konfigurieren der parallelen Bereitstellung können Sie Folgendes festlegen: Genehmigung für mehrere Ziele, nicht für untergeordnete Ziele.
run
Nur für Cloud Run-Dienste den Standort, an dem der Dienst wird erstellt:
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
bei der Konfiguration eines [multi-target] weg. Der Standort des
Der Cloud Run-Dienst wird stattdessen im
entsprechendes untergeordnetes Ziel.
Eine Beschreibung finden Sie in diesem Artikel unter executionConfigs
.
der Ausführungsumgebung.
Für GKE Enterprise-Ziele
Zielkonfiguration für
Die Bereitstellung in einem GKE-Cluster ähnelt der
Konfigurieren eines Ziels für ein GKE-Ziel
außer dass das Attribut anthosCluster.membership
statt gke.cluster
ist,
Der Ressourcenpfad ist anders und internalIp
ist nicht anwendbar.
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. Die
Der GKE Enterprise-Cluster wird stattdessen im entsprechenden Cluster konfiguriert
untergeordnetes Ziel.
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 der
alle anderen Zieltypen, außer dass sie weder eine gke
-Stanza noch eine
Stanza run
noch anthosCluster
.
Stattdessen enthalten benutzerdefinierte Ziele eine customTarget
-Stanza:
customTarget:
customTargetType: [CUSTOM_TARGET_TYPE_NAME]
Dabei ist CUSTOM_TARGET_TYPE_NAME
der Name, den Sie in den
Definition des benutzerdefinierten Zieltyps.
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 beides sowiePREDEPLOY
,VERIFY
oderPOSTDEPLOY
, wenn die Bestätigung oder Bereitstellungshooks auf dem Ziel aktiviert sind. Diese geben an, welche dieser Vorgänge für dieses Ziel perform mit diesem der Ausführungsumgebung. Um anzugeben, dass eine benutzerdefinierte Ausführungsumgebung die für Pre-Deploy-Hooks, Rendering-, Bereitstellungs-, Post-Deploy-Hooks und -Prüfungen verwendet werden. würden Sie es so konfigurieren:usages: - RENDER - PREDEPLOY - DEPLOY - VERIFY - POSTDEPLOY
Wenn die Überprüfung in der Pipeline-Phase aktiviert ist und Sie in einer
usages
-Strophe keineVERIFY
angeben, verwendet Cloud Deploy die Standardausführungsumgebung für die Überprüfung. Vor der Bereitstellung und Hooks nach der Bereitstellung funktionieren auf die gleiche Weise.Wenn jedoch eine benutzerdefinierte Ausführungsumgebung für
RENDER
undDEPLOY
vorhanden ist, Sie müssen eine fürVERIFY
,PREDEPLOY
oderPOSTDEPLOY
angeben, wenn in der Bereitstellungspipeline konfiguriert.VERIFY
PREDEPLOY
undPOSTDEPLOY
kann sich im selbenusages
wieRENDER
oderDEPLOY
oder in einem separatenusages
befinden.Sie können
usages.VERIFY
,usages.PREDEPLOY
oderusages.POSTDEPLOY
nur angeben, wennRENDER
undDEPLOY
in derselben oder in separaten benutzerdefinierten Ausführungsumgebungen angegeben sind.workerPool
Konfiguration für den zu verwendenden Worker-Pool. Dies dauert eine Ressourcenpfad, der den Cloud Build-Worker-Pool angibt, der für den Dienst verwendet werden soll für dieses Ziel. Beispiel:
projects/p123/locations/us-central1/workerPools/wp123
.So verwenden Sie den Cloud Build-Standardpool: diese Eigenschaft weg.
Ein bestimmtes Ziel kann zwei
workerPool
s haben (eine fürRENDER
und eine fürDEPLOY
. Beim Konfigurieren des Standardpools können Sie einen alternativen Pool angeben Dienstkonto und/oder Speicherstandort.serviceAccount
Der Name des Dienstkontos, das für diesen Vorgang verwendet werden soll (
RENDER
oderDEPLOY
) für dieses Ziel.artifactStorage
Der Cloud Storage-Bucket, der für diesen Vorgang verwendet werden soll (
RENDER
oderDEPLOY
) für dieses Ziel anstelle des Standard-Buckets.executionTimeout
Optional. Legt das Zeitlimit in Sekunden für Vorgänge fest, die von Cloud Build ausgeführt werden für Cloud Deploy ausgeführt wird. Standardmäßig ist dies
3600
Sekunden (1 Stunde).
Beispiel:executionTimeout: "5000s"
verbose
Optional. Wenn
true
, werden die Ausführlichkeitsstufen für Folgendes aufdebug
gesetzt: Tools:Skaffold
--verbosity
ist aufdebug
festgelegt. Der Skaffold-Standardwert istwarn
.kubectl
--v
ist auf4
gesetzt, was dem Debugging-Dienst entspricht. Der kubectl-Standardwert ist2
.--verbosity
der Google Cloud CLI ist festgelegt andebug
. Der Standardwert istwarning
.
Alternative unterstützte Syntax
Die in diesem Dokument beschriebene executionConfigs
-Konfiguration ist neu. Die
wird die bisherige Syntax weiterhin unterstützt:
executionConfigs:
- privatePool:
workerPool:
serviceAccount:
artifactStorage:
usages:
- [RENDER | DEPLOY]
- defaultPool:
serviceAccount:
artifactStorage:
usages:
- [RENDER | DEPLOY]
Wenn Sie eine executionConfigs
-Stanza für eine
mehrere Ziele, jedes untergeordnete Ziel
können diese Ausführungsumgebung übernehmen
von diesem Multi-Ziel.
Definitionen benutzerdefinierter Zieltypen
In diesem Abschnitt werden die Felder beschrieben, mit denen benutzerdefinierten Zieltypen
Wie bei Standardzielen und automatisierten Abläufen können CustomTargetType
-Definitionen
in Ihrer Bereitstellungspipeline-Definition oder in separaten Dateien enthalten.
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. Dieser Name wird in der Zieldefinition für ein beliebiges Ziel verwiesen für die der von Ihnen definierte benutzerdefinierte Zieltyp verwendet wird.
[RENDER_ACTION_NAME]
Der Name der benutzerdefinierten Renderingaktion. Dieser Wert ist der
customAction.name
definiert inskaffold.yaml
.[DEPLOY_ACTION_NAME]
Der Name der benutzerdefinierten Bereitstellungsaktion. Dieser Wert ist der
customAction.name
definiert inskaffold.yaml
.Informationen zu
includeSkaffoldModules
finden Sie unter Remote-Skaffold-Konfigurationen verwenden.
Automatisierungsdefinitionen
In diesem Abschnitt werden die Felder beschrieben, die zum Definieren von Cloud Deploy verwendet werden automation-Ressourcen.
Wie bei Zielen können Automation
-Definitionen in die Lieferung aufgenommen werden
oder in einer oder mehreren separaten Dateien.
Weitere Informationen zur Automatisierung in Cloud Deploy finden Sie in der Dokumentation zur Automatisierung.
Der folgende YAML-Code zeigt, wie eine Automatisierung konfiguriert wird. Die Details einer Automatisierungsregel unterscheiden sich je nach Regel. Die Konfiguration der verfügbaren Arten von Automatisierungsregeln 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 für diese Automatisierung. Alle Automatisierungen gelten ausschließlich für die Bereitstellungspipelines für die sie erstellt werden. Sie können eine Automatisierung also nicht für mehrere als eine Bereitstellungspipeline.[PURPOSE]
Gibt einen weiteren beschreibenden Namen für diese Automatisierung an. In der Regel was automatisiert wird. Beispiel:
my-app-pipeline/promote
.labels
undannotations
sind beliebige Labels oder Anmerkungen, die Sie mit dieser Automatisierung verknüpfen.[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, Automatisierung testen, ohne die Bereitstellungspipeline zu beeinträchtigen.[SERVICE_ACCOUNT_ID]
Ist die ID des Dienstkontos, das zum Ausführen der automation Wenn die Automatisierung beispielsweise
promoteReleaseRule
verwendet, ist dies Dienstkonto das Release hochgestuft und erfordert daher die erforderlichen Berechtigungen eine Veröffentlichung hochzustufen.Für diese Property ist ein Wert erforderlich. Cloud Deploy verwendet für Automatisierungen nicht das Standarddienstkonto.
Dieses Dienstkonto muss die folgenden Berechtigungen haben:
actAs
-Berechtigung, um die Identität des Ausführungsdienstkontos zu übernehmen.Berechtigung zum Ausführen der Vorgang wird automatisiert, z. B.
clouddeploy.releases.promote
, um Release hochstufen oderclouddeploy.rollouts.advance
, um ein Roll-out voranzutreiben .
[TARGET_ID]
Ist die ID des Ziels, für das diese Automatisierung verwendet wird. Obwohl ein an eine Bereitstellungspipeline gebunden ist, wird sie nur auf der angegebenen oder Ziele.
Sie können diese Einstellung auf
*
festlegen, um alle Ziele in der Auslieferungspipeline 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 die mit demselben Label und Wert.
[RULE_TYPE]
Der Name der Automatisierungsregel, die für diese Automatisierung verwendet wird. Dies ist entweder
promoteReleaseRule
oderadvanceRolloutRule
. Sie können auch mehrere in einer Automatisierung, einschließlich mehrerer gleicherRULE_TYPE
-Regeln. So können Sie beispielsweise in einer Automatisierung mehrerepromoteReleaseRule
-Regeln 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 in Automatisierungsregeln verwenden:
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.