Implementación Canary y azul-verde mediante procesos de Citrix ADC VPX y Azure para aplicaciones basadas en Kubernetes
En este tema se proporciona información sobre cómo lograr una implementación Canary y azul-verde para aplicaciones de Kubernetes mediante Citrix ADC VPX y Azure pipelines.
Implementación Canary mediante procesos de Citrix ADC VPX y Azure para aplicaciones basadas en Kubernetes
Canary es una estrategia de implementación que implica implementar nuevas versiones de una aplicación en pasos incrementales pequeños y escalonados. La idea de Canary es implementar primero los nuevos cambios en un pequeño conjunto de usuarios para tomar una decisión sobre si rechazar o promover las nuevas implementaciones y luego implementar los cambios para el resto de los usuarios. Esta estrategia limita el riesgo involucrado en la implementación de una nueva versión de la aplicación en el entorno de producción.
Los procesos de Azure son un servicio en la nube proporcionado por Azure DevOps que le permite ejecutar compilaciones, realizar pruebas e implementar código automáticamente en varios entornos de desarrollo y producción.
En esta sección se proporciona información sobre cómo lograr la implementación Canary para aplicaciones basadas en Kubernetes mediante Citrix ADC VPX y el Citrix Ingress Controller con procesos de Azure.
Beneficios de la implementación de Canary
- La versión Canary de la aplicación actúa como una advertencia temprana para posibles problemas que puedan estar presentes en el nuevo código y los problemas de implementación.
- Puede usar la versión Canary para pruebas de humo y pruebas A/B.
- Canary ofrece una reversión sencilla y actualizaciones sin tiempo de inactividad.
- Puede ejecutar varias versiones de aplicaciones al mismo tiempo.
En esta solución, Citrix ADC VPX se implementa en la plataforma Azure para permitir el equilibrio de carga de una aplicación y lograr una implementación Canary mediante Citrix ADC VPX. Para obtener más información sobre cómo implementar Citrix ADC en Microsoft Azure, consulte el enlace de documentación de Citrix.
Implementación de Canary mediante Citrix ADC
Puede lograr una implementación Canary con Citrix ADC con anotaciones de entrada, que es una implementación Canary basada en reglas. En este enfoque, debe definir un objeto Ingress adicional con anotaciones específicas para indicar que la solicitud de la aplicación debe servirse en función de la estrategia de implementación Canary basada en reglas. En la solución Citrix, la redirección de tráfico basada en Canary en el nivel de entrada se puede lograr definiendo varios conjuntos de reglas de la siguiente manera:
- Aplicar las reglas Canary en función del peso
- Aplicar las reglas Canary en función del encabezado de solicitud HTTP
- Aplicar las reglas Canary en función del valor del encabezado HTTP
Para obtener más información, consulte Implementación Canary simplificada mediante anotaciones de entrada
Implementación Canary mediante Citrix ADC VPX con procesos de Azure
Citrix propone una solución para la implementación Canary mediante Citrix ADC VPX y el Citrix Ingress Controller con procesos de Azure para aplicaciones basadas en Kubernetes.
En esta solución, hay tres directorios de configuración:
kubernetes_configs
deployment_configs
pipeline_configs
kubernetes_configs
Este directorio incluye los archivos YAML de implementación específicos de la aplicación basada en la versión y los archivos de configuración basados en Helm para implementar Citrix Ingress Controller, que es responsable de insertar la configuración de Citrix ADC para lograr una implementación Canary.
Nota:
Puede descargar los gráficos Helm más recientes del repositorio de gráficos Helm Citrix Ingress Controller y colocarlos en el
cic_helm
directorio.
deployment_configs
Este directorio incluye los archivos setup_config
y teardown_config
JSON que especifican la ruta de los archivos YAML disponibles para la versión específica de la aplicación que se implementará o inhabilitará durante la implementación Canary.
pipeline_configs
Este directorio incluye el script de proceso de Azure y el script de Python, que lee las configuraciones del usuario y desencadena el proceso en función de la solicitud del usuario para introducir una nueva versión de la aplicación o desmantelar una versión de una aplicación. El cambio en el porcentaje del peso del tráfico en YAML de entrada de aplicaciones desencadenaría el proceso para cambiar el tráfico entre la versión disponible de las aplicaciones.
Con los tres archivos de configuración implementados, cualquier actualización de los archivos en los directorios deployment_configs
y kubernetes_configs
en GitHub desencadenaría el proceso en Azure.
El porcentaje de división del tráfico se puede ajustar mediante la anotación ingress.citrix.com/canary-weight
en el YAML de entrada de la aplicación.
Implementar una aplicación de muestra en Canary en Azure pipelines
En este tema se explica cómo implementar una aplicación de ejemplo en modo Canary mediante procesos de Citrix ADC y Azure.
Requisitos previos
Compruebe que:
- Citrix ADC VPX ya está implementado en la plataforma Azure y está listo para ser utilizado por nuestra aplicación de ejemplo.
- Clúster de AKS con conexión de servicio Kubernetes configurada para el proceso de Azure.
Siga estos pasos:
-
Clone el repositorio de GitHub y vaya al directorio
cd/canary-azure-devops
. - Coloque los YAML específicos de implementación de aplicaciones (con el archivo de entrada) en una carpeta versionada
v1
en el directoriokubernetes_configs
. - Cree tres procesos de Azure con los archivos YAML existentes
deploy_cic.yaml
,deploy.yaml
, yteardown.yaml
, para implementar el Citrix Ingress Controller e implementar y desmantelar las aplicaciones. Consulte Procesos de Azure para crear un proceso. - Actualice la suscripción, el grupo de agentes, la conexión de servicio y los detalles de Citrix ADC en el YAML de proceso.
- Guarde el proceso.
-
Actualice la ruta
deploy_config.json
con la ruta que especifica el directorio en el que se colocan las YAML de la aplicación.{ "K8S_CONFIG_PATH" : "cd/canary-azure-devops/kubernetes_configs/v1" }
-
Confirma el archivo
deploy_config.json
y el directorio v1 con Git para activar el proceso para implementar la versión v1 de la aplicación. - Acceda a la aplicación a través de Citrix ADC.
- Introduzca la versión v2 de la aplicación creando el directorio
v2
enkubernetes_configs
. Asegúrese de que la entrada en esta versión tenga la anotación Canary especificada con el peso correcto para establecerse para la división del tráfico. -
Implemente la versión v2 de la aplicación mediante la actualización
deploy_config.json
con la ruta que especifica el directorio v2. Ahora, el tráfico se divide entre la versión v1 y v2 en función del peso Canary establecido en la anotación de entrada (por ejemplo,ingress.citrix.com/canary-weight: "40"
) - Siga aumentando progresivamente el peso del tráfico en la anotación de entrada hasta que la nueva versión esté lista para servir todo el tráfico.
Implementación azul-verde mediante procesos de Citrix ADC VPX y Azure para aplicaciones basadas en Kubernetes
La implementación azul-verde es una técnica que reduce el tiempo de inactividad y el riesgo al ejecutar dos entornos de producción idénticos llamados azul y verde. En cualquier momento, solo uno de los entornos está en vivo que atiende a todo el tráfico de producción. La base del método azul-verde son las implementaciones en paralelo de dos entornos separados pero idénticos. La implementación de una aplicación en ambos entornos se puede automatizar completamente mediante el uso de trabajos y tareas. Este enfoque impone la duplicación de todos los recursos de una aplicación. Sin embargo, hay muchas formas diferentes en que las implementaciones azul-verdes se pueden llevar a cabo en varias herramientas de implementación continua.
Al usar Citrix ADC VPX con procesos de Azure, se puede usar la misma solución basada en Canary para lograr una implementación azul-verde ajustando el peso del tráfico a cero o 100.