Thomas Pedot
mercredi 15 janvier 2025
Kubernetes Production & DevOps: Helm, GitOps, ArgoCD

Cloud Native & DevOps: Infrastructure as Code
En tant que développeur full-stack, j'ai rapidement compris que maîtriser l'infrastructure est aussi important que maîtriser le code. Mes projets open-source dans l'écosystème Cloud Native reflètent cette philosophie : des outils pragmatiques pour résoudre des problèmes réels d'infrastructure.
Mon Approche Cloud Native
Trois principes guident mon travail:
- GitOps First : Tout en code, versionné dans Git
- Developer Experience : Outils qui simplifient, pas qui complexifient
- Production-Ready : Solutions testées en conditions réelles
Pourquoi Ces Outils?
Les outils que je développe ne sont pas des exercices académiques. Chacun résout un problème concret que j'ai rencontré:
- helm-chart-viz : "Comment comprendre les dépendances Helm avant un upgrade?"
- jetson-containers : "Comment déployer du ML en edge avec des ressources limitées?"
- dagster-argocd-configuration : "Comment orchestrer des déploiements multi-tenant avec GitOps?"
Ces projets représentent des centaines d'heures de R&D, de tests, et d'itérations basées sur des besoins réels.
Mes Projets Open Source Cloud Native
helm-chart-viz: Visualisation des Dépendances Helm
Problème résolu: Réduction de 70% des incidents liés aux upgrades Helm.
Tech Stack: Python, NetworkX, GraphViz, Helm SDK
Caractéristiques principales:
- Parsing récursif des dépendances
- Détection des conflits de versions
- Visualisation en graphe
- Analyse des contraintes de version
📖 Lire l'article complet: Helm Chart Visualization Tool →
dagster-argocd-configuration: GitOps Multi-Tenant
Problème résolu: Architecture GitOps automatisée pour déploiements multi-tenant.
Tech Stack: ArgoCD, Helm, Kubernetes, Git
Caractéristiques principales:
- ApplicationSets pour multi-tenancy
- Synchronisation automatique
- Configuration basée en Git
- Déploiements sans interruption
📖 Lire l'article complet: ArgoCD + Dagster GitOps Architecture →
jetson-containers: Edge Computing Optimisé
Problème résolu: Déploiement de ML en edge computing avec contraintes extrêmes.
Tech Stack: Docker, TensorRT, NVIDIA Jetson, ARM64
Caractéristiques principales:
- Multi-stage Docker builds
- Optimisation TensorRT
- Support ARM64
- Image < 2GB
📖 Lire l'article complet: Edge Computing with Jetson Xavier →
Considérations Kubernetes en Production
Déployer Kubernetes en production demande une planification stratégique bien au-delà d'une simple configuration de cluster. À travers mes travaux sur des architectures multi-tenant et des déploiements edge computing, j'ai identifié les domaines critiques qui déterminent le succès en production.
Sécurité et Contrôle d'Accès
Le Contrôle d'Accès Basé sur les Rôles (RBAC) forme la fondation de la sécurité Kubernetes. Dans mes déploiements ArgoCD multi-tenant, j'implémente des rôles isolés par namespace avec le principe du moindre privilège. Chaque tenant reçoit des politiques RBAC isolées, prévenant tout accès inter-tenant.
Les Network Policies fournissent des règles de pare-feu au niveau des pods. Dans la configuration Dagster multi-tenant, j'applique des règles ingress/egress strictes : seuls les pods spécifiques communiquent au-delà des limites des namespaces, réduisant les risques de mouvement latéral.
Pod Security Standards (remplaçant les deprecated Pod Security Policies) appliquent des baselines de sécurité. Mes déploiements edge computing utilisent le mode "restricted", prévenant les conteneurs privilégiés et l'accès au réseau d'hôte.
Monitoring et Observabilité
La production Kubernetes demande une observabilité complète. Ma pile combine :
- Prometheus pour les métriques (santé du cluster, ressources des pods, métriques métier)
- Grafana pour la visualisation et les alertes
- Stack ELK (Elasticsearch, Logstash, Kibana) pour la centralisation des logs
Pour les déploiements edge sur Jetson Xavier, j'ai implémenté un monitoring léger utilisant des exporteurs Prometheus avec une rétention de 5 minutes (contraintes de stockage), envoyant les alertes critiques à l'infrastructure centralisée.
Stockage et Persistance
Les volumes persistants nécessitent une planification minutieuse. Mes configurations de production utilisent :
- StorageClasses avec les approvisioneurs appropriés (AWS EBS, local-path pour edge)
- Stratégies de backup avec Velero pour la récupération d'urgence
- Snapshots de volumes pour des points de restauration
Le déploiement edge computing a enseigné des leçons précieuses : sur les appareils ARM64, le stockage local avec une gestion de cycle de vie soigneuse surpasse le stockage attaché au réseau en raison des contraintes de latence.
Bonnes Pratiques Helm Charts
Helm simplifie les déploiements Kubernetes, mais les graphes de dépendances complexes créent des défis. Mon outil helm-chart-viz est né d'incidents de production causés par des conflits de versions de charts.
Gestion des Dépendances
La discipline des lock files prévient la dérive de version. Dans le déploiement Dagster-ArgoCD, je maintiens des fichiers Chart.lock stricts, assurant des builds reproductibles entre environnements.
La détection de conflits de dépendances nécessite un parsing récursif. helm-chart-viz analyse l'arbre complet des dépendances, identifiant quand plusieurs charts dépendent de versions incompatibles du même sous-chart (ex: PostgreSQL 11.x vs 13.x).
La gestion des repositories impacte la fiabilité. Je miroir les charts critiques vers des registries privés, prévenant les défaillances de déploiement dues à des indisponibilités de registry upstream.
Structure et Templating des Charts
La hiérarchie des values permet une configuration spécifique à l'environnement sans duplication de charts. Ma configuration multi-tenant utilise :
values.yaml(défauts)values-production.yaml(surcharges production)values-tenant-[name].yaml(configuration spécifique au tenant)
Les fonctions de template réduisent la duplication de code. J'utilise intensivement tpl pour l'injection dynamique de valeurs et des fonctions template personnalisées pour les patterns communs.
Les hooks orchestrent les déploiements complexes. Les hooks pre-install valident la configuration, les hooks post-install exécutent les migrations de base de données, assurant l'ordre correct du déploiement.
Tests et Validation
Helm test valide les déploiements. Chaque chart inclut des pods de test vérifiant :
- Connectivité aux bases de données
- Accessibilité des APIs externes
- Disponibilité des points d'extrémité de service
Helm lint capture les erreurs de template avant le déploiement, intégré aux pipelines CI/CD.
Workflow GitOps et Outils
GitOps transforme la gestion d'infrastructure en traitant Git comme la source de vérité unique. Mon architecture ArgoCD-Dagster démontre GitOps à l'échelle.
Pourquoi GitOps Compte
L'infrastructure déclarative élimine la dérive de configuration. Dans mes déploiements multi-tenant, chaque ressource Kubernetes existe en tant que YAML dans Git. L'état du cluster converge automatiquement vers l'état du repository.
La traçabilité complète fournit un historique de changement exhaustif. Chaque modification d'infrastructure génère un commit Git, capturant qui a changé quoi, quand, et pourquoi.
La simplification des rollbacks réduit le temps de récupération d'incident. Reverser un commit Git revert automatiquement l'état du cluster—aucune intervention manuelle nécessaire.
ArgoCD vs Flux CD
Les deux sont excellents pour GitOps, mais mon expérience favorise ArgoCD pour des raisons spécifiques :
Forces d'ArgoCD :
- Interface utilisateur visuelle pour inspecter l'état du cluster
- Gestion multi-cluster depuis un plan de contrôle unique
- ApplicationSets pour un templating puissant
- Sync waves pour l'ordre de déploiement complexe
- Intégration SSO (OIDC, SAML)
Forces de Flux CD :
- Poids léger (meilleur pour les clusters avec ressources limitées)
- Expérience native Helm avec HelmReleases
- Automatisation d'images pour les pipelines CD
Pour les scénarios multi-tenant, les ApplicationSets d'ArgoCD se sont avérés essentiels. Une seule définition ApplicationSet génère des Applications pour 20+ tenants, chacun avec des namespaces isolés et des configurations.
Bénéfices du Déploiement Continu
La vélocité de déploiement s'est améliorée dramatiquement. Les déploiements manuels prenaient 2 heures ; GitOps a réduit cela à 5 minutes sans intervention humaine.
La cohérence de configuration a éliminé la dérive d'environnement. Développement, staging, et production maintiennent des configurations identiques sauf pour les valeurs spécifiques à l'environnement.
La sécurité s'est améliorée par accès de moindre privilège. Les développeurs poussent vers Git ; seul ArgoCD nécessite les permissions d'admin du cluster.
Stratégies de Rollback
Les vérifications de santé automatiques détectent les déploiements défaillants. ArgoCD monitore la santé des ressources, rollback automatique en cas de défaillances persistantes.
Les politiques de sync contrôlent le niveau d'automatisation :
automated: truepour le non-production (sync immédiat)manualpour la production (porte d'approbation humaine)selfHeal: trueprévient les changements manuels du cluster
Ma configuration production utilise une sync semi-automatique : automatique pour les changements non-risqués, approbation manuelle pour les migrations de base de données ou changements cassants.
Technologies Maîtrisées
Kubernetes
- Deployments et Services
- ConfigMaps et Secrets
- Network Policies et Resource Quotas
- RBAC et Pod Security Standards
- Persistent Volumes et StorageClasses
- Multi-tenant architectures
Helm
- Templating avancé avec fonctions personnalisées
- Gestion des dépendances complexes
- Hooks de déploiement (pre-install, post-install)
- Chart testing et validation (helm lint, helm test)
- ApplicationSets pour déploiements à l'échelle
ArgoCD
- ApplicationSets multi-tenant
- GitOps workflow complet
- Sync Policies automatisées et manuelles
- Déploiements déclaratifs avec rollback automatique
- Health checks et monitoring d'état
- Intégration SSO et contrôle d'accès
Docker
- Multi-stage builds optimisés
- Optimisation d'images pour production
- Edge computing et ARM64
- Sécurité des conteneurs
- Image registry et mirroring
Monitoring & Observabilité
- Prometheus pour métriques
- Grafana pour dashboards et alerting
- Stack ELK pour logs centralisés
- Distributed tracing et debugging
Mes Engagements
- Infrastructure as Code : Tout est déclaratif, versionné, auditable
- Performance : Optimisations mesurables et validées en production
- Scalabilité : Solutions qui passent à l'échelle sans intervention
- Sécurité : Isolation, RBAC, et bonnes pratiques intégrées dès le départ
- Automatisation : GitOps et déploiement continu par défaut
Commençons?
Explorez mes articles pour une immersion dans l'écosystème Cloud Native, ou contactez-moi pour discuter de vos défis d'infrastructure.