Gestisci i manifest in Cloud Deploy

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

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

Il processo di rendering prevede due fasi:

  1. Lo strumento di gestione dei manifest genera il manifest.

  2. Skaffold sostituisce i riferimenti alle immagini nel manifest con le immagini di cui vuoi eseguire il deployment nella release.

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

Utilizzo di Skaffold per generare la configurazione

Se non hai ancora un file di configurazione Skaffold (skaffold.yaml), puoi utilizzare Skaffold per generarne uno per te, in base ai contenuti del 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 file manifest contenuti nel repository. I contenuti hanno il seguente aspetto:

apiVersion: skaffold/v4beta6
kind: Config
metadata:
  name: sample-app
manifests:
  rawYaml:
    - k8s-manifests/deployment.yaml
    - k8s-manifests/rbac.yaml
    - k8s-manifests/redis.yaml
    - k8s-manifests/service.yaml

Rendering dei manifest non elaborati

I manifest non elaborati sono manifest che non sono gestiti da uno strumento come Helm o Kustomize e, pertanto, non richiedono alcuna pre-elaborazione prima di essere idratati e sottoposti a deployment in un cluster.

Per impostazione predefinita, Cloud Deploy utilizza skaffold render per eseguire il rendering dei manifest Kubernetes, sostituendo i nomi delle immagini senza tag con quelli delle immagini container di cui stai eseguendo il deployment. Poi, quando promuovi la release, Cloud Deploy utilizza skaffold apply per applicare i manifest ed eseguire il deployment delle immagini nel tuo cluster Google Kubernetes Engine.

Una stanza manifests da una configurazione di base ha il seguente aspetto:

manifests:
  rawYaml:
    - PATH_TO_MANIFEST

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

Rendering con Helm

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

Ognuna di queste definizioni ha il seguente aspetto:

apiVersion: skaffold/v4beta6
kind: Config
manifests:
  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 in pacchetto o di una directory di grafici Helm non pacchettizzata.

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

Il grafico Helm deve avere un parametro del valore image che definisca l'immagine di cui eseguire il deployment nel grafico.

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

Rendering con Kustomize

Puoi utilizzare Kustomize con Cloud Deploy. Per farlo, posiziona il cursore del mouse sui file di Kustomization dalla stanza deploy nella configurazione del tuo profilo skaffold.yaml.

Includi una configurazione Kustomize separata per ogni target per cui stai utilizzando Kustomize, in ogni profile corrispondente in skaffold.yaml.

Ognuna di queste definizioni ha il seguente aspetto:

apiVersion: skaffold/v4beta6
kind: Config
manifests:
  kustomize:
    paths:
      - PATH_TO_KUSTOMIZE

Dove:

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

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

Configurare manifest diversi per destinazione

Spesso, ogni destinazione richiede una configurazione leggermente diversa. Ad esempio, potresti avere più repliche nei deployment di produzione rispetto a quelli temporanei.

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

Profili con file manifest non elaborati

Quando lavori con manifest non elaborati, puoi puntare Cloud Deploy a un file diverso, a seconda della destinazione. Puoi configurarla come segue:

apiVersion: skaffold/v4beta6
kind: Config
profiles:
  - name: prod
    manifests:
      rawYaml:
        - prod.yaml
  - name: staging
    manifests:
      rawYaml:
        - staging.yaml

Profili con Kustomize

Ecco un esempio skaffold.yaml con profili diversi per la gestione temporanea e la produzione mediante Kustomize, in cui ogni profilo rimanda a una Kustomization diversa:

apiVersion: skaffold/v4beta6
kind: Config
profiles:
  - name: prod
    manifests:
      kustomize:
        paths:
          - environments/prod
  - name: staging
    manifests:
      kustomize:
        paths:
          - environments/staging

Profili a cui viene fatto riferimento nella pipeline di distribuzione

Questi profili, definiti in skaffold.yaml, fanno riferimento nella configurazione della pipeline di pubblicazione per ogni destinazione:

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

Passaggi successivi