Optimiser le Déploiement avec Ansible et Kubernetes

Ansible + Kubernetes : le duo complémentaire pour des déploiements robustes
Ansible et Kubernetes jouent chacun un rôle distinct mais complémentaire. Ansible gère la configuration et le provisionnement, Kubernetes orchestre les applications. Voici comment je combine ces deux technologies sur mes projets.
Ansible : automatiser le provisionnement de clusters
Avant Kubernetes managé, monter un cluster from scratch était un vrai challenge. Chez Metronome, j'ai utilisé Terraform pour l'infrastructure OVH et Ansible pour bootstrapper le cluster Kubernetes : installation de kubelet, configuration d'etcd, déploiement du control plane, et configuration réseau avec Calico. Même avec les services managés (EKS, GKE, OVH Managed K8s), Ansible garde un rôle pour la configuration post-provisionnement : installation d'outils de monitoring, configuration des politiques de sécurité réseau, et déploiement des composants communs (cert-manager, ingress-nginx, external-dns).
Kubernetes : l'orchestration applicative
Une fois le cluster provisionné, Kubernetes prend le relais pour tout ce qui est applicatif. Chez KNDS dans la défense, Helm Charts et ArgoCD gèrent le déploiement de dizaines de microservices avec des contraintes de sécurité strictes (NetworkPolicies, RBAC, seccomp). Chez Okeiro en e-santé, un seul Helm Chart gère 4 composants FHIR sur GKE Autopilot avec Workload Identity. L'avantage de Kubernetes sur Ansible pour les applications : le self-healing (redémarrage automatique des pods défaillants), l'autoscaling (ajustement dynamique du nombre de réplicas), et les rolling updates (déploiement sans downtime).
Le duo en action : un cas concret chez Bloomflow
Chez Bloomflow, pendant mes 5 ans en CDI, la combinaison Ansible/Kubernetes a évolué avec le projet. Au début, Ansible gérait tout : provisionnement des serveurs, installation de Docker, déploiement des applications. Progressivement, Kubernetes a pris en charge le déploiement applicatif, et Ansible s'est recentré sur la configuration des composants non-Kubernetes : bases de données, serveurs de build, bastions, et agents de monitoring. Cette transition a été naturelle et a permis de bénéficier du meilleur des deux mondes : la simplicité d'Ansible pour la configuration système et la puissance de Kubernetes pour l'orchestration applicative.
Cas pratiques multi-cloud
La combinaison Ansible/Kubernetes brille en environnement multi-cloud. Chez Earny SA, lors de la migration GCP vers AWS, Ansible a configuré les nouveaux serveurs AWS pendant que Kubernetes (EKS) prenait en charge le déploiement des applications via ArgoCD. La migration s'est faite sans downtime : les deux environnements ont coexisté temporairement, avec un basculement progressif service par service. Chez Bloomflow, la même approche a été utilisée pour la migration vers Outscale SecNumCloud pour la DGE : Ansible configurait l'infrastructure Outscale, Kubernetes déployait les applications.
Bonnes pratiques pour la combinaison
Mes recommandations après des années de pratique : maintenez des playbooks Ansible bien documentés avec un README par rôle. Séparez clairement les responsabilités : Ansible pour l'infra et la config système, Kubernetes pour les applications. Testez vos playbooks avec Molecule ou Ansible-lint avant de les appliquer en production. Intégrez Ansible dans votre pipeline CI : chez Epiconcept, les playbooks sont versionnés dans Git et validés par GitHub Actions avant application. Utilisez des inventaires dynamiques pour les environnements cloud. Et monitorez tout : Prometheus pour Kubernetes, les checks Ansible pour la conformité des configurations.
Ansible et Kubernetes ne se remplacent pas, ils se complètent
Le piège serait de penser que Kubernetes rend Ansible obsolète, ou qu'Ansible suffit pour tout. La réalité est que chaque outil excelle dans son domaine. Les utiliser ensemble, c'est profiter de la puissance des deux sans les limitations de chacun.