Despliegues canary personalizados

En este documento se describe cómo configurar y usar implementaciones canary personalizadas para desplegar tus aplicaciones en todos los tipos de destino con Cloud Deploy.

Cómo funcionan las implementaciones canary personalizadas

Cuando implementas una estrategia de implementación canary personalizada, Cloud Deploy no modifica tus manifiestos para facilitar la configuración de equilibrio de tráfico elegida. En su lugar, es tu responsabilidad proporcionar manifiestos que se apliquen al tiempo de ejecución de destino de cada fase canary.

Comprueba que tienes los permisos necesarios

Además de otros permisos de gestión de identidades y accesos que necesitas para usar Cloud Deploy, necesitas los siguientes permisos para realizar acciones adicionales que pueden ser necesarias para una implementación canaria:

  • clouddeploy.rollouts.advance
  • clouddeploy.rollouts.ignoreJob
  • clouddeploy.rollouts.cancel
  • clouddeploy.rollouts.retryJob
  • clouddeploy.jobRuns.get
  • clouddeploy.jobRuns.list
  • clouddeploy.jobRuns.terminate

Para obtener más información sobre los roles disponibles que incluyen estos permisos, consulta Roles y permisos de gestión de identidades y accesos.

Prepara tu skaffold.yaml

El archivo skaffold.yaml define cómo se renderizan y se implementan los manifiestos. En una implementación canary personalizada, debes definir los perfiles asociados a cada fase canary para facilitar la configuración de equilibrio de tráfico elegida. Estos perfiles se asignan a fases en la configuración de la estrategia de la canalización de entrega.

A continuación, se muestra un ejemplo de configuración 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

Configurar un lanzamiento canary personalizado

Con la configuración canary personalizada, especifica lo siguiente en la definición de la canalización de entrega:

  • Nombres de las fases de lanzamiento

    En una versión canary totalmente automatizada, Cloud Deploy asigna nombres a las fases (por ejemplo, canary-25, canary-75 y stable). Sin embargo, con un lanzamiento canary personalizado, puedes asignar a cada fase el nombre que quieras, siempre que sea único entre todas las fases de esta etapa canary y que cumpla las restricciones de ID de recurso. Sin embargo, el nombre de la fase final (100%) debe ser stable.

  • Objetivos de porcentaje para cada fase

    Especifica los porcentajes por separado, por fase.

  • Perfiles de Skaffold que se van a usar en 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 las combina.

  • Si hay un trabajo de verificación para la fase

    Recuerda que, si habilitas la verificación, debes configurar tu skaffold.yaml para la verificación también.

  • Si hay trabajos de predespliegue o postdespliegue para la fase

    Si vas a habilitar tareas previas o posteriores a la implementación, debes configurar tu skaffold.yaml para esas tareas.

Elementos de configuración canary personalizados

El siguiente archivo YAML muestra la configuración de las fases de una implementación canary totalmente 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 va a usar en 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 especifiques, además del perfil o manifiesto que use la fase en general.

  • stable

    La fase final debe llamarse stable.

  • PERCENTAGE1

    Es el porcentaje que se va a implementar en la primera fase. Cada fase debe tener un valor de porcentaje único, que 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 debe incluir una tarea 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 renderizar e implementar en esa fase.

  • PREDEPLOY_ACTION

    Es lo mismo que el ACTION_NAME que has usado en tu skaffold.yaml para definir la acción personalizada que quieres ejecutar antes de la implementación.

  • POSTDEPLOY_ACTION

    Es el mismo ACTION_NAME que has usado en tu skaffold.yaml para definir la acción personalizada que quieres 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 estrofa customCanaryDeployment, pero si los valores de porcentaje no están en orden ascendente, el comando para registrar la canalización de entrega falla y se produce un error.

Ten en cuenta que la configuración de un lanzamiento canary personalizado no incluye una estrofa runtimeConfig. Si incluyes runtimeConfig, se considera un canario automatizado personalizado.

Siguientes pasos