Canary deployments avec Kubernetes/GKE


Introduction

Dans cette partie du TP nous allons nous intéresser à un exemple de mise en œuvre d’une méthodologie de mise à jour d’une application de type “canari” (canary deployment), en utilisant Kubernetes via la plateforme GKE (Google Kubernetes Engine) déjà utilisée dans les exercices précédents.

Cette technique permet de mettre à jour les différentes instances de composants d’un service avec réplication (replicas) en offrant les propriétés suivantes :

Nous allons illustrer cette méthodologie de manière simple et relativement manuelle mais notez qu’il est également possible d’utiliser des approches avec davantage d’automatisation (par exemple, pour l’augmentation progressive de la part du traffic attribuée à la nouvelle version ou pour l’annulation de la mise en jour en cas de détection de problème).

Cet exercice sera basé sur un tutoriel existant, assez ancien mais toujours pertinent pour illustrer les notions de base. Le tutoriel illustre succesivement deux façons (parmi d’autres) de faire un déploiement de canari(s). La première est basée sur l’utilisation d’un objet de type load balancer ; la seconde est basée sur l’utilisation d’un objet de type ingress.


!! ATTENTION !! Certaines étapes du tutoriel ci-dessous nécessitent des petites modifications car quelques commandes et formats/contenus de fichiers de configuration de Kubernetes ont évolué lors des dernières années.

Voici la la listes des différences/modifications à prendre en compte :

Il est donc important de garder à l’esprit les avertissements ci-dessus au fil du tutoriel.


Travail à effectuer

Vous pouvez maintenant commencer le tutoriel en allant sur la page suivante : Kubernetes Canary deployments 🐤 for mere mortals

Important : Il est bien sûr demandé de comprendre et d’expliquer chaque étape (principe, commandes utilisées, contenu des fichiers de configuration, …).

Quelques précisions pouvr éviter d’éventuels malentendus :


Pour aller plus loin avec les canary deployments (facultatif)

Pour approfondir le sujet, vous pouvez considérer l’une des pistes suivantes, ou les deux :