Questa pagina descrive come configurare Cloud Deploy per il rendering della configurazione di ogni target in una pipeline di distribuzione.
Cloud Deploy utilizza Skaffold per il rendering dei manifest Kubernetes. Il servizio supporta il rendering dei 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 che 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 di Skaffold (skaffold.yaml), puoi utilizzare Skaffold per generarne uno in base ai contenuti del repository.
Installa Skaffold utilizzando Google Cloud CLI:
gcloud components install skaffoldEsegui
skaffold initnel repository che contiene i manifest:skaffold init --skip-build
Questo comando crea un file skaffold.yaml nel repository. Questo file
fa riferimento ai manifest nel repository. I contenuti hanno questo 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 non gestiti da uno strumento come Helm o Kustomize e pertanto non richiedono alcuna pre-elaborazione 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 i nomi delle immagini con tag 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 cluster Google Kubernetes Engine.
Una sezione manifests di una configurazione di base ha questo aspetto:
manifests:
rawYaml:
- PATH_TO_MANIFEST
Per saperne di più sui valori che possono essere passati qui, consulta la documentazione di Skaffold.
Rendering con Helm
Puoi utilizzare Cloud Deploy per il rendering dei grafici Helm. Per farlo, includi i dettagli del grafico Helm in una sezione deploy di un profilo Skaffold.
Ogni definizione di questo tipo 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 compresso o di una directory di grafici Helm decompressi.
Puoi utilizzare opzioni di configurazione Helm aggiuntive, come descritto nella documentazione di Skaffold.
Rendering con Kustomize
Puoi utilizzare Kustomize con Cloud Deploy. Per
farlo, devi puntare ai file Kustomization dalla sezione deploy nella
configurazione del profilo skaffold.yaml.
Includi una configurazione Kustomize separata per ogni target per cui utilizzi Kustomize, in ogni profile corrispondente nel file skaffold.yaml.
Ogni definizione di questo tipo ha il seguente aspetto:
apiVersion: skaffold/v4beta7
kind: Config
manifests:
kustomize:
paths:
- PATH_TO_KUSTOMIZE
Dove:
PATH_TO_KUSTOMIZE indica i file di personalizzazione. Il valore predefinito è
["."]
Puoi utilizzare ulteriori opzioni di configurazione di Kustomize, come descritto nella documentazione di Skaffold.
Configurazione di manifest diversi per target
Spesso ogni target richiede una configurazione leggermente diversa. Ad esempio, potresti avere più repliche nelle implementazioni di produzione rispetto a quelle di staging.
Puoi eseguire il rendering di un insieme diverso di manifest per ogni target fornendo ogni variante come un profilo Skaffold diverso.
Profili con manifest non elaborati
Quando lavori con i manifest grezzi, puoi indirizzare Cloud Deploy a un file diverso, a seconda della destinazione. Puoi configurarlo nel seguente modo:
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 lo staging e la produzione che utilizzano Kustomize, in cui ogni profilo punta a una personalizzazione 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 referenziati nella configurazione della pipeline di distribuzione, per destinazione:
serialPipeline:
stages:
- targetId: staging-target
profiles:
- staging
- targetId: prod-target
profiles:
- prod
Sostituisci un'immagine specifica quando crei l'uscita
Il manifest può utilizzare un segnaposto per il nome dell'immagine, che puoi sostituire quando crei la release.
Ecco un esempio di manifest con un segnaposto per l'immagine:
apiVersion: v1
kind: Deployment
metadata:
name: getting-started
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: my-app-image
Quando crei la release, puoi utilizzare il flag --images= per identificare l'immagine specifica da implementare. Ad esempio, il seguente comando crea una release
e sostituisce un nome immagine qualificato SHA con il nome segnaposto:
gcloud deploy releases create test-release-001 \
--project=test-gke-using-deployment \
--region=us-central1 \
--delivery-pipeline=my-gke-demo-app-1 \
--images=my-app-image=gcr.io/google-containers/nginx@sha256:f49a843c290594dcf4d193535d1f4ba8af7d56cea2cf79d1e9554f077f1e7aaa
Il manifest sottoposto a rendering risultante ora ha un riferimento all'immagine specificata
anziché my-app-image.
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
- Valuta la possibilità di utilizzare Artifact Registry per archiviare artefatti come grafici Helm o Kustomization.