Questa pagina descrive come configurare Cloud Deploy per il rendering della configurazione di 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 del 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.
Utilizzare 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 tuo repository.
Installa Skaffold utilizzando Google Cloud CLI:
gcloud components install skaffold
Esegui
skaffold init
nel repository che contiene i manifest:skaffold init --skip-build
Questo comando crea un file skaffold.yaml
nel repository. Il 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 non taggate con i nomi delle immagini container taggate di cui stai eseguendo il deployment. 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 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.
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 pacchettizzato o di una directory di grafici Helm scompattati.
Puoi utilizzare opzioni di configurazione di Helm aggiuntive, come descritto nella documentazione di Skaffold.
Rendering con Kustomize
Puoi utilizzare Kustomize con Cloud Deploy. Per farlo, fai riferimento ai file di Kustomization dalla stanza deploy
nella configurazione del profilo skaffold.yaml
.
Includi una configurazione Kustomize separata per ogni target per cui utilizzi Kustomize, in ogni profile
corrispondente in 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 rimanda ai file di Kustomization. Il valore predefinito è
["."]
Puoi utilizzare opzioni di configurazione di Kustomize aggiuntive, come descritto nella documentazione di Skaffold
Configurare manifest diversi per target
Spesso ogni target richiede 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 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
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
Sostituire un'immagine specifica quando crei la release
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 eseguire il deployment. Ad esempio, il seguente comando crea una release
e sostituisce il nome del segnaposto con un nome dell'immagine qualificato SHA:
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 visualizzato risultante ora contiene un riferimento all'immagine specificata instead of 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 Kustomizations.