Kubernetes·

Kubernetes au service de l'intégration et du déploiement continus

Cet article décrit comment Kubernetes, Docker, et Ansible soutiennent l'intégration et le déploiement continu dans le cadre du DevOps.
Kubernetes au service de l'intégration et du déploiement continus

Introduction : Kubernetes comme plateforme CI/CD

Kubernetes n'est pas qu'un orchestrateur de conteneurs : c'est la plateforme idéale pour le CI/CD. Il fournit l'environnement d'exécution, le networking, le scaling et la résilience dont les pipelines de déploiement ont besoin. Voici comment je l'exploite au quotidien.

La conteneurisation avec Docker : le prérequis

Avant de parler Kubernetes, il faut parler Docker. La conteneurisation est le prérequis à tout déploiement K8s. Chez Bloomflow, la migration vers les conteneurs a été le premier chantier : chaque application a reçu son Dockerfile, optimisé avec des multi-stage builds pour réduire la taille des images et éliminer les outils de build de l'image finale.

Pour WizOps.fr, le Dockerfile du frontend produit une image Nuxt optimisée, et celui du backend une image Django avec Gunicorn. Les deux images font moins de 200 Mo grâce au multi-stage build.

Kubernetes comme plateforme de déploiement

Kubernetes apporte des primitives puissantes pour le déploiement :

  • Deployments : rolling updates avec zero downtime
  • Services : load balancing et service discovery
  • Ingress : routing HTTP avec TLS automatique (cert-manager)
  • HPA : scaling automatique basé sur les métriques

Chez Coopengo, ces primitives sont utilisées pour une infrastructure Kubernetes HA sur AWS certifiée HDS. Le cluster est réparti sur 3 AZ, avec des PodDisruptionBudgets qui garantissent la disponibilité pendant les mises à jour de nodes.

Ansible pour le bootstrapping

Dans mes architectures, Ansible joue un rôle complémentaire à Kubernetes. Il gère le bootstrapping des nodes (configuration OS, sysctl, limites kernel) et les composants hors-cluster (bases de données, load balancers externes). Chez Metronome, Ansible configurait les nodes OVH avant que Kubernetes ne prenne le relais pour l'orchestration applicative.

Le pipeline CI/CD complet

Le pipeline que je mets en place sur chaque projet Kubernetes :

  1. Développeur : ouvre une PR avec ses changements
  2. GitHub Actions CI : lint, tests, build Docker, scan Trivy, push GHCR
  3. Mise à jour du Helm Chart : le tag d'image est mis à jour dans le repo des manifests
  4. ArgoCD CD : détecte le changement, déploie sur K8s
  5. Prometheus/Grafana : monitoring post-déploiement

Chez Padam Mobility, ce pipeline est enrichi d'environnements éphémères : chaque PR crée automatiquement un namespace Kubernetes avec l'application complète, permettant de tester bout-en-bout avant le merge.

Le futur : GitOps et beyond

La tendance actuelle va vers le GitOps pur : tout est dans Git, rien n'est fait manuellement. ArgoCD est le fer de lance de cette approche. Chez Earny SA, la migration GCP vers AWS a été gérée intégralement via Git : les manifests Kubernetes dans un repo, la configuration Terraform dans un autre, et ArgoCD qui orchestre le tout.

Conclusion

Kubernetes, Docker, Ansible et ArgoCD forment un écosystème cohérent pour le CI/CD. Chaque outil a sa zone de responsabilité : Docker pour le packaging, Ansible pour la configuration OS, Kubernetes pour l'orchestration, ArgoCD pour le déploiement GitOps. Cette séparation des responsabilités est la clé d'une architecture maintenable et évolutive.


RDV