Il file o i file di configurazione di Cloud Deploy definiscono la pipeline di distribuzione, i target su cui eseguire il deployment e la progressione di questi target.
Il file di configurazione della pipeline di distribuzione può includere
definizioni di destinazione oppure queste possono trovarsi in un file o
file separati. Per convenzione, un file contenente sia la configurazione della pipeline di distribuzione sia le configurazioni di destinazione è denominato clouddeploy.yaml
, mentre una configurazione della pipeline senza destinazioni è denominata delivery-pipeline.yaml
. ma puoi assegnare a questi file il nome che preferisci. Anche altre definizioni di risorse, come
automazioni e
deploy policies, possono trovarsi nello stesso file di una
pipeline di distribuzione o di una definizione di destinazione.
Istruzioni
Cloud Deploy utilizza due file di configurazione principali:
- Definizione della pipeline di distribuzione
- Definizione del target
Possono essere file separati oppure la pipeline di distribuzione e i target possono essere configurati nello stesso file.
Struttura di un file di configurazione della pipeline di distribuzione
Di seguito è riportata la struttura di una configurazione della pipeline di distribuzione, incluse le proprietà per le definizioni di destinazione. Alcune proprietà di destinazione non sono incluse qui. Consulta Definizioni di destinazione per tutte le proprietà di configurazione della destinazione.
# 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:
dnsEndpoint:
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:
verbose:
---
# 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]
Questo YAML ha tre componenti principali:
La pipeline di distribuzione principale e la progressione
Il file di configurazione può includere un numero qualsiasi di definizioni di pipeline.
Definizioni dei target
Per semplicità, in questo esempio viene mostrato un solo target, ma possono essercene un numero qualsiasi. Inoltre, i target possono essere definiti in uno o più file separati.
Definizioni dei tipi di target personalizzati
I target personalizzati richiedono una definizione di tipo di target personalizzato. Come per i target e le automazioni, i tipi di target personalizzati possono essere definiti nello stesso file della pipeline di pubblicazione o in un file separato.
Definizioni di Automation
Puoi creare qualsiasi deploy automations nello stesso file della pipeline di pubblicazione e dei target oppure in uno o più file separati. Per semplicità, qui viene mostrato un solo
Automation
, ma puoi crearne quanti ne vuoi.
Questi componenti sono definiti nel resto del documento.
Definizione e progressione della pipeline
Oltre ai metadati della pipeline, come name
, la definizione principale della pipeline include un elenco di riferimenti alle destinazioni nell'ordine della sequenza di deployment. ovvero il primo target elencato è il primo
target di deployment. Dopo aver eseguito il deployment nel target, la promozione della release
viene eseguita nel target successivo nell'elenco.
Di seguito sono riportate le proprietà di configurazione per una pipeline di distribuzione, escluse le definizioni di destinazione.
metadata.name
Il campo name
accetta una stringa che deve essere univoca per progetto e località.
metadata.annotations
e metadata.labels
La configurazione della pipeline di distribuzione può includere annotazioni ed etichette. Le annotazioni e le etichette vengono memorizzate con la risorsa pipeline di distribuzione dopo la registrazione della pipeline.
Per saperne di più, vedi Utilizzare etichette e annotazioni con Cloud Deploy.
description
Una stringa arbitraria che descrive questa pipeline di distribuzione. Questa descrizione viene visualizzata nei dettagli della pipeline di distribuzione nella console Google Cloud .
suspended
Un valore booleano che, se true
sospende la pipeline di pubblicazione
in modo che non possa essere utilizzata per creare, promuovere, eseguire il rollback o il redeployment delle release.
Inoltre, se la pipeline di distribuzione è sospesa, non puoi approvare o rifiutare un'implementazione creata da quella pipeline.
Il valore predefinito è false
.
serialPipeline
L'inizio della definizione di una pipeline di distribuzione a progressione seriale. Questa stanza è obbligatoria.
stages
Un elenco di tutti i target su cui è configurata la distribuzione di questa pipeline di distribuzione.
L'elenco deve essere nell'ordine della sequenza di consegna che preferisci. Ad esempio,
se hai target chiamati dev
, staging
e production
, elencali nello stesso ordine, in modo che il primo deployment sia su dev
e l'ultimo su production
.
Compila ogni campo stages.targetId
con il valore del campo metadata.name
nella definizione di destinazione corrispondente. In targetId
, includi
profiles
:
serialPipeline:
stages:
- targetId:
profiles: []
strategy:
standard:
verify:
targetId
Identifica il target specifico da utilizzare per questa fase della pipeline di distribuzione.
Il valore è la proprietà metadata.name
della definizione del target.
strategy.standard.verify
impostato su true
consente la
verifica del deployment sulla destinazione. Se non viene specificata alcuna strategia di deployment, viene utilizzata la strategia di deployment standard
, con la verifica impostata su false
.
profiles
Accetta un elenco di zero o più nomi di profili Skaffold da skaffold.yaml
.
Cloud Deploy utilizza il profilo con skaffold render
quando crea la release. I profili Skaffold ti consentono di variare la configurazione tra le destinazioni utilizzando un unico file di configurazione.
strategy
Include proprietà per specificare una strategia di deployment. Sono supportate le seguenti strategie:
standard:
L'applicazione viene completamente implementata nella destinazione specificata.
Questa è la strategia di deployment predefinita. Se ometti
strategy
, Cloud Deploy utilizza la strategia di deploymentstandard
.canary:
In un deployment canary, esegui il deployment di una nuova versione dell'applicazione in modo progressivo, sostituendo la versione già in esecuzione con incrementi basati sulla percentuale (ad esempio, 25%, poi 50%, poi 75% e infine al 100%).
La strategia di deployment è definita per target. Ad esempio, potresti avere una
strategia canary per il target prod
, ma una strategia standard (senza strategy
specificato) per gli altri target.
Per ulteriori informazioni, consulta Utilizzare una strategia di implementazione.
Configurazione di strategy
Questa sezione mostra gli elementi di configurazione per strategy
, per ogni runtime supportato.
Strategia di deployment standard
La strategia standard include solo i seguenti elementi:
strategy:
standard:
verify: true|false
La proprietà verify
è facoltativa. Il valore predefinito è false
, il che significa che non ci sarà
alcuna fase di verifica per i rollout risultanti.
Puoi omettere l'elemento strategy
per una strategia di deployment standard.
Strategia di deployment canary
Le sezioni seguenti descrivono la configurazione per una strategia di deployment canary per ogni runtime supportato da Cloud Deploy.
Per le destinazioni Cloud Run
strategy:
canary:
runtimeConfig:
cloudRun:
automaticTrafficControl: true | false
canaryDeployment:
percentages: [PERCENTAGES]
verify: true | false
Per i target GKE e GKE Enterprise
Il seguente file YAML mostra come configurare una strategia di deployment per una destinazione GKE o GKE Enterprise utilizzando il networking basato sui servizi:
canary:
runtimeConfig:
kubernetes:
serviceNetworking:
service: "SERVICE_NAME"
deployment: "DEPLOYMENT_NAME"
disablePodOverprovisioning: true | false
canaryDeployment:
percentages: [PERCENTAGES]
verify: true | false
Il seguente YAML mostra come configurare una strategia di deployment per una destinazione GKE o GKE Enterprise, utilizzando l'API Gateway:
canary:
runtimeConfig:
kubernetes:
gatewayServiceMesh:
httpRoute: "HTTP_ROUTE_NAME"
service: "SERVICE_NAME"
deployment: "DEPLOYMENT_NAME"
routeUpdateWaitTime: "WAIT_TIME"
routeDestinations:
destinationIds: ["KEY"]
propagateService: [true|false]
canaryDeployment:
percentages: ["PERCENTAGES"]
verify: true | false
Avviso in questo esempio
routeUpdateWaitTime
. Questo
è incluso perché l'API Gateway suddivide il traffico utilizzando una risorsa HTTPRoute
e a volte si verifica un ritardo nella propagazione delle modifiche apportate a HTTPRoute
. In
questi casi, le richieste potrebbero essere eliminate perché il traffico viene inviato a risorse
non disponibili. Puoi utilizzare routeUpdateWaitTime
per fare in modo che
Cloud Deploy attenda dopo aver applicato le modifiche a HTTPRoute
, se
osservi questo ritardo.
Il seguente file YAML mostra come configurare una strategia di deployment canary personalizzata (per service networking, gateway api o Cloud Run) o una strategia di deployment canary automatizzata personalizzata (per service networking, gateway api o Cloud Run). La configurazione specifica per il runtime, nella sezione runtimeConfig
, viene omessa per il canary personalizzato, ma inclusa nella configurazione canary automatica e automatica personalizzata.
##
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
Valore booleano facoltativo che indica se supportare o meno la verifica del deployment
per questa destinazione. Il valore predefinito è false
.
L'attivazione della verifica del deployment richiede anche una sezione verify
nel skaffold.yaml
. Se non fornisci questa proprietà, il job di verifica non andrà a buon fine.
deployParameters
Ti consente di specificare coppie chiave-valore per trasmettere valori ai manifest per i target corrispondenti alle etichette quando utilizzi i parametri di deployment.
Puoi includerlo anche nei target.
I parametri di deployment impostati in una pipeline di distribuzione utilizzano le etichette per trovare le corrispondenze con le destinazioni:
deployParameters:
- values:
someKey: "value1"
matchTargetLabels:
label1: firstLabel
- values:
someKey: "value2"
matchTargetLabels:
label2: secondLabel
In questo esempio, vengono forniti due valori per la chiave e per ciascun valore è presente un'etichetta. Il valore viene applicato al manifest per qualsiasi destinazione con un'etichetta corrispondente.
predeploy
e postdeploy
job
Questi ti consentono di fare riferimento ad azioni personalizzate
(definite separatamente, in
skaffold.yaml
) da eseguire prima del job di deployment (predeploy
) e dopo il job di verifica, se presente (postdeploy
). Se non è presente alcun job di verifica, il job postdeploy viene eseguito dopo il job di deployment.
Gli hook di deployment sono configurati in strategy.standard
o
strategy.canary
nel seguente modo:
serialPipeline:
stages:
- targetId:
strategy:
standard:
predeploy:
actions: [ACTION_NAME]
postdeploy:
actions: [ACTION_NAME]
dove ACTION_NAME è il nome configurato in skaffold.yaml
per
customActions.name
.
Puoi configurare i job predeploy
e postdeploy
in qualsiasi strategia
(ad esempio standard
, canary
).
Per saperne di più sulla configurazione e sull'utilizzo degli hook pre-deployment e post-deployment, consulta Eseguire hook prima e dopo il deployment.
Definizioni dei target
Il file di definizione della pipeline di pubblicazione può contenere definizioni di target oppure puoi specificare i target in un file separato. Puoi ripetere i nomi dei target all'interno di un progetto, ma devono essere univoci all'interno di una pipeline di distribuzione.
Puoi riutilizzare le destinazioni in più pipeline di distribuzione. Tuttavia, puoi fare riferimento a un target una sola volta all'interno della progressione di una singola pipeline di distribuzione.
Vedi anche: Definizioni dei tipi di target personalizzati
Per i target GKE
Il seguente file YAML mostra come configurare una destinazione che esegue il deployment in un cluster GKE:
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]
dnsEndpoint:
internalIp:
proxyUrl:
associatedEntities:
[KEY]:
gkeClusters:
- cluster: projects/[project_name]/locations/[location]/clusters/[cluster_name]
dnsEndpoint: [true|false]
internalIp: [true|false]
proxyUrl:
executionConfigs:
- usages:
- [RENDER | PREDEPLOY | DEPLOY | VERIFY | POSTDEPLOY]
workerPool:
serviceAccount:
artifactStorage:
executionTimeout:
verbose:
metadata.name
Il nome di questo target. Questo nome deve essere univoco a livello globale.
metadata.annotations
e metadata.labels
La configurazione di destinazione supporta le annotazioni Kubernetes e le etichette, ma Cloud Deploy non le richiede.
Le annotazioni e le etichette vengono memorizzate con la risorsa di destinazione. Per saperne di più, vedi Utilizzare etichette e annotazioni con Cloud Deploy.
description
Questo campo accetta una stringa arbitraria che descrive l'utilizzo di questo target.
deployParameters
Puoi includere parametri di deployment in qualsiasi target, insieme ai valori. Questi valori vengono assegnati alle chiavi corrispondenti nel manifest dopo il rendering.
La sezione deployParameters
accetta coppie chiave-valore, come mostrato:
deployParameters:
someKey: "someValue"
someOtherKey: "someOtherValue"
Se imposti i parametri di deployment su una destinazione multipla, il valore viene assegnato al manifest per tutte le destinazioni secondarie della destinazione multipla.
multiTarget.targetIds: []
Questa proprietà è facoltativa e viene utilizzata per configurare un multi-target da utilizzare per l'implementazione parallela.
Il valore è un elenco separato da virgole di target secondari.
I target secondari sono configurati come target normali e non includono questa
proprietà multiTarget
.
requireApproval
Indica se la promozione a questo target richiede l'approvazione manuale. Può essere true
o
false
.
Questa proprietà è facoltativa. Il valore predefinito è false
.
Quando configuri l'implementazione parallela, puoi richiedere l'approvazione solo per il target multiplo, non per i target secondari.
gke
Solo per i cluster GKE, il percorso della risorsa che identifica il cluster in cui verrà eseguito il deployment dell'applicazione:
gke:
cluster: projects/[project_name]/locations/[location]/clusters/[cluster_name]
project_name
Il progetto Google Cloud in cui si trova il cluster.
location
La località in cui si trova il cluster. Ad esempio,
us-central1
. Il cluster può anche essere zonale (us-central1-c
).cluster_name
Il nome del cluster, come viene visualizzato nell'elenco dei cluster nella consoleGoogle Cloud .
Ecco un esempio:
gke:
cluster: projects/cd-demo-01/locations/us-central1/clusters/prod
Ometti la proprietà gke
quando configuri un multi-target.
Il cluster GKE viene configurato all'interno del target secondario corrispondente.
Consulta executionConfigs
in questo documento per le descrizioni delle proprietà dell'ambiente di esecuzione. Consulta
Eseguire il deployment di un HTTPRoute in un cluster diverso per informazioni sul deployment di HTTPRoute in un cluster alternativo non di destinazione.
dnsEndpoint
Se impostato su true
, Cloud Deploy si connette al cluster GKE utilizzando l'endpoint DNS anziché l'endpoint predefinito, che può essere un IP pubblico, un IP privato o l'endpoint DNS, a seconda della configurazione del cluster.
Questa opzione non può essere utilizzata contemporaneamente all'opzione internalIp
.
internalIp
Se impostato su true
, Cloud Deploy si connette al cluster GKE utilizzando l'indirizzo IP privato anziché l'endpoint predefinito, che può essere un IP pubblico, un IP privato o l'endpoint DNS, a seconda della configurazione del cluster.
Questa opzione non può essere utilizzata contemporaneamente all'opzione dnsEndpoint
. Poiché
la configurazione di rete per dnsEndpoint
è molto più semplice, consigliamo di utilizzare
questo metodo.
proxyUrl
Se accedi ai cluster tramite un proxy HTTP, fornisci la proprietà proxyUrl
qui. Il valore è l'URL del proxy, che viene
trasmesso a kubectl
quando ti connetti al cluster.
Per le destinazioni Cloud Run
Il seguente file YAML mostra come configurare una destinazione che esegue il deployment in un servizio Cloud Run:
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
Il nome di questo target. Questo nome deve essere univoco per regione.
metadata.annotations
e metadata.labels
La configurazione di destinazione supporta annotazioni ed etichette, ma Cloud Deploy non le richiede.
Le annotazioni e le etichette vengono memorizzate con la risorsa di destinazione. Per saperne di più, vedi Utilizzare etichette e annotazioni con Cloud Deploy.
description
Questo campo accetta una stringa arbitraria che descrive l'utilizzo di questo target.
multiTarget.targetIds: []
Questa proprietà è facoltativa e viene utilizzata per configurare un multi-target da utilizzare per l'implementazione parallela.
Il valore è un elenco separato da virgole di target secondari.
I target secondari sono configurati come target normali e non includono questa
proprietà multiTarget
.
requireApproval
Indica se la promozione a questo target richiede l'approvazione manuale. Può essere true
o
false
.
Questa proprietà è facoltativa. Il valore predefinito è false
.
Quando configuri l'implementazione parallela, puoi richiedere l'approvazione solo per il target multiplo, non per i target secondari.
run
Solo per i servizi Cloud Run, la località in cui verrà creato il servizio:
run:
location: projects/[project_name]/locations/[location]
project_name
Il progetto Google Cloud in cui risiederà il servizio.
location
La posizione in cui risiederà il servizio. Ad esempio,
us-central1
.
Ometti la proprietà run
quando configuri un [multi-target]. La posizione del servizio Cloud Run è configurata invece all'interno della destinazione secondaria corrispondente.
Consulta la sezione executionConfigs
di questo articolo per le descrizioni
delle proprietà dell'ambiente di esecuzione.
Per i target GKE Enterprise
La configurazione della destinazione per
l'deployment in un cluster GKE è simile
alla configurazione di una destinazione per una destinazione GKE,
tranne per il fatto che la proprietà è anthosCluster.membership
anziché gke.cluster
, il percorso della risorsa è diverso e i metodi di connessione specifici
(dnsEndpoint
o internalIp
) non sono
applicabili.
anthosCluster:
membership: projects/[project_name]/locations/global/memberships/[membership_name]
project_name
Il progetto Google Cloud in cui si trova il cluster GKE Enterprise.
/location/global/
La località in cui è registrato il cluster.
global
, in tutti i casi.membership_name
Il nome dell'appartenenza al cluster GKE Enterprise.
Ecco un esempio:
anthosCluster:
membership: projects/cd-demo-01/locations/global/memberships/prod
Ometti la proprietà anthosCluster
quando configuri un [multi-target]. Il cluster GKE Enterprise viene configurato all'interno del target secondario corrispondente.
Per saperne di più sul deployment nei cluster GKE, vedi Deployment nei cluster utente Anthos.
Per i target personalizzati
La configurazione per i target personalizzati è simile a
tutti gli altri tipi di target, tranne per il fatto che non include una sezione gke
, una sezione
run
o una sezione anthosCluster
.
I target personalizzati, invece, includono una stanza customTarget
:
customTarget:
customTargetType: [CUSTOM_TARGET_TYPE_NAME]
dove CUSTOM_TARGET_TYPE_NAME
è il nome che hai utilizzato nella
definizione del tipo di target personalizzato.
Ecco un esempio:
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: sample-env
customTarget:
customTargetType: basic-custom-target
executionConfigs
Un insieme di campi per specificare un ambiente di esecuzione non predefinito per questo target.
usages
RENDER
oDEPLOY
o entrambi, piùPREDEPLOY
,VERIFY
oPOSTDEPLOY
se verifica o deploy hooks sono attivati sulla destinazione. Indicano quale di queste operazioni eseguire per questa destinazione utilizzando questo ambiente di esecuzione. Per indicare che un ambiente di esecuzione personalizzato deve essere utilizzato per l'hook pre-deployment, il rendering, il deployment, l'hook post-deployment e la verifica, devi configurarlo nel seguente modo:usages: - RENDER - PREDEPLOY - DEPLOY - VERIFY - POSTDEPLOY
Se la verifica è attivata nella fase della pipeline e non specifichi
VERIFY
in una sezioneusages
, Cloud Deploy utilizza l'ambiente di esecuzione predefinito per la verifica. Gli hook di pre-deployment e post-deployment funzionano allo stesso modo.Tuttavia, se esiste un ambiente di esecuzione personalizzato per
RENDER
eDEPLOY
, devi specificarne uno perVERIFY
,PREDEPLOY
OPOSTDEPLOY
se sono configurati nella pipeline di distribuzione.VERIFY
,PREDEPLOY
ePOSTDEPLOY
possono trovarsi nello stessousages
diRENDER
oDEPLOY
oppure inusages
separati.Non puoi specificare
usages.VERIFY
,usages.PREDEPLOY
ousages.POSTDEPLOY
a meno cheRENDER
eDEPLOY
non siano specificati nello stesso ambiente di esecuzione personalizzato o in ambienti separati.workerPool
Configurazione del pool di worker da utilizzare. Questo percorso di risorsa identifica il pool di worker di Cloud Build da utilizzare per questa destinazione. Ad esempio:
projects/p123/locations/us-central1/workerPools/wp123
.Per utilizzare il pool Cloud Build predefinito, ometti questa proprietà.
Un determinato target può avere due
workerPool
(uno perRENDER
e uno perDEPLOY
). Quando configuri il pool predefinito, puoi specificare un account di servizio o una posizione di archiviazione alternativi o entrambi.serviceAccount
Il nome del account di servizio da utilizzare per questa operazione (
RENDER
oDEPLOY
) per questa destinazione.artifactStorage
Il bucket Cloud Storage da utilizzare per questa operazione (
RENDER
oDEPLOY
) per questa destinazione, anziché il bucket predefinito.executionTimeout
Facoltativo. Imposta il timeout, in secondi, per le operazioni che Cloud Build esegue per Cloud Deploy. Per impostazione predefinita, questo valore è
3600
secondi (1 ora).
Esempio:executionTimeout: "5000s"
verbose
Facoltativo. Se
true
, i livelli di dettaglio sono impostati sudebug
per i seguenti strumenti:Skaffold
--verbosity
è impostato sudebug
. Il valore predefinito di Skaffold èwarn
.kubectl
--v
è impostato su4
, ovvero debug. Il valore predefinito di kubectl è2
.Google Cloud CLI
--verbosity
è impostato sudebug
. Il valore predefinito èwarning
.
Sintassi alternativa supportata
La configurazione executionConfigs
descritta in questo documento è nuova. La
sintassi precedente è ancora supportata:
executionConfigs:
- privatePool:
workerPool:
serviceAccount:
artifactStorage:
usages:
- [RENDER | DEPLOY]
- defaultPool:
serviceAccount:
artifactStorage:
usages:
- [RENDER | DEPLOY]
Quando configuri una sezione executionConfigs
per un
target multiplo, ogni target figlio
può ereditare l'ambiente di esecuzione
dal target multiplo.
Definizioni dei tipi di target personalizzati
Questa sezione descrive i campi utilizzati per definire tipi di target personalizzati
Come per i target e le automazioni standard, le definizioni CustomTargetType
possono essere incluse nella definizione della pipeline di pubblicazione o in uno o più file separati.
Il seguente YAML mostra come configurare un tipo di target personalizzato:
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:
Dove:
[CUSTOM_TARGET_TYPE_NAME]
È un nome arbitrario che assegni a questa definizione del tipo di target personalizzato. Questo nome viene utilizzato nella definizione del target per qualsiasi target che utilizza il tipo di target personalizzato che stai definendo.
[RENDER_ACTION_NAME]
È il nome dell'azione di rendering personalizzata. Questo valore è il
customAction.name
definito inskaffold.yaml
.[DEPLOY_ACTION_NAME]
È il nome dell'azione di deployment personalizzata. Questo valore è il
customAction.name
definito inskaffold.yaml
.Per
includeSkaffoldModules
, vedi Utilizzare le configurazioni Skaffold remote.
Definizioni di Automation
Questa sezione descrive i campi utilizzati per definire le risorse di automazione di Cloud Deploy.
Come per i target, le definizioni di Automation
possono essere incluse nella definizione della pipeline di pubblicazione o in uno o più file separati.
Per saperne di più sull'automazione in Cloud Deploy, consulta la documentazione sull'automazione.
Il seguente YAML mostra come configurare un'automazione. Tieni presente che i dettagli di una regola di automazione variano a seconda della regola. La configurazione per i tipi di regole di automazione disponibili è descritta nel documento Utilizzo delle regole di automazione.
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]
Dove:
[PIPELINE_NAME]
È uguale al valore
metadata.name
nella pipeline di pubblicazione che utilizza questa automazione. Tutte le automazioni sono esclusive delle pipeline di distribuzione per cui vengono create. ovvero non puoi condividere un'automazione in più di una pipeline di distribuzione.[PURPOSE]
È un nome descrittivo aggiuntivo per questa automazione. In genere, si tratta dell'azione automatizzata. Ad esempio,
my-app-pipeline/promote
.labels
eannotations
sono etichette o annotazioni che vuoi associare a questa automazione.[DESCRIPTION]
È una descrizione facoltativa per questa automazione.
suspended
true
ofalse
, che indica se l'automazione è attiva o sospesa. Se impostato sutrue
, l'automazione non viene utilizzata. Questo può essere utile per testare un'automazione senza influire sulla pipeline di pubblicazione.[SERVICE_ACCOUNT_ID]
È l'ID del account di servizio utilizzato per eseguire l'automazione. Ad esempio, se l'automazione utilizza
promoteReleaseRule
, questo account di servizio esegue la promozione della release e pertanto richiede le autorizzazioni necessarie per promuovere una release.È obbligatorio specificare un valore per questa proprietà. Cloud Deploy non utilizza il service account predefinito per le automazioni.
Questo account di servizio deve disporre delle seguenti autorizzazioni:
actAs
per rappresentare l'account di servizio di esecuzione.autorizzazione per eseguire l'operazione che viene automatizzata, ad esempio
clouddeploy.releases.promote
per promuovere una release oclouddeploy.rollouts.advance
per far avanzare una fase di implementazione.
[TARGET_ID]
È l'ID del target per cui viene utilizzata questa automazione. Sebbene un'automazione sia associata a una pipeline di pubblicazione, viene eseguita solo sul target o sui target specificati.
Puoi impostare questo valore su
*
per selezionare tutti i target nella pipeline di pubblicazione.[LABEL_KEY]:[LABEL_VALUE]
È una coppia chiave-valore da confrontare con una coppia chiave-valore definita nella destinazione. Seleziona tutte le destinazioni associate alla pipeline di pubblicazione che hanno la stessa etichetta e lo stesso valore.
[RULE_TYPE]
È il nome della regola di automazione utilizzata per questa automazione. Si tratta di
promoteReleaseRule
,timedPromoteReleaseRule
,advanceRolloutRule
orepairRolloutRule
. Puoi includere più di una regola in un'automazione, inclusa più di una stessaRULE_TYPE
. Ad esempio, puoi avere più di una regolapromoteReleaseRule
nella stessa automazione. Scopri di più.[RULE_NAME]
Un nome per la regola. Questo nome deve essere univoco all'interno della pipeline di distribuzione. È obbligatorio specificare un valore per questa proprietà.
[RULE-SPECIFIC_CONFIG]
La configurazione è diversa per ogni tipo di automazione supportato. Queste configurazioni sono mostrate in Utilizzo delle regole di automazione.
Definizioni delle policy di deployment
Questa sezione descrive i campi utilizzati per definire le norme di implementazione.
Come per le altre risorse Cloud Deploy, puoi includere le definizioni DeployPolicy
nella definizione della pipeline di distribuzione o in un file separato.
Il seguente file YAML mostra come configurare un criterio di deployment:
apiVersion: deploy.cloud.google.com/v1
kind: DeployPolicy
metadata:
name: [POLICY_NAME]
annotations: [ANNOTATIONS]
labels: [LABELS]
description: [DESCRIPTION]
suspended: [true | false]
selectors:
- deliveryPipeline:
id: [PIPELINE_ID]
labels:
[LABEL_KEY]:[LABEL_VALUE]
target:
id: [TARGET_ID]
labels:
[LABEL_KEY]:[LABEL_VALUE]
rules:
- [RULE_TYPE]
[CONFIGS]
Dove:
[DESCRIPTION]
È un testo facoltativo che descrive questa norma.
[POLICY_NAME]
Un nome da assegnare al criterio. Questo campo accetta una stringa che deve essere univoca per progetto e località. Deve essere composto da lettere minuscole, numeri e trattini, il primo carattere deve essere una lettera, l'ultimo carattere una lettera o un numero e il numero massimo di caratteri è 63. Questo nome viene utilizzato come nome visualizzato nella consoleGoogle Cloud .
[ANNOTATIONS]
e[LABELS]
Le norme possono includere annotazioni ed etichette, che fanno parte della risorsa dopo la creazione. Per ulteriori informazioni, vedi Utilizzo di annotazioni ed etichette con Cloud Deploy.
suspended: [true | false]
Se
suspended
viene impostato sutrue
, questo criterio viene disattivato.[PIPELINE_ID]
È l'ID della pipeline di pubblicazione che vuoi che questo criterio influenzi. Puoi utilizzare
*
per indicare tutte le pipeline. Questo ID corrisponde alla proprietàmetadata.name
nella pipeline di distribuzione.[TARGET_ID]
È l'ID della destinazione che vuoi che questo criterio influenzi. Puoi utilizzare
*
per indicare tutti i target. Questo ID è uguale alla proprietàmetadata.name
nella destinazione.[LABEL_KEY]:[LABEL_VALUE]
È una coppia chiave-valore da confrontare con una coppia chiave-valore definita nella pipeline di pubblicazione o nel target. In questo modo vengono selezionate tutte le pipeline o tutti i target con la stessa etichetta e lo stesso valore. Puoi specificare
labels
anzichéid
o in aggiunta a questa proprietà.[RULE_TYPE]
È il tipo di regola specifica del criterio che stai configurando. L'unico valore valido è
rolloutRestriction
.[CONFIGS]
È l'insieme delle proprietà di configurazione per la regola di policy specifica che stai creando. La configurazione delle regole è descritta più avanti in questa sezione di questo riferimento, per ciascuna delle regole disponibili.
Regole dei criteri di deployment
Questa sezione descrive come configurare ogni regola dei criteri di implementazione.
rolloutRestriction
La regola rolloutRestriction
impedisce a Cloud Deploy di eseguire
determinate operazioni sui rollout durante la
finestra o le finestre temporali specificate, per le pipeline di distribuzione e i target
indicati da selectors
per il criterio di deployment.
Il seguente YAML mostra come configurare una regola rolloutRestriction
:
rules:
- rolloutRestriction:
id: [RULE_ID]
actions:
- [ACTIONS]
invokers:
- [INVOKERS]
timeWindows:
timeZone: [TIMEZONE]
oneTimeWindows:
- start: [START_DATE_TIME]
end: [END_DATE_TIME]
weeklyWindows:
- daysOfWeek:
- [DAY_OF_WEEK]
- [DAY_OF_WEEK]
startTime: [START_TIME]
endTime: [END_TIME]
Dove:
RULE_ID
Un identificatore per questa regola. Campo obbligatorio. Deve essere composto da lettere minuscole, numeri e trattini, con il primo carattere una lettera, l'ultimo carattere una lettera o un numero e un massimo di 63 caratteri. Deve essere univoco all'interno del criterio di deployment.
ACTIONS
(Facoltativo) Azioni di implementazione da limitare nell'ambito del criterio. Se è vuoto, tutte le azioni sono limitate. I valori validi sono:
ADVANCE
Le fasi di implementazione non possono essere avanzate.
APPROVE
La promozione di lancio non può essere approvata.
CANCEL
I rollout non possono essere annullati.
CREATE
Non è possibile creare i lanci.
IGNORE_JOB
I job non possono essere ignorati.
RETRY_JOB
I job non possono essere riprovati.
ROLLBACK
I rollout non possono essere annullati.
TERMINATE_JOBRUN
L'esecuzione dei job non può essere terminata
INVOKERS
La specifica degli autori della chiamata filtra l'applicazione delle policy a seconda che l'azione soggetta a limitazioni sia stata richiamata da un utente o da un'automazione del deployment. I valori validi sono:
USER
L'azione è guidata dall'utente. Ad esempio, la creazione manuale di un rollout utilizzando un comando gcloud CLI.
DEPLOY_AUTOMATION
Un'azione automatica di Cloud Deploy.
Puoi specificare uno o entrambi i valori. Il valore predefinito, se non specifichi nulla, è entrambi.
TIMEZONE
Il fuso orario, nel formato IANA, in cui esprimi la finestra temporale. Ad esempio,
America/New_York
. Campo obbligatorio.START_DATE_TIME
Per
oneTimeWindows
, la data e l'ora che segnano l'inizio della finestra di limitazione, nel formato"yyyy-mm-dd hh:mm"
. Per l'inizio della giornata, utilizza00:00
. Questo campo è obbligatorio.END_DATE_TIME
Per
oneTimeWindows
, la data e l'ora che segnano la fine della finestra di limitazione, nel formato"yyyy-mm-dd hh:mm"
. Per la fine della giornata, utilizza24:00
. Questo campo è obbligatorio.DAY_OF_WEEK
Per
weeklyWindows
, il giorno della settimana,SUNDAY
,MONDAY
,TUESDAY
,WEDNESDAY
,THURSDAY
,FRIDAY
oSATURDAY
. Se lasci vuoto questo campo, la corrispondenza viene trovata per tutti i giorni della settimanaSTART_TIME
Per
weeklyWindows
, l'ora di inizio nel giorno della settimana specificato. Se includi un orario di inizio, devi includere un orario di fine. Per l'inizio della giornata, usa00:00
.END_TIME
Per
weeklyWindows
, l'ora di fine nel giorno della settimana specificato. Se includi un orario di inizio, devi includere un orario di fine. Per la fine della giornata, utilizza24:00
.
Passaggi successivi
Scopri di più su come funziona Cloud Deploy.
Scopri come configurare una pipeline di distribuzione per la tua applicazione.
Scopri come gestire i manifest.
Evita mancate corrispondenze tra la release e la pipeline di distribuzione scoprendo di più sulle istanze della pipeline.