Con Cloud Deploy puoi passare i parametri per la release e quelli
vengono forniti al manifest o ai manifest prima che questi vengano
applicati ai rispettivi target. Questa sostituzione viene eseguita dopo i manifest
vengono renderizzati come passaggio finale nella
Operazione di rendering di Cloud Deploy. I valori vengono forniti per tutti i manifest
identificate nel file skaffold.yaml
che contengono i dati corrispondenti
segnaposto.
Devi solo includere dei segnaposto nel file manifest e impostare i valori per i segnaposto nella pipeline di distribuzione di Cloud Deploy o la configurazione di destinazione oppure quando crei una release.
Questo articolo descrive come farlo.
Perché utilizzare i parametri di deployment?
Un uso tipico di questa tecnica è l'applicazione di valori diversi ai manifest per target diversi in un deployment parallelo. Ma puoi utilizza i parametri di deployment per tutto ciò che richiede una coppia chiave-valore post-rendering sostituzione nel file manifest.
Come funziona
I passaggi seguenti descrivono il processo generale per la configurazione del deployment e fornire i valori:
Devi configurare la parametrizzazione del deployment, come descritto qui
È incluso quanto segue:
Aggiungi i segnaposto al file manifest.
Aggiungi i valori per i segnaposto.
Esistono tre modi per farlo, descritti qui.
Quando crei una release, il file manifest è rendered.
Se inizi con un manifest basato su modello, i valori vengono applicati ora per il modello come la codifica one-hot delle variabili categoriche. Se inizi con un manifest non elaborato, questo rimane invariato. Questo Il rendering viene eseguito da Skaffold.
Tuttavia, nel manifest possono essere presenti altre variabili per i valori relativi. non vengono applicate al momento del rendering. Questi sono i parametri di deployment descritti in questo documento.
Al momento della creazione della release, tutti i parametri di deployment vengono compilati in un dictionary, utilizzato per sostituire valori prima di e i file manifest.
Dopo il rendering, Cloud Deploy sostituisce i valori per il deployment parametri.
Questi sono i valori configurati nel primo passaggio.
Il processo di rendering ha già applicato valori ai modelli manifest. la sostituzione di alcuni valori e l'aggiunta di etichette specifiche con Cloud Deploy. ma i valori dei parametri di deployment vengono sostituiti dopo il rendering. Le differenze tra i modelli di manifest vengono descritti i parametri qui
Il manifest viene applicato al runtime di destinazione per eseguire il deployment dell'applicazione.
Sono inclusi i valori sostituiti al momento del rendering e i valori per qualsiasi parametri di deployment
Diversi modi per trasmettere i valori
Puoi fornire i parametri e i valori di questi parametri in tre modi:
Nella definizione della pipeline di distribuzione
Il parametro e il suo valore vengono forniti nella definizione di una fase nel dell'avanzamento della pipeline di distribuzione. Il parametro viene passato al target rappresentati da quella fase. Se quella fase fa riferimento a un multi-target, i valori impostati qui vengono usati per tutti i target figlio.
Questo metodo consente di sostituire un valore per tutte le release all'interno di una determinata pipeline, per tutti i target interessati. I parametri definiti per una fase identificano un'etichetta, e il target corrispondente per quella fase deve avere un'etichetta corrispondente.
-
Puoi configurare il parametro e il suo valore nella definizione del target per trovare le regole. Questo metodo consente di sostituire un valore per quel target per tutte le release.
Nella riga di comando, quando crei una release
Includi il parametro e il suo valore utilizzando il flag
--deploy-parameters
sul comandogcloud deploy releases create
.Questo metodo ti consente di sostituire un valore al momento della creazione della release, applicandolo ai manifest di tutti i target interessati.
La configurazione di queste opzioni è spiegata in modo più dettagliato qui
Posso utilizzare più di uno di questi metodi?
Sì, puoi includere parametri di deployment nella fase della pipeline, nel target
config e sulla riga di comando. Di conseguenza, tutti i parametri vengono
accettato e aggiunto al dizionario. Tuttavia, se un parametro specifico viene passato
in più di una posizione, ma con valori diversi, il comando gcloud deploy releases
create
non riesce e restituisce un errore.
Qual è la differenza rispetto ai modelli manifest
I parametri di deployment, come descritto in questo articolo, si distinguono in un file manifest basato su modello dalla sintassi. Ma ti stai chiedendo perché dovresti utilizzare i parametri di deployment invece di usare le tecniche standard per i manifest basati su modelli, la tabella seguente mostra per diversi scopi:
Tecnica | Ora di sostituzione | Applicabile a |
---|---|---|
Modello manifest | Fase di rendering | Release specifica; target specifico |
Sulla riga di comando | Post-rendering | Release specifica; tutti i target |
Pipeline di distribuzione | Post-rendering | Tutte le release; target specifici (per etichetta) |
In linea con l'obiettivo | Post-rendering | Tutte le release; target specifico |
Questo documento riguarda solo i parametri di deployment (su riga di comando, pipeline target), non manifest del modello.
Limitazioni
Per ogni tipo di parametro, puoi creare un massimo di 25 parametri.
Un target secondario può ereditare anche fino a 25 parametri dal relativo elemento padre target multipli, fino a un massimo di 100 parametri nei target, inclusi quelli nella fase della pipeline.
Il nome della chiave è limitato a un massimo di 63 caratteri e quanto segue espressione regolare:
^[a-zA-Z0-9]([-A-Za-z0-9_.]{0,61}[a-zA-Z0-9])?$
Un'eccezione è quando utilizzi un parametro di deployment come in un target personalizzato, devi utilizzare una barra tra le la parola chiave
customTarget
e il nome della variabile (customTarget/VAR_NAME
). Consulta Input e output obbligatori per la sintassi supportata.Il prefisso
CLOUD_DEPLOY_
è riservato e non può essere utilizzato per il nome di una chiave.Non possono essere applicate allo stesso target due chiavi con lo stesso nome.
Il valore può essere vuoto, ma può contenere al massimo 512 caratteri.
Non è possibile utilizzare i segnaposto Parametri di deployment per Valori di configurazione Helm, ma deve essere trasmesso per convenzione.
Configura parametri di deployment
Questa sezione descrive come configurare i valori dei parametri di deployment che verranno applicata al manifest Kubernetes, al tuo servizio Cloud Run, o il tuo modello Helm.
Oltre a configurare le coppie chiave-valore, devi aggiungere il segnaposto o segnaposto al file manifest, come descritto in questa sezione.
Aggiungere segnaposto al file manifest
Nel manifest Kubernetes (per GKE) o nel servizio YAML (per Cloud Run), puoi aggiungere segnaposto per tutti i valori da sostituire dopo il rendering.
Sintassi
Per le release che non utilizzano il renderer Helm con Skaffold, utilizza la seguente sintassi per i segnaposto:
[PROPERTY]: [DEFAULT_VALUE] # from-param: ${VAR_NAME}
In questa riga...
PROPERTY:
La proprietà di configurazione nel file manifest Kubernetes o YAML del servizio Cloud Run.
DEFAULT_VALUE
È un valore da utilizzare se non vengono forniti valori per questa proprietà nella nella riga di comando o nella configurazione della pipeline o della destinazione.
# from-param:
Utilizza un carattere di commento per impostare Cloud Deploy
deploy-parameters
efrom-param:
indica Cloud Deploy seguito da un segnapostodeploy-parameters
.${VAR_NAME}
È il segnaposto da sostituire. Deve corrispondere alla chiave di una coppia chiave-valore fornito nella pipeline di distribuzione o nella configurazione di destinazione oppure al momento della creazione della release.
Parametri per i valori dei grafici Helm
Se esegui il rendering di un grafico Helm che accetta
valori di configurazione,
e vuoi impostare questi valori utilizzando i parametri di deployment, i parametri
devono avere nomi corrispondenti ai valori delle configurazioni Helm che vuoi impostare.
Tutti i parametri di deployment vengono passati a Helm come --set
argomenti al momento del rendering,
senza dover modificare il skaffold.yaml
.
Ad esempio, se skaffold.yaml
installa un grafico Helm che prende una
parametro di configurazione webserver.port
per specificare la porta del server web
e vuoi impostarlo in modo dinamico a partire da una
devi creare un parametro di deployment con il parametro
nome webserver.port
con il valore che preferisci per la porta del server web.
Di conseguenza, se non fai riferimento solo ai modelli Helm in skaffold.yaml
,
ma anche di eseguirne la creazione, puoi utilizzare
sintassi delle variabili Helm standard
di {{ .Values.VAR_NAME }}
nei tuoi modelli Helm.
Ad esempio, se è stato configurato un parametro di deployment webserver.port
,
potremmo utilizzarlo in questo modo:
apiVersion: apps/v1
kind: Deployment
metadata:
name: webserver
spec:
replicas: 3
selector:
matchLabels:
app: webserver
template:
metadata:
labels:
app: webserver
spec:
containers:
- name: webserver
image: gcr.io/example/webserver:latest
ports:
- containerPort: {{ .Values.webserver.port }} # replaced by deploy parameter `webserver.port`.
name: web
env:
- name: WEBSERVER_PORT
value: {{ .Values.webserver.port }} # replaced by deploy parameter `webserver.port`.
Aggiungi un parametro alla fase della pipeline
Puoi aggiungere coppie chiave-valore a una fase dell'avanzamento della pipeline di distribuzione. Questo è utile per i deployment paralleli, per distinguere tra i target secondari.
Aggiungi i segnaposto al manifest Kubernetes o a Cloud Run come descritto qui.
Ecco un esempio:
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 1 # from-param: ${deploy_replicas} selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80
Configura la pipeline di distribuzione in modo da includere
deployParameters
per l'oggetto della pipeline applicabile.Il seguente YAML è la configurazione di una fase della pipeline il cui target un target multiplo, che in questo caso ha due target secondari:
serialPipeline: stages: - targetId: dev profiles: [] - targetId: prod # multi-target profiles: [] deployParameters: - values: deploy_replicas: 1 log_level: "NOTICE" matchTargetLabels: # optional, applies to all resources if unspecified; AND'd my-app: "post-render-config-1" - values: deploy_replicas: 2 log_level: "WARNING" matchTargetLabels: # optional, applies to all resources if unspecified; AND'd my-app: "post-render-config-2"
In questa configurazione della pipeline di distribuzione, la stanza
deployParameters
include duevalues
, ognuno dei quali ha quanto segue:Il nome della variabile, che è lo stesso nome della variabile impostata nel manifest
Un valore per la variabile
Una o più etichette (facoltative) da abbinare a etichette specifiche del target
Se non specifichi un'etichetta, in una stanza
matchTargetLabels
, quel valore viene utilizzato per tutti i target nella fase.
Se hai incluso
matchTargetLabels
, devi anche Includi etichette sui target, di conseguenza. In questo modo, identificare il valore da assegnare a un determinato target figlio.Il target deve corrispondere a tutte le etichette impostate nella stanza
values
.Se ometti
matchTargetLabels
, i valorivalues
impostati nella pipeline vengono applicato a tutti i target secondari. Se invece imposti più di un valore per lo stesso la release non riuscirà.
Dopo il rendering di ogni manifest, Cloud Deploy aggiunge il valore per ciascuna variabile nel manifest sottoposto a rendering.
Aggiungi un parametro alla configurazione di destinazione
Puoi aggiungere coppie chiave-valore a un target. Se utilizzi parametri di deployment distinguere tra più target figlio, configurarli su quei target non sul target multiplo.
Configura il file manifest Kubernetes Definizione del servizio Cloud Run utilizzando un parametro al posto del valore da impostare al momento del deployment.
Ecco un esempio:
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.2 env: - name: envvar1 value: example1 # from-param: ${application_env1} - name: envvar2 value: example2 # from-param: ${application_env2}
In questo file manifest, il parametro
envvar1
è impostato sul valore predefinitoexample1
, e il valore predefinito dienvvar2
èexample2
.Configura i tuoi target da includere
deployParameters
.Per ogni parametro che includi, devi identificare quanto segue:
Il nome della chiave, che corrisponde alla chiave (variabile) impostata nell'elemento del file manifest.
Un valore per quella chiave. Se non specifichi un valore, viene impostato il valore predefinito nel file manifest.
Il seguente YAML è la configurazione di due destinazioni. Ogni target include una stanza
deployParameters
che imposta un valore. Ogni target include anche da abbinare ai parametri di deployment configurati nella fase di pipeline.apiVersion: deploy.cloud.google.com/v1beta1 kind: Target metadata: name: prod1 labels: my-app: "post-render-config-1" description: development cluster deployParameters: application_env1: "newValue1" --- apiVersion: deploy.cloud.google.com/v1beta1 kind: target metadata: name: prod2 labels: my-app: "post-render-config-2" description: development cluster deployParameters: application_env1: "newValue2"
Quando la release viene creata, ma dopo il rendering dei manifest, Cloud Deploy aggiunge questi valori ai manifest sottoposti a rendering se vengono visualizzati includono le chiavi associate.
Trasmettere un parametro al momento della creazione della release
Per trasmettere parametri e valori alla release:
Configura il file manifest Kubernetes Definizione del servizio Cloud Run utilizzando un parametro al posto di da impostare al momento del deployment.
Ecco un esempio:
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: selector: matchLabels: app: nginx template: metadata: labels: app: nginx annotations: commit: defaultShaValue # from-param: ${git-sha} spec: containers: - name: nginx image: nginx:1.14.2
In questo esempio, la SHA di commit è impostata come variabile denominata
${git-sha}
. Un valore viene trasmesso al momento della creazione della release utilizzando il metodo--deploy-parameters=
, come illustrato nel passaggio successivo.La sintassi per questa variabile è
$
più il nome della variabile tra parentesi graffe. In questo ad esempio${git-sha}
.Quando crei una release, includi l'opzione
--deploy-parameters
nella Comandogcloud deploy releases create
.--deploy-parameters
utilizza un elenco separato da virgole di coppie chiave/valore, dove La chiave è il segnaposto che hai aggiunto al manifest.Il comando sarà simile a questo:
gcloud deploy releases create test-release-001 \ --project=my-example-project \ --region=us-central1 \ --delivery-pipeline=my-params-demo-app-1 \ --images=my-app-image=gcr.io/google-containers/nginx@sha256:f49a843c290594dcf4d193535d1f4ba8af7d56cea2cf79d1e9554f077f1e7aaa \ --deploy-parameters="git-sha=f787cac"
Quando la release viene creata, ma dopo il rendering del manifest, Cloud Deploy fornisce i valori ai manifest sottoposti a rendering se includono le chiavi associate.
Esegui il deployment dei parametri con target personalizzati
Puoi utilizzare qualsiasi parametro di deployment come variabile di ambiente in target personalizzati. Per farlo, utilizza la classe sintassi specificata per target personalizzati.
I parametri di deployment intesi come input per i target personalizzati possono iniziare con
customTarget/
, ad esempio customTarget/vertexAIModel
. Se utilizzi questo
utilizza la seguente sintassi quando fai riferimento a un parametro di deployment come
variabile di ambiente:
CLOUD_DEPLOY_customTarget_[VAR_NAME]
Dove VAR_NAME
è il nome che segue la barra nella
il nome del parametro di deployment. Ad esempio, se definisci una
parametro di deployment denominato customTarget/vertexAIModel
, come riferimento
CLOUD_DEPLOY_customTarget_vertexAIModel
.
Esegui il deployment dei parametri con hook di deployment
Puoi utilizzare qualsiasi parametro di deployment come variabile di ambiente in di deployment degli hook.
Parametri di deployment con verifica del deployment
Puoi utilizzare qualsiasi parametro di deployment come variabile di ambiente in verifica del deployment.
Visualizzare tutti i parametri per una release
Puoi visualizzare i parametri impostati per una determinata release. Sono
visualizzato in una tabella nella pagina Dettagli sulla release e sulla riga di comando
(gcloud deploy releases describe
).
Nella pagina principale di Cloud Deploy, fai clic sulla pipeline di distribuzione che include la release che vuoi vedere.
Nella pagina Dettagli sulla release, seleziona la scheda Artefatti.
Tutti i parametri di deployment impostati per questa release vengono mostrati in una tabella. con il nome e il valore della variabile in una colonna e il target o il target target nell'altra colonna.
Passaggi successivi
Prova la guida rapida: utilizzare i parametri di deployment.
Scopri di più sull'utilizzo dei deployment paralleli.