Gestisci i manifest in Cloud Deploy

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

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

Il processo di rendering prevede due fasi:

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

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

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

Utilizzare Skaffold per generare la configurazione

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

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

Eseguire il 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 preelaborazione prima di essere idratati e implementati 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 dei nomi delle immagini container di cui stai eseguendo il deployment. Poi, promuovere la release, Cloud Deploy utilizza skaffold apply per applicare i manifest ed eseguire il deployment delle immagini in Google Kubernetes Engine in un cluster Kubernetes.

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

manifests:
  rawYaml:
    - PATH_TO_MANIFEST

Per ulteriori informazioni su quali valori possono essere passati qui, consulta la documentazione di Skaffold.

Eseguire il rendering utilizzando Helm

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

Ognuna di queste definizioni ha il seguente aspetto:

apiVersion: skaffold/v4beta7
kind: Config
manifests:
  helm:
    releases:
      - name: RELEASE_NAME
        chartPath: PATH_TO_HELM_CHART

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 di grafici Helm scompattati.

Puoi usare altre opzioni di configurazione di Helm, come descritto in Documentazione Skaffold

Rendering con Kustomize

Puoi utilizzare Kustomize con Cloud Deploy. A per farlo, devi posizionare il puntatore del mouse sui file Kustomization dalla stanza deploy la configurazione del profilo skaffold.yaml.

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

Ognuna di queste definizioni ha il seguente aspetto:

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

Dove:

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

Puoi utilizzare altre opzioni di configurazione di Kustomize, come descritto in Documentazione Skaffold

Configurazione di manifest diversi per destinazione

Spesso ogni target necessita di una configurazione leggermente diversa. Ad esempio, potresti avere più repliche nei deployment di produzione rispetto a quelli di staging.

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

Profili con manifest non elaborati

Quando lavori con manifest non elaborati, puoi indirizzare Cloud Deploy a un file diverso, a seconda del target. Puoi configurarla come segue:

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

Profili con Kustomize

Di seguito è riportato un esempio skaffold.yaml con profili diversi per le operazioni di staging e produzione che utilizzano Kustomize, in cui ogni profilo punta a una kustomization diversa:

apiVersion: skaffold/v4beta7
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

A questi profili, definiti in skaffold.yaml, viene fatto riferimento nella configurazione della pipeline di distribuzione, per destinazione:

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

Passaggi successivi