Con Cloud Deploy, puedes pasar parámetros para tu versión, y esos
se proporcionan al manifiesto o los manifiestos antes de que estos
se aplican a sus respectivos objetivos. Esta sustitución se realiza después de que se manifiestan
se renderizan, el último paso del
Operación de renderización de Cloud Deploy. Los valores se proporcionan a todos los manifiestos.
identificados en tu archivo skaffold.yaml
que contengan los elementos
los marcadores de posición.
Lo único que debes hacer es incluir marcadores de posición en tu manifiesto y establecer los valores para esos marcadores de posición en la canalización de entrega de Cloud Deploy o la configuración de destino, o cuando creas una versión.
En este artículo, se describe cómo hacerlo.
¿Por qué usar parámetros de implementación?
Un uso típico de esto sería aplicar diferentes valores a los manifiestos de objetivos diferentes en una implementación paralela. Pero puedes usar parámetros de implementación para todo lo que requiera un par clave-valor posterior al renderizado sustitución de software en tu manifiesto.
Cómo funciona
En los siguientes pasos, se describe el proceso general para configurar la implementación parámetros y proporcionar valores:
Configura la parametrización de implementación, como se describe aquí.
Estos son algunos de ellos:
Agrega los marcadores de posición a tu manifiesto.
Agrega valores para esos marcadores de posición.
Aquí se describen las tres maneras de hacerlo.
Cuando creas una versión, tu manifiesto se renderizado.
Si comienzas con un manifiesto basado en una plantilla, los valores ahora se aplican a la plantilla. variables. Si comienzas con un manifiesto sin procesar, este no se modificará. Esta la renderización la realiza Skaffold.
Sin embargo, puedes tener variables adicionales en tu manifiesto para las cuales no se aplican en el tiempo de renderización. Estos son los parámetros de implementación descritos en este documento.
Cuando se crea el lanzamiento, todos los parámetros de implementación se compilan en un diccionario, que se usa para sustituir valores antes de la manifiestos nuevos.
Después del procesamiento, Cloud Deploy sustituye los valores por la implementación parámetros.
Estos son los valores que configuraste en el primer paso.
El proceso de renderización ya aplicó valores a las plantillas de manifiesto. reemplazar algunos valores y agregar etiquetas específicas Cloud Deploy. Pero los valores de estos parámetros de implementación se reemplazará después de la renderización. Las diferencias entre las plantillas de manifiestos y los parámetros de implementación se describen aquí.
El manifiesto se aplica al entorno de ejecución de destino para implementar tu aplicación.
Esto incluye los valores sustituidos en el tiempo de renderización y los valores para cualquier parámetros de implementación
Diferentes formas de pasar valores
Puedes proporcionar parámetros y valores para esos parámetros de tres maneras:
En la definición de la canalización de entrega
Tú proporcionas el parámetro y su valor en la definición de una etapa del la progresión de la canalización de entrega. El parámetro se pasa al destino. representada por esa etapa. Si esa etapa hace referencia a un destino múltiple, la Los valores que se establezcan aquí se usarán para todos los destinos secundarios.
que permite reemplazar un valor para todas las versiones dentro de una canalización determinada. para todos los objetivos afectados. Los parámetros definidos para una etapa identifican una etiqueta, y el destino correspondiente a esa etapa debe tener una etiqueta que coincida.
-
Tú configuras el parámetro y su valor en la definición del destino a sí mismo. Este método te permite reemplazar un valor para ese destino en todas las versiones.
En la línea de comandos, cuando crees una versión
Para incluir el parámetro y su valor, usa la marca
--deploy-parameters
. en el comandogcloud deploy releases create
.Este método te permite reemplazar un valor en el momento de la creación de la versión y aplicar ese valor a ese manifiesto de todos los objetivos afectados.
La configuración de estos elementos se explica con más detalle aquí.
¿Puedo usar más de uno de estos métodos?
Sí, puedes incluir parámetros de implementación en la etapa de canalización, en el destino
config y en la línea de comandos. Como resultado, todos los parámetros
aceptadas y agregadas al diccionario. Sin embargo, si se pasa un parámetro específico
en más de un lugar, pero con valores diferentes, el comando gcloud deploy releases
create
falla con un error.
Implementa parámetros con destinos personalizados
Puedes usar cualquier parámetro de implementación como variables de entorno orientaciones personalizadas. Cuando lo hagas, usa sintaxis especificada para destinos personalizados.
¿En qué se diferencia esto de las plantillas de manifiestos?
Los parámetros de implementación, como se describe en este artículo, se distinguen de los marcadores de posición en un manifiesto con plantilla mediante la sintaxis. Sin embargo, si se pregunta por qué necesita implementar parámetros en lugar de solo usar técnicas estándar para manifiestos con plantillas, en la siguiente tabla se muestran las para diferentes propósitos:
Técnica | Tiempo de sustitución | Se aplica a |
---|---|---|
Plantilla de manifiesto | Fase de renderización | Versión específica objetivo específico |
En la línea de comandos | Renderización posterior | Versión específica todos los objetivos |
En la canalización de entrega | Renderización posterior | Todas las versiones destinos específicos (por etiqueta) |
Según el objetivo | Renderización posterior | Todas las versiones objetivo específico |
Este documento solo trata sobre los parámetros de implementación (en la línea de comandos, canalización y objetivo), no manifiestos con plantillas.
Limitaciones
Para cada tipo de parámetro, puedes crear un máximo de 25 parámetros.
Además, un destino secundario puede heredar hasta 25 parámetros de su superior varios destinos, hasta un máximo de 100 parámetros en los objetivos, incluidos aquellos se establecen en la etapa de canalización.
El nombre de la clave está limitado a un máximo de 63 caracteres, y lo siguiente expresión regular:
^[a-zA-Z0-9]([-A-Za-z0-9_.]{0,61}[a-zA-Z0-9])?$
Hay una excepción a esto cuando usas un parámetro de implementación como un variable de entorno en un destino personalizado, debes usar una barra entre los la palabra clave
customTarget
y el nombre de la variable (customTarget/VAR_NAME
). Consulta Entradas y salidas obligatorias para obtener la sintaxis admitida.El prefijo
CLOUD_DEPLOY_
está reservado y no se puede usar para un nombre de clave.No puedes tener dos claves con el mismo nombre aplicadas al mismo destino.
El valor puede estar vacío, pero tiene un máximo de 512 caracteres.
No se pueden usar los marcadores de posición de los parámetros de implementación para Valores de configuración de Helm: pero se deben pasar por convención.
Configura parámetros de implementación
En esta sección, se describe cómo configurar los valores de parámetros de implementación que se al manifiesto de Kubernetes, al servicio de Cloud Run, o tu plantilla de Helm.
Además de configurar esos pares clave-valor, debes agregar el marcador de posición o marcadores de posición a tu manifiesto, como se describe en esta sección.
Agrega marcadores de posición al manifiesto
En tu manifiesto de Kubernetes (para GKE) o en tu YAML de servicio (para Cloud Run), puedes agregar marcadores de posición para los valores que desees para reemplazar después de la renderización.
Sintaxis
En el caso de las versiones que no usan el procesador Helm con Skaffold, usa la siguiente sintaxis para tus marcadores de posición:
[PROPERTY]: [DEFAULT_VALUE] # from-param: ${VAR_NAME}
En esta línea...
PROPERTY:
¿La propiedad de configuración en tu manifiesto de Kubernetes YAML del servicio de Cloud Run.
DEFAULT_VALUE
Es un valor para usar si no se proporcionan valores para esta propiedad en el en la línea de comandos o en la configuración de la canalización o destino.
# from-param:
Usa un carácter de comentario para iniciar Cloud Deploy directiva
deploy-parameters
, yfrom-param:
indica Cloud Deploy que sigue un marcador de posicióndeploy-parameters
${VAR_NAME}
Es el marcador de posición que se reemplazará. Debe coincidir con la clave de un par clave-valor que se proporcionan en la canalización de entrega, la configuración de destino o cuando se crean versiones.
Parámetros para los valores del gráfico de Helm
Si renderizas un gráfico de Helm que acepta
valores de configuración
y quieres establecer esos valores con los parámetros de implementación, los parámetros de implementación
deben tener nombres que coincidan con los valores de configuración de Helm que desees establecer.
Todos los parámetros de implementación se pasan a Helm como argumentos --set
durante el tiempo de renderización.
sin necesidad de modificar tu skaffold.yaml
.
Por ejemplo, si tu skaffold.yaml
instala un gráfico de Helm que toma un
parámetro de configuración de webserver.port
para especificar el puerto del servidor web
empezaría y quieres configurarlo de forma dinámica a partir de un
debes crear un parámetro de implementación con el
asigna el nombre webserver.port
con el valor que desees para el puerto del servidor web.
Por lo tanto, si no solo haces referencia a plantillas de Helm en tu skaffold.yaml
,
sino también para autorizarlas,
sintaxis de la variable estándar de Helm
de {{ .Values.VAR_NAME }}
en tus plantillas de Helm.
Por ejemplo, si tenemos configurado un parámetro de implementación de webserver.port
,
podríamos usarlo de la siguiente manera:
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`.
Agrega un parámetro a la etapa de canalización
Puedes agregar pares clave-valor a una etapa en el progreso de la canalización de entrega. Esto es útil para implementaciones paralelas para distinguir entre objetivos secundarios.
Agrega los marcadores de posición al manifiesto de Kubernetes o a Cloud Run servicio, como se describe aquí.
Por ejemplo:
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 tu canalización de entrega de modo que incluya
deployParameters
para el en la etapa de canalización correspondiente.El siguiente YAML es la configuración de una etapa de canalización cuyo destino es un destino múltiple, que en este caso tiene dos destinos secundarios:
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"
En esta configuración de canalización de entrega, la estrofa
deployParameters
incluye dosvalues
, cada una de las cuales tiene lo siguiente:El nombre de la variable, que es el mismo que el de la variable que configuraste en el manifiesto
Un valor para esa variable
Una o más etiquetas (opcional) que deben coincidir con las etiquetas de objetivos específicos
Si no especificas una etiqueta, en una estrofa
matchTargetLabels
, ese valor se usa para todos los objetivos de la etapa.
Si incluiste
matchTargetLabels
, también debes incluye etiquetas en los destinos para que coincidan. De esta manera, identifique qué valor asignar a cada destino secundario.El destino debe coincidir con todas las etiquetas establecidas en la estrofa
values
.Si omites
matchTargetLabels
, lasvalues
que configuraste en la canalización se se aplican a todos los destinos secundarios. Pero si estableces más de un valor para el mismo parámetro, la versión fallará.
Después de que se renderiza cada manifiesto, Cloud Deploy agrega el valor de cada variable en el manifiesto renderizado.
Agrega un parámetro a la configuración de destino
Puedes agregar pares clave-valor a un objetivo. Si usas parámetros de implementación distinguir entre varios objetivos secundarios, configurarlos en ellos y no en el multiobjetivo.
Configura tu manifiesto de Kubernetes o Definición del servicio de Cloud Run con un parámetro en lugar del valor que deseas establecer en el momento de la implementación.
Por ejemplo:
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}
En este manifiesto, el parámetro
envvar1
tiene un valor predeterminado deexample1
. yenvvar2
se establece en un valor predeterminado deexample2
.Configura tus objetivos para incluir
deployParameters
.Para cada parámetro que incluyas, identificas lo siguiente:
El nombre de la clave, que es el mismo que el de la clave (variable) que configuraste en el .
Es un valor para esa clave. Si no proporcionas un valor, se establecerá del manifiesto.
El siguiente YAML es la configuración de dos destinos. Cada objetivo incluye una estrofa
deployParameters
que establece un valor. Cada objetivo también incluye un etiqueta de recurso para que coincida con los parámetros de implementación configuradas en una etapa de canalización.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"
Cuando se crea la versión, pero después de que se renderizan los manifiestos, Cloud Deploy agrega estos valores a los manifiestos renderizados si incluyen las claves asociadas.
Cómo pasar un parámetro durante la creación de la versión
Sigue estos pasos para pasar parámetros y valores a la versión:
Configura tu manifiesto de Kubernetes o definición del servicio de Cloud Run con un parámetro en lugar del el valor predeterminado que quieres establecer en el momento de la implementación.
Por ejemplo:
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
En este ejemplo, el SHA de confirmación se establece como una variable llamada
${git-sha}
. Se pasa un valor para esto durante la creación de la versión con el--deploy-parameters=
, como se muestra en el siguiente paso.La sintaxis de esta variable es
$
más el nombre de la variable entre llaves. En este ejemplo, es${git-sha}
.Cuando crees una versión, incluye la opción
--deploy-parameters
en el Comandogcloud deploy releases create
.--deploy-parameters
toma una lista de pares clave-valor separados por comas, en la que La clave es el marcador de posición que agregaste al manifiesto.El comando se verá similar al siguiente:
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"
Cuando se crea la versión, pero después de la renderización del manifiesto, Cloud Deploy proporciona los valores a los manifiestos renderizados si se incluyen las claves asociadas.
Consulta todos los parámetros de una versión
Puedes ver los parámetros que se establecieron para una versión determinada. Son
que se muestra en una tabla en la página Detalles de la versión y en la línea de comandos
(gcloud deploy releases describe
).
En la página principal de Cloud Deploy, haz clic en la canalización de entrega que incluye la versión que quieres ver.
En la página Detalles de la versión, selecciona la pestaña Artefactos.
Todos los parámetros de implementación que se configuraron para esta versión se muestran en una tabla, con el nombre y el valor de la variable en una columna, y el destino o objetivos en la otra columna.
¿Qué sigue?
Prueba la guía de inicio rápido: Usa parámetros de implementación.
Obtén más información sobre el uso de implementaciones paralelas.