En este documento, se describe cómo configurar y usar implementaciones de versiones canary personalizadas para implementar tus aplicaciones en todos los tipos de destino con Cloud Deploy.
Cómo funcionan las implementaciones de versiones canary personalizadas
Cuando realizas la implementación con una estrategia de implementación de versiones canary personalizada, Cloud Deploy no modifica tus manifiestos para facilitar la configuración de equilibrio de tráfico elegida. En cambio, eres responsable de proporcionar manifiestos que se apliquen al tiempo de ejecución de destino para cada fase de la versión canary.
Asegúrate de tener los permisos necesarios
Además de otros permisos de Identity and Access Management que necesitas para usar Cloud Deploy, necesitas los siguientes permisos para realizar acciones adicionales que podrían ser necesarias para una implementación de versiones canary:
clouddeploy.rollouts.advance
clouddeploy.rollouts.ignoreJob
clouddeploy.rollouts.cancel
clouddeploy.rollouts.retryJob
clouddeploy.jobRuns.get
clouddeploy.jobRuns.list
clouddeploy.jobRuns.terminate
Consulta Roles y permisos de IAM para obtener más información sobre qué roles disponibles incluyen estos permisos.
Prepara tu skaffold.yaml
Tu archivo skaffold.yaml
define cómo se renderizan y se implementan tus manifiestos.
En el caso de una implementación de versiones canary personalizada, eres responsable de definir los perfiles asociados a cada fase canary para facilitar la configuración de equilibrio de tráfico elegida. Estos perfiles se asignan a las fases de la configuración de la estrategia de la canalización de entrega.
A continuación, se muestra un ejemplo de configuración de skaffold.yaml
que usa un canary personalizado:
apiVersion: skaffold/v4beta7
kind: Config
profiles:
- name: canary-25
manifests:
rawYaml:
- canary-25-resources.yaml
- name: canary-50
manifests:
rawYaml:
- canary-50-resources.yaml
- name: stable
manifests:
rawYaml:
- stable-resources.yaml
Configura una versión canary personalizada
Con la configuración personalizada de la versión canary, puedes especificar lo siguiente en la definición de tu canalización de entrega:
Nombres de las fases de lanzamiento
En una versión canary completamente automatizada, Cloud Deploy nombra las fases por ti (
canary-25
,canary-75
,stable
, por ejemplo). Sin embargo, con una versión canary personalizada, puedes asignar cualquier nombre a cada fase, siempre que sea único entre todas las fases de esta etapa de la versión canary y cumpla con las restricciones de ID de recursos. Sin embargo, el nombre de la fase final (100%) debe serstable
.Objetivos de porcentaje para cada fase
Especifica los porcentajes por separado, por fase.
Perfiles de Skaffold que se usarán para la fase
Puedes usar un perfil de Skaffold independiente para cada fase, el mismo perfil o cualquier combinación. Además, cada perfil puede usar una definición de servicio de Cloud Run diferente. También puedes usar más de un perfil para una fase determinada. Cloud Deploy los combina.
Indica si hay un trabajo de verificación para la fase.
Recuerda que, si habilitas la verificación, también debes configurar tu
skaffold.yaml
para la verificación.Indica si hay trabajos previos o posteriores a la implementación para la fase.
Si habilitas trabajos previos a la implementación o posteriores a ella, debes configurar tu
skaffold.yaml
para esos trabajos.
Elementos de configuración de versión canary personalizados
En el siguiente código YAML, se muestra la configuración de las fases de la implementación de canary completamente personalizada:
strategy:
canary:
# Custom configuration for each canary phase
customCanaryDeployment:
phaseConfigs:
- phaseId: "PHASE1_NAME"
percentage: PERCENTAGE1
profiles: [ "PROFILE_NAME" ]
verify: true | false
predeploy:
actions: "PREDEPLOY_ACTION"
postdeploy:
actions: "POSTDEPLOY_ACTION"
- …
- phaseId: "stable"
percentage: 100
profiles: [ "LAST_PROFILE_NAME" ]
verify: true|false
predeploy:
actions: "PREDEPLOY_ACTION"
postdeploy:
actions: "POSTDEPLOY_ACTION"
En este archivo YAML
PHASE1_NAME
Es el nombre de la fase. Cada nombre de fase debe ser único.
[ "PROFILE_NAME" ]
Es el nombre del perfil que se usará para la fase. Puedes usar el mismo perfil para cada fase, uno diferente para cada una o cualquier combinación. También puedes especificar más de un perfil. Cloud Deploy usa todos los perfiles que especificas, además del perfil o manifiesto que usa la etapa general.
stable
La fase final debe llamarse
stable
.PERCENTAGE1
Es el porcentaje de la implementación para la primera fase. Cada fase debe tener un valor de porcentaje único, y ese valor debe ser un porcentaje entero (no
10.5
, por ejemplo), y las fases deben estar en orden ascendente.verify: true|false
Indica a Cloud Deploy si se debe incluir un trabajo de verificación para la fase. Ten en cuenta que, para que cada fase use la verificación, Skaffold usa el mismo perfil de verificación que se especifica para la renderización y la implementación de esa fase.
PREDEPLOY_ACTION
Es el mismo que el ACTION_NAME que usaste en tu
skaffold.yaml
para definir la acción personalizada que deseas ejecutar antes de la implementación.POSTDEPLOY_ACTION
Es el mismo ACTION_NAME que usaste en tu
skaffold.yaml
para definir la acción personalizada que deseas ejecutar después de la implementación.
El porcentaje de la última fase debe ser 100
. Las fases se ejecutan en el orden en que las configures en esta sección customCanaryDeployment
, pero si los valores de porcentaje no están en orden ascendente, el comando para registrar la canalización de entrega falla con un error.
Ten en cuenta que la configuración de una versión canary personalizada no incluye una sección runtimeConfig
. Si incluyes runtimeConfig
, se considera una actualización canary personalizada y automática.
¿Qué sigue?
Prueba la guía de inicio rápido de la implementación canary.
Descubre cómo administrar el ciclo de vida de las versiones de prueba de tus lanzamientos.
Obtén más información sobre la implementación en paralelo.
Obtén más información sobre las estrategias de implementación de Cloud Deploy.