Aller au contenu

Déploiement blue/green

Release sans interruption avec deux environnements parallèles derrière le répartiteur de trafic sur Stack Harbor PaaS — flux blue/green, bascule de trafic et vérification de chaque côté avant la mise en production.

Le déploiement blue/green est un modèle de release qui utilise deux environnements parallèles — Blue et Green — placés derrière le répartiteur de trafic de la plateforme. Chaque environnement exécute l’application de façon indépendante. Le répartiteur décide quel environnement reçoit les requêtes. Une release procède en mettant à jour un environnement pendant que l’autre sert le trafic, puis en y basculant le trafic.

Le modèle élimine l’interruption lors des déploiements et offre une voie de retour arrière rapide : si la nouvelle version se comporte mal, basculez le trafic vers l’environnement précédent.

Pour les cas plus légers — un seul environnement avec un palier de serveur applicatif mis à l’échelle — utilisez la stratégie Sequential with delay du guide de déploiement. Le modèle blue/green vise les releases plus importantes où vous voulez un environnement de pré-production complet pour vérifier avant la mise en production.

Topologie

Trois environnements participent :

  • Blue — une copie complète du stack applicatif.
  • Green — une seconde copie complète du stack applicatif, configurée identiquement à Blue.
  • Répartiteur de trafic — un environnement séparé exécutant l’add-on répartiteur. Il reçoit tout le trafic de production et le route vers Blue, Green ou les deux selon un ratio configuré.

Blue et Green peuvent être créés indépendamment — par exemple en clonant un seul environnement source — et le répartiteur est ensuite pointé vers les deux.

Flux de déploiement

Le flux met à jour l’application sur chaque côté à tour de rôle, sans interruption de production.

Étape 1 — drainer le trafic de Blue

Ouvrez la configuration du répartiteur de trafic. Déplacez le curseur de ratio à 0 … 100. Tout le trafic entrant va vers Green seulement.

Cliquez sur Apply.

Étape 2 — mettre à jour Blue

Sans trafic sur Blue, déployez la nouvelle version applicative sur Blue. Vérifiez le déploiement :

  • Inspectez les journaux sur le serveur applicatif Blue.
  • Frappez Blue directement (via son hostname d’environnement, ou un domaine réservé aux testeurs) pour confirmer que la nouvelle version se comporte correctement.
  • Exécutez des smoke tests contre la nouvelle version.

Pas de pression temporelle à cette étape — Green gère la production.

Étape 3 — mettre à jour Green

Ouvrez à nouveau la configuration du répartiteur. Déplacez le curseur à 100 … 0. Blue sert maintenant tout le trafic avec la nouvelle version ; Green ne reçoit aucun trafic.

Appliquez les mêmes étapes de déploiement à Green. Vérifiez.

Étape 4 — restaurer la répartition originale

Une fois les deux côtés sur la nouvelle version, ouvrez le répartiteur et remettez le ratio à la distribution de régime établi (par exemple 50 … 50).

Le déploiement est complet. Les deux côtés exécutent la nouvelle version ; la production n’est jamais tombée.

Retour arrière

Si un problème apparaît après le déploiement sur Blue (mais avant la mise à jour de Green), basculez le ratio à 0 … 100 et Green continue de servir l’ancienne version. Faites le retour arrière sur Blue à votre rythme.

Si un problème apparaît après que les deux côtés aient été mis à jour, vous avez besoin d’un plan de récupération qui ne repose pas sur le déploiement encore présent de l’ancienne version. Modèles courants :

  • Conservez un snapshot exporté de l’environnement de la version précédente et réimportez à la demande.
  • Conservez l’artefact précédent dans le gestionnaire de déploiement et redéployez.
  • Pour les changements de schéma de base de données, assurez-vous que les migrations sont rétro-compatibles afin que l’ancien code applicatif fonctionne encore contre le nouveau schéma.

Liste de vérification pré-déploiement

  • Blue et Green ont un dimensionnement matériel, des variables d’environnement et une configuration identiques.
  • La base de données est partagée (avec des changements de schéma rétro-compatibles) ou possède sa propre copie par environnement synchronisée avant la bascule.
  • Les intégrations externes sont configurées pour accepter le trafic depuis les hostnames Blue et Green.
  • Le répartiteur de trafic est configuré avec Blue et Green comme backends.

Voir aussi