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 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:
Lo strumento di gestione dei manifest genera il manifest.
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 automaticamente, in base ai contenuti del tuo repository.
Installa Skaffold utilizzando Google Cloud CLI:
gcloud components install skaffold
Esegui
skaffold init
nel repository che contiene i tuoi manifest:skaffold init --skip-build
Questo comando crea un file skaffold.yaml
nel repository. che fa riferimento ai manifest nel repository. I contenuti avranno 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
Rendering dei manifest non elaborati
I manifest non elaborati sono manifest che non sono gestiti da uno strumento come Helm o Kustomize e, di conseguenza, non richiedono alcuna pre-elaborazione prima di essere idratati e di cui viene eseguito il deployment in un cluster.
Per impostazione predefinita, Cloud Deploy utilizza skaffold render
per il rendering dei manifest Kubernetes, sostituendo i nomi delle immagini senza tag con
i nomi delle immagini taggati 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
di 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 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 in pacchetto o di una directory di grafici Helm non pacchettizzata.
Puoi utilizzare ulteriori opzioni di configurazione Helm, come descritto nella documentazione di Skaffold
Rendering con Kustomize
Puoi utilizzare Kustomize con Cloud Deploy. Per farlo, devi posizionare il cursore sui file di Kustomization dall'interno della stanza deploy
nella configurazione del tuo profilo skaffold.yaml
.
Includi una configurazione Kustomize separata per ogni target per cui utilizzi Kustomize, in 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 di Kustomization. Il valore predefinito è
["."]
Puoi utilizzare opzioni di configurazione aggiuntive di Kustomize, come descritto nella documentazione di Skaffold
Configurare manifest diversi per target
Spesso ogni target necessita di 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 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 configurarlo come segue:
apiVersion: skaffold/v4beta7
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/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
Questi profili, definiti in skaffold.yaml
, vengono indicati nella configurazione della pipeline di pubblicazione in base alla destinazione:
serialPipeline:
stages:
- targetId: staging-target
profiles:
- staging
- targetId: prod-target
profiles:
- prod
Passaggi successivi
- Scopri di più sulla configurazione della pipeline di distribuzione di Cloud Deploy.
- Prova la procedura dettagliata per i profili Skaffold di Cloud Deploy
- Scopri di più su Kustomize.
- Scopri di più su Helm.
- Scopri di più su Kpt
- Prendi in considerazione l'utilizzo di Artifact Registry per archiviare artefatti come grafici Helm o Kustomization.