La reversión se configura como una canalización con tareas que devuelven la implementación a un estado estable anterior después de un error en una canalización de implementación. Para revertir si se produce un error, asocie la canalización de reversión a tareas o etapas.

Los motivos de la reversión pueden variar según su función.

  • Como ingeniero de publicaciones, desea que Code Stream compruebe que el proceso de publicación se complete correctamente para saber si debe continuar con la publicación o revertirla. Los posibles errores incluyen un error en la tarea, un rechazo en las operaciones de usuario o un umbral de métricas excedido.
  • Como propietario de un entorno, desea volver a implementar una versión anterior para poder revertir rápidamente el entorno a un estado correcto conocido.
  • Como propietario de un entorno, desea admitir la reversión de una implementación azul-verde para poder minimizar el tiempo de inactividad de las versiones con errores.

Cuando se utiliza una plantilla de canalización inteligente para crear una canalización de entrega continua con la opción de reversión activada, la reversión se agrega automáticamente a las tareas en la canalización. En este caso práctico, utilizará la plantilla de canalización inteligente para definir la reversión de una implementación de aplicación en un clúster de Kubernetes mediante el modelo de implementación de actualización gradual. La plantilla de canalización inteligente crea una canalización de implementación y una o varias canalizaciones de reversión.

  • En la canalización de implementación, se requiere la reversión si se produce un error en las tareas Actualizar implementación o Verificar implementación.
  • En la canalización de reversión, se actualiza la implementación con una imagen antigua.

También puede crear manualmente una canalización de reversión con una plantilla en blanco. Antes de crear una canalización de reversión, se recomienda planificar el flujo de reversión. Para obtener más información de fondo sobre la reversión, consulte Planificar una reversión en Code Stream.

Requisitos previos

  • Compruebe si es un miembro de un proyecto en Code Stream. Si no lo es, solicite al administrador de Code Stream que lo agregue como miembro de un proyecto. Consulte Cómo agregar un proyecto en Code Stream.
  • Configure los clústeres de Kubernetes donde la canalización implementará la aplicación. Configure un clúster de desarrollo y un clúster de producción.
  • Compruebe que tiene una configuración de registro de Docker.
  • Identifique un proyecto que agrupe todo su trabajo, incluidos la canalización, los endpoints y los paneles de control.
  • Familiarícese con la plantilla inteligente de CD como se describe en la parte de CD de Planificar una compilación nativa de CICD en Code Stream antes de usar la plantilla de canalización inteligente, por ejemplo:
    • Cree los endpoints de producción y desarrollo de Kubernetes que implementan la imagen de la aplicación en los clústeres de Kubernetes.
    • Prepare el archivo YAML de Kubernetes que crea el espacio de nombres, el servicio y la implementación. Si necesita descargar una imagen de un repositorio privado, el archivo YAML debe incluir una sección con el secreto de configuración de Docker.

Procedimiento

  1. Haga clic en Canalizaciones > Nueva canalización > Plantilla inteligente > Entrega continua.
  2. Introduzca la información en la plantilla de canalización inteligente.
    1. Seleccione un proyecto.
    2. Introduzca un nombre para la canalización, como RollingUpgrade-Example.
    3. Seleccione los entornos de la aplicación. Para agregar la reversión a la implementación, debe seleccionar Prod.
    4. Haga clic en Seleccionar, elija un archivo YAML de Kubernetes y haga clic en Procesar.
      La plantilla de canalización inteligente muestra los servicios y los entornos de implementación disponibles.
    5. Seleccione el servicio que utilizará la canalización para la implementación.
    6. Seleccione los endpoints del clúster para los entornos Dev y Prod.
    7. Como origen de imagen, seleccione Entrada de tiempo de ejecución de canalización.
    8. Como modelo de implementación, seleccione Actualización gradual.
    9. Haga clic en Revertir.
    10. Proporcione la URL de comprobación de estado.
    Cuando cree una canalización de reversión, introduzca los detalles, seleccione un servicio, una implementación y un modelo de implementación, y marque la casilla Reversión.
  3. Para crear la canalización llamada RollbackUpgrade-Example, haga clic en Crear.

    Aparece la canalización RollbackUpgrade-Example y se muestra el icono de reversión en tareas que se pueden revertir en las etapas Desarrollo y Producción.

    En una canalización de reversión, el icono de reversión aparece en las tareas en las que la canalización puede revertirse.

  4. Cierre la canalización.

    En la página Canalizaciones, aparecerá la canalización que creó y también una nueva canalización para cada etapa de esta.

    • RollingUpgrade-Example. Code Stream desactiva la canalización que creó de forma predeterminada, lo que garantiza que la revise antes de ejecutarla.
    • RollingUpgrade-Example_Dev_Rollback. Esta canalización de desarrollo de reversión se invoca en caso de errores en las tareas de la etapa de desarrollo, como las de crear servicio, crear secreto, crear implementación y verificar implementación. Para garantizar la reversión de las tareas de desarrollo, Code Stream activa de forma predeterminada la canalización de desarrollo de reversión.
    • RollingUpgrade-Example_Prod_Rollback. Esta canalización de producción de reversión se invoca en caso de errores en las tareas de la etapa de producción, como la fase 1 de implementación, la fase 1 de verificación, la fase de implementación de lanzamiento, la fase de finalización de lanzamiento y la fase de verificación de lanzamiento invocan. Para garantizar la reversión de tareas de producción, Code Stream activa de forma predeterminada la canalización de producción de reversión.
    Code Stream crea canalizaciones de reversión para las etapas y las activa.
  5. Habilite y ejecute la canalización que ha creado.
    Cuando inicie la ejecución, Code Stream pedirá los parámetros de entrada. Proporcione la imagen y la etiqueta del endpoint en el repositorio de Docker que está utilizando.
  6. En la página Ejecuciones, seleccione Acciones > Ver ejecución para ver la ejecución de la canalización.

    La canalización se muestra como RUNNING y pasa por las tareas de la etapa de desarrollo. Si la canalización no logra ejecutar una tarea durante la etapa de desarrollo, la canalización denominada RollingUpgrade-Example_Dev_Rollback se activa y revierte la implementación, y el estado de la canalización cambia a ROLLING_BACK.

    La canalización de reversión revierte la implementación y devuelve la canalización al estado estable anterior.

    Después de la reversión, la página Ejecuciones muestra dos ejecuciones de la canalización RollingUpgrade-Example.

    • La canalización que creó se revierte y muestra ROLLBACK_COMPLETED.
    • La canalización de desarrollo de reversión que se activó y realizó la reversión muestra COMPLETED.

    Los resultados de la reversión aparecen en la pestaña Ejecuciones y los comentarios muestran el punto activador de la reversión.

Resultados

Enhorabuena. Definió correctamente una canalización con reversión y observó a Code Stream revertir la canalización al punto de error.