Déploiement Canary et bleu-vert à l’aide de pipelines Citrix ADC VPX et Azure pour les applications basées sur Kubernetes
Cette rubrique fournit des informations sur la façon de réaliser un déploiement Canary et bleu-vert pour les applications Kubernetes à l’aide de pipelines Citrix ADC VPX et Azure.
Déploiement Canary à l’aide de pipelines Citrix ADC VPX et Azure pour les applications basées sur Kubernetes
Canary est une stratégie de déploiement qui implique le déploiement de nouvelles versions d’une application par petites étapes incrémentielles. L’idée de Canary est d’abord de déployer les nouvelles modifications sur un petit nombre d’utilisateurs afin de prendre la décision de rejeter ou de promouvoir les nouveaux déploiements, puis de déployer les modifications au reste des utilisateurs. Cette stratégie limite les risques liés au déploiement d’une nouvelle version de l’application dans l’environnement de production.
Lespipelines Azure sont un service cloud fourni par Azure DevOps qui vous permet d’exécuter automatiquement des builds, d’effectuer des tests et de déployer du code dans divers environnements de développement et de production.
Cette section fournit des informations sur la façon de réaliser un déploiement Canary pour une application basée sur Kubernetes à l’aide de Citrix ADC VPX et du Citrix ingress controller avec des pipelines Azure.
Avantages du déploiement Canary
- La version Canary de l’application sert d’alerte précoce pour les problèmes potentiels qui peuvent être présents dans le nouveau code et les problèmes de déploiement.
- Vous pouvez utiliser la version Canary pour les tests de fumée et les tests A/B.
- Canary propose une restauration facile et des mises à niveau sans temps d’arrêt.
- Vous pouvez exécuter plusieurs versions d’applications simultanément.
Dans cette solution, Citrix ADC VPX est déployé sur la plate-forme Azure pour permettre l’équilibrage de charge d’une application et réaliser un déploiement Canary à l’aide de Citrix ADC VPX. Pour plus d’informations sur la façon de déployer Citrix ADC sur Microsoft Azure, consultez le lien de documentation Citrix.
Déploiement Canary avec Citrix ADC
Vous pouvez réaliser un déploiement Canary à l’aide de Citrix ADC avec annotations Ingress, qui est un déploiement Canary basé sur des règles. Dans cette approche, vous devez définir un objet Ingress supplémentaire avec des annotations spécifiques pour indiquer que la demande d’application doit être traitée en fonction de la stratégie de déploiement Canary basée sur des règles. Dans la solution Citrix, le routage du trafic basé sur Canary au niveau de l’entrée peut être réalisé en définissant différents ensembles de règles comme suit :
- Appliquer les règles Canary en fonction du poids
- Appliquer les règles Canary en fonction de l’en-tête de requête HTTP
- Appliquer les règles Canary en fonction de la valeur de l’en-tête HTTP
Pour plus d’informations, voir Déploiement Canary simplifié à l’aide des annotations d’entrée
Déploiement Canary à l’aide de Citrix ADC VPX avec des pipelines Azure
Citrix propose une solution pour le déploiement Canary à l’aide de Citrix ADC VPX et du Citrix ingress controller avec des pipelines Azure pour les applications basées sur Kubernetes.
Dans cette solution, il existe trois répertoires de configuration :
kubernetes_configs
deployment_configs
pipeline_configs
kubernetes_configs
Ce répertoire comprend les fichiers YAML de déploiement spécifique à l’application basée sur la version et les fichiers de configuration basés sur Helm pour déployer Citrix Ingress Controller, qui est chargé de pousser la configuration Citrix ADC pour réaliser le déploiement Canary.
Remarque :
Vous pouvez télécharger les derniers graphiques Helm à partir du référentiel des graphiques Helm du Citrix ingress controller et les placer dans le répertoire
cic_helm
.
deployment_configs
Ce répertoire inclut les fichiers setup_config
et teardown_config
JSON qui spécifient le chemin des fichiers YAML disponibles pour la version spécifique de l’application à déployer ou à arrêter pendant le déploiement Canary.
pipeline_configs
Ce répertoire inclut le script de pipeline Azure et le script Python qui lit les configurations utilisateur et déclenche le pipeline en fonction de la demande de l’utilisateur d’introduire une nouvelle version de l’application ou de démontage d’une version d’une application. La modification du pourcentage du poids du trafic dans le YAML d’entrée d’application déclencherait le pipeline pour basculer le trafic entre la version disponible des applications.
Une fois les trois fichiers de configuration en place, toute mise à jour des fichiers sous les répertoires deployment_configs
et kubernetes_configs
dans GitHub déclencherait le pipeline dans Azure.
Le pourcentage de répartition du trafic peut être ajusté à l’aide de l’annotation ingress.citrix.com/canary-weight
dans le YAML d’entrée de l’application.
Déployer un exemple d’application sur Canary dans les pipelines Azure
Cette rubrique explique comment déployer un exemple d’application en mode Canary à l’aide de pipelines Citrix ADC et Azure.
Conditions préalables
Assurez-vous que :
- Citrix ADC VPX est déjà déployé sur la plate-forme Azure et est prêt à être utilisé par notre exemple d’application.
- Cluster AKS avec connexion au service Kubernetes configurée pour le pipeline Azure.
Procédez comme suit :
-
Clonez le dépôt GitHub et accédez au répertoire
cd/canary-azure-devops
. - Placez les YAML spécifiques au déploiement d’applications (avec le fichier d’entrée) sous un dossier
v1
versionné du répertoirekubernetes_configs
. - Créez trois pipelines Azure à l’aide des fichiers YAML existants
deploy_cic.yaml
,deploy.yaml
etteardown.yaml
, pour déployer le Citrix ingress controller et déployer et démonter les applications. Reportez-vous à la section Pipelines Azure pour créer un pipeline. - Mettez à jour l’abonnement, le pool d’agents, la connexion au service et les détails Citrix ADC dans le pipeline YAML.
- Sauvez le pipeline.
-
Mettez à jour le chemin d’accès dans
deploy_config.json
avec le chemin spécifiant le répertoire dans lequel les YAML de l’application sont placés.{ "K8S_CONFIG_PATH" : "cd/canary-azure-devops/kubernetes_configs/v1" }
-
Validez le fichier
deploy_config.json
et le répertoire v1 à l’aide de Git pour déclencher le pipeline afin de déployer la version v1 de l’application. - Accédez à l’application via Citrix ADC.
- Introduisez la version v2 de l’application en créant le répertoire
v2
souskubernetes_configs
. Assurez-vous que l’annotation Canary de l’entrée sous cette version est spécifiée avec le bon poids à définir pour le fractionnement du trafic. -
Déployez la version v2 de l’application en mettant à jour
deploy_config.json
avec le chemin spécifiant le répertoire v2. Désormais, le trafic est réparti entre les versions v1 et v2 en fonction du poids canari défini dans l’annotation d’entrée (par exemple,ingress.citrix.com/canary-weight: "40"
) - Continuez à augmenter progressivement le poids du trafic dans l’annotation d’entrée jusqu’à ce que la nouvelle version soit prête à traiter tout le trafic.
Déploiement bleu-vert à l’aide de pipelines Citrix ADC VPX et Azure pour les applications basées sur Kubernetes
Le déploiement bleu-vert est une technique qui réduit les temps d’arrêt et les risques en exécutant deux environnements de production identiques appelés bleu et vert. À tout moment, un seul des environnements est actif et dessert tout le trafic de production. La méthode bleu-vert repose sur les déploiements côte à côte de deux environnements distincts mais identiques. Le déploiement d’une application dans les deux environnements peut être entièrement automatisé à l’aide de travaux et de tâches. Cette approche impose la duplication de toutes les ressources d’une application. Cependant, les déploiements bleu-vert peuvent être réalisés de nombreuses manières différentes dans divers outils de déploiement continu.
En utilisant Citrix ADC VPX avec des pipelines Azure, la même solution basée sur Canary peut être utilisée pour réaliser un déploiement bleu-vert en ajustant le poids du trafic à zéro ou 100.