Gestire i manifest in Google Cloud Deploy

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Questa pagina descrive come configurare Google Cloud Deploy per il rendering della configurazione di ogni destinazione in una pipeline di distribuzione.

Google Cloud Deploy utilizza Skaffold per eseguire il rendering dei manifest Kubernetes. Il servizio supporta il rendering di manifest non elaborati e strumenti di gestione manifest più avanzati, come Helm, Kustomize e kpt.

Il processo di rendering si articola in due fasi:

  1. Lo strumento di gestione manifest genera il manifest.

  2. Skaffold sostituisce i riferimenti all'immagine nel manifest con le immagini che vuoi implementare nella release.

Questa pagina include esempi di configurazione che utilizzano Helm e Kustomize.

L'utilizzo di Skaffold per generare la configurazione

Se non hai ancora un file di configurazione di Skaffold (skaffold.yaml), puoi utilizzare Skaffold per generarne uno in base a ciò che è presente nel tuo repository.

  1. Installa Skaffold utilizzando Google Cloud CLI:

    gcloud components install skaffold

  2. Esegui skaffold init nel repository che contiene i tuoi manifest:

    skaffold init --skip-build

Questo comando crea un file skaffold.yaml nel repository. Il file fa riferimento ai manifest nel repository. I contenuti avranno il seguente aspetto:

apiVersion: skaffold/v2beta15
kind: Config
metadata:
 name: sample-app
deploy:
 kubectl:
   manifests:
   - k8s-manifests/deployment.yaml
   - k8s-manifests/rbac.yaml
   - k8s-manifests/redis.yaml
   - k8s-manifests/service.yaml

Rendering dei file manifest non elaborati

I manifest non elaborati sono gestiti da uno strumento come Helm o Kustomize e pertanto non richiedono alcuna pre-elaborazione prima di essere idratati e di cui è stato eseguito il deployment in un cluster.

Per impostazione predefinita, Google Cloud Deploy utilizza skaffold render per il rendering dei manifest Kubernetes, sostituendo i nomi delle immagini non taggate con i nomi delle immagini taggati delle immagini container di cui esegui il deployment. Quindi, quando promuovi la release, Google Cloud Deploy utilizza skaffold apply per applicare i manifest ed eseguire il deployment delle immagini nel tuo cluster Google Kubernetes Engine.

Una versione deploy di una configurazione di base ha il seguente aspetto:

deploy:
  kubectl:
    manifests:
      - PATH_TO_MANIFEST

Per ulteriori informazioni sui valori che possono essere passati qui, consulta la documentazione di Skaffold.

Eseguire il rendering usando Helm

Puoi utilizzare Google Cloud Deploy per eseguire il rendering dei grafici Helm. Per farlo, includi i dettagli del grafico Helm in una intestazione deploy in un profilo Skaffold.

Ogni definizione di questo tipo ha il seguente aspetto:

apiVersion: skaffold/v2beta16
kind: Config
deploy:
 helm:
   releases:
     - name: RELEASE_NAME
       chartPath: PATH_TO_HELM_CHART
       artifactOverrides:
         image: IMAGE_NAME

Dove:

RELEASE_NAME è il nome dell'istanza del grafico Helm per questa release.

PATH_TO_HELM_CHART è il percorso locale di un grafico Helm pacchettizzato o di una directory del grafico Helm non pacchettizzata.

IMAGE_NAME è il nome dell'immagine container di cui stai eseguendo il deployment.

Il grafico Helm deve avere un parametro image che definisce l'immagine da sottoporre a deployment nel grafico.

Puoi utilizzare altre opzioni di configurazione di Helm, come descritto nella documentazione di Skaffold

Rendering tramite Kustomize

Puoi utilizzare Kustomize con Google Cloud Deploy. Per farlo, seleziona i file Kustomization dalla sezione deploy nella configurazione del tuo profilo skaffold.yaml.

Includi una configurazione Kustomize separata per ogni target per il quale stai utilizzando Kustomize, sotto ogni profile corrispondente nel tuo skaffold.yaml.

Ogni definizione di questo tipo ha il seguente aspetto:

apiVersion: skaffold/v2beta16
kind: Config
metadata:
 name: getting-started-kustomize
deploy:
 kustomize:
   paths:
     - PATH_TO_KUSTOMIZE

Dove:

PATH_TO_KUSTOMIZE rimanda ai tuoi file Kustomization. Il valore predefinito è ["."]

Puoi utilizzare opzioni di configurazione aggiuntive di Kustomize, come descritto nella documentazione di Skaffold

Configurazione di manifest diversi per destinazione

Spesso ogni destinazione ha una configurazione leggermente diversa. Ad esempio, potresti avere più repliche nei deployment in produzione che in quelli temporanei.

Puoi eseguire il rendering di un set diverso di manifest per ogni destinazione fornendo ogni variante come un profilo Skaffold diverso.

Profili con manifest non elaborati

Quando lavori con manifest non elaborati, puoi puntare Google Cloud Deploy su un file diverso, a seconda della destinazione. Puoi configurarla nel seguente modo:

apiVersion: skaffold/v2beta16
kind: Config
metadata:
 name: getting-started
profiles:
 - name: prod
   deploy:
     kubectl:
       manifests:
         - prod.yaml
 - name: staging
   deploy:
     kubectl:
       manifests:
         - staging.yaml

Profili con Kustomize

Ecco un esempio di skaffold.yaml che ha profili diversi per la gestione temporanea e la produzione utilizzando Kustomize, in cui ogni profilo rimanda a una diversa Kunsomization:

apiVersion: skaffold/v2beta16
kind: Config
profiles:
 - name: prod
   deploy:
     kustomize:
       paths:
         - environments/prod
 - name: staging
   deploy:
     kustomize:
       paths:
         - environments/staging

Profili a cui viene fatto riferimento nella pipeline di distribuzione

Questi profili, definiti in skaffold.yaml, fanno riferimento alla configurazione della pipeline di distribuzione, per destinazione:

serialPipeline:
 stages:
 - targetId: staging-target
   profiles:
   - staging
 - targetId: prod-target
   profiles:
   - prod

Passaggi successivi