Riferimento allo schema di configurazione

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:

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 deployment standard.

  • 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 o DEPLOY o entrambi, più PREDEPLOY, VERIFY o POSTDEPLOY 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 sezione usages, 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 e DEPLOY, devi specificarne uno per VERIFY, PREDEPLOY O POSTDEPLOY se sono configurati nella pipeline di distribuzione.VERIFY, PREDEPLOY e POSTDEPLOY possono trovarsi nello stesso usages di RENDER o DEPLOY oppure in usages separati.

    Non puoi specificare usages.VERIFY, usages.PREDEPLOY o usages.POSTDEPLOY a meno che RENDER e DEPLOY 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 per RENDER e uno per DEPLOY). 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 o DEPLOY) per questa destinazione.

  • artifactStorage

    Il bucket Cloud Storage da utilizzare per questa operazione (RENDER o DEPLOY) 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 su debug per i seguenti strumenti:

    • Skaffold --verbosity è impostato su debug. Il valore predefinito di Skaffold è warn.

    • kubectl --v è impostato su 4, ovvero debug. Il valore predefinito di kubectl è 2.

    • Google Cloud CLI --verbosity è impostato su debug. 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 in skaffold.yaml.

  • [DEPLOY_ACTION_NAME]

    È il nome dell'azione di deployment personalizzata. Questo valore è il customAction.name definito in skaffold.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 e annotations sono etichette o annotazioni che vuoi associare a questa automazione.

  • [DESCRIPTION]

    È una descrizione facoltativa per questa automazione.

  • suspended

    true o false, che indica se l'automazione è attiva o sospesa. Se impostato su true, 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 o clouddeploy.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 o repairRolloutRule. Puoi includere più di una regola in un'automazione, inclusa più di una stessa RULE_TYPE. Ad esempio, puoi avere più di una regola promoteReleaseRule 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 su true, 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, utilizza 00: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, utilizza 24:00. Questo campo è obbligatorio.

  • DAY_OF_WEEK

    Per weeklyWindows, il giorno della settimana, SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY o SATURDAY. Se lasci vuoto questo campo, la corrispondenza viene trovata per tutti i giorni della settimana

  • START_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, usa 00: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, utilizza 24:00.

Passaggi successivi