Aller au contenu

Introduction à l'écosystème Kubernetes

Vous ne savez pas par où commencer pour aborder les projets liés à Kubernetes ? Nous proposons ici un tour d'horizon des services que vous pouvez implémenter, ainsi que des dernières tendances présentées à la KubeCon 2024.

Introduction à l'écosystème Kubernetes

Cette année, grâce à SFEIR j'ai eu la chance d'assister à la KubeCon 2024 pour voir les dernières nouveautés concernant Kubernetes

À cette conférence, une multitude de produits différents de l'univers Kubernetes sont représentés, à tel point que parfois on ne sait plus vraiment où donner de la tête. On compte actuellement 752 membres et 204 projets référencés par la CNCF, dont 130 projets sont encore à l'état de “sandbox”.

C'est donc une bonne occasion de rappeler quelques produits clés à mettre en œuvre sur un cluster Kubernetes, tout en évoquant quelques projets intéressants à suivre.

Projets clés à mettre en œuvre sur un cluster Kubernetes

La première chose à faire est déjà de maîtriser les concepts de Kubernetes (pods, namespaces, services, networking, security, autoscaling, storages, deployment patterns, cluster management, etc.).
Une fois cela fait, vous pouvez utiliser ces projets pour améliorer le fonctionnement de votre cluster, pour exécuter vos applications de façon efficace et professionnelle.

Gestion réseau

  • Cilium : une plateforme de gestion réseau, d'observabilité et de sécurité basée sur eBPF. En tant que CNI, il fournit une gestion réseau sur le layer 3, même entre les clusters. Cilium applique les politiques réseau sur les couches L3 à L7 à l'aide d'un modèle de sécurité basé sur l'identité. Cilium implémente l'équilibrage de charge distribué entre les pods et les services externes en remplaçant kube-proxy. Il dispose également de fonctionnalités avancées telles qu'une passerelle d'entrée et de sortie, la gestion de la bande passante, le maillage de services, l'observabilité approfondie du réseau et de la sécurité via Hubble et Tetragon (Alternatives : Calico, Istio, LinkerD, Envoy)

Gestion des API

  • Traefik : Un reverse proxy HTTP moderne et un équilibreur de charge qui facilite le déploiement des microservices. Traefik s'intègre à vos composants d'infrastructure existants, il se configure automatiquement et dynamiquement. Il est également bien intégré à Let's Encrypt (Alternatives : HAProxy, Kong, NGINX)

Observabilité

  • Prometheus : Un système de monitoring des systèmes et des services. Il collecte des métriques à partir de cibles configurées à des intervalles donnés, évalue les expressions de règles, affiche les résultats et peut déclencher des alertes si une condition est observée comme vraie (Alternatives : Datadog, Splunk, Dynatrace, New Relic, InfluxDB)
  • Grafana : un tableau de bord et un compositeur de graphiques à usage général. Il vise à fournir des moyens enrichis de visualiser les métriques de séries chronologiques, principalement via des graphiques, mais prend en charge d'autres moyens de visualiser les données via une architecture de panneau enfichable. Il prend actuellement en charge Graphite, InfluxDB et OpenTSDB, mais prend en charge d'autres sources de données via des plugins (Alternatives : Datadog, Splunk, Dynatrace, Kibana)
  • Fluentd : Il collecte les événements à partir de diverses sources de données et les écrit dans des fichiers, RDBMS, NoSQL, IaaS, SaaS, Hadoop, etc. Fluentd vous aide à unifier votre infrastructure de logging (Alternatives : Datadog, Splunk, Dynatrace, Logstash, collectd, Filebeat, Loki, Quickwit)
  • Jaeger : Une plateforme de tracing distribuée créée par Uber Technologies et offerte au CNCF. Il peut être utilisé pour surveiller les systèmes distribués basés sur des microservices via la propagation de contexte distribuée, la surveillance des transactions distribuées, l'analyse des causes profondes, l'analyse des dépendances de service et l'optimisation des performances/latences (Alternatives : Datadog, Splunk, Dynatrace, Dapper, OpenZipkin)

Deploiement

  • Helm : Un outil qui simplifie l'installation et la gestion des applications Kubernetes. Pensez-y comme un apt/yum/homebrew pour Kubernetes
  • Flux CD : Un outil qui garantit automatiquement que l'état de votre cluster Kubernetes correspond à la configuration que vous avez fournie dans Git. Il utilise un opérateur dans le cluster pour déclencher des déploiements dans Kubernetes, ce qui signifie que vous n'avez pas besoin d'un outil de delivery continu distinct (Alternative : Argo CD)

Gestion de Secrets

  • External-Secrets Operator : opérateur Kubernetes qui intègre des systèmes de gestion de secrets externes comme AWS Secrets Manager, HashiCorp Vault, Google Secrets Manager et bien d'autres. L'opérateur lit les informations des API externes et injecte automatiquement les valeurs dans un secret Kubernetes (Alternatives : Vault, SOPS, Sealed Secrets)

Securité

  • Kyverno : un moteur de politiques conçu pour Kubernetes. Avec Kyverno, les politiques sont gérées comme des ressources Kubernetes et aucun nouveau langage n'est requis pour écrire des politiques. Cela permet d'utiliser des outils familiers tels que kubectl, git et kustomize pour gérer les politiques. Les politiques Kyverno peuvent valider, muter et générer des ressources Kubernetes. L'interface de ligne de commande Kyverno peut être utilisée pour tester des politiques et valider des ressources dans le cadre d'un pipeline CI/CD (Alternatives : OPA, Kubewarden)
  • Trivy Operator : un scanner de vulnérabilité simple et complet pour les conteneurs et autres artefacts. Il détecte les vulnérabilités des packages OS (Alpine, Debian, CentOS, etc.) et des dépendances applicatives (pip, npm, yarn, composer, etc.) (Alternatives : Grype, Snyk, Clair, Anchore, Twistlock)

Quelques projets prometteurs à suivre

Lors de ma visite à KubeCon 2024, j'ai repéré quelques projets prometteurs mis en avant, je partage avec vous la liste de ces projets, sans ordre particulier. Ils peuvent être utiles pour étendre encore plus les possibilités de votre cluster.

  • Buildpacks : Il transforme le code source de votre application en images pouvant s'exécuter sur n'importe quel cloud. Il adopte les normes de conteneurs modernes, comme le format d'image OCI. Ils tirent parti des dernières fonctionnalités de ces standards, comme le montage de blobs entre référentiels et le « rebasing » de la couche d'image sur les registres Docker API v2 (Alternatives : Docker, Kaniko, Packer)
  • Crossplane : Il introduit des abstractions de charge de travail et de ressources sur les services gérés existants qui permettent un degré élevé de portabilité de la charge de travail entre les fournisseurs de cloud. Un seul crossplane permet le provisionnement et la gestion du cycle de vie complet des services et de l'infrastructure sur un large éventail de fournisseurs, d'offres, de vendeurs, de régions et de clusters (Alternatives : Terraform, OpenTofu, Pulumi)
  • Backstage : il s'agit d'une plateforme ouverte pour la création de portails de développeurs. Alimenté par un catalogue de services centralisé, il met de l'ordre dans vos microservices et votre infrastructure et permet à vos équipes produit de livrer rapidement du code de haute qualité, sans compromettre l'autonomie. l'outil est développé par les équipes Spotify, il s'inscrit dans la démarche de Platform Engineering (Alternative : Port)
  • Keda : Un composant de mise à l'échelle automatique piloté par les événements, applicable pour tout conteneur exécuté dans Kubernetes (Alternative : Knative)
  • KubeVirt : Il répond aux besoins des équipes de développement qui ont adopté (ou souhaitent adopter Kubernetes) mais qui possèdent des charges de travail existantes basées sur des machines virtuelles qui ne peuvent pas être facilement conteneurisées. Plus précisément, la technologie fournit une plate-forme de développement unifiée où les développeurs peuvent créer, modifier et déployer des applications résidant à la fois dans des conteneurs d'applications et dans des machines virtuelles dans un environnement commun et partagé (Alternatives : KVM, Proxmox)
  • OpenCost : elle donne aux équipes une visibilité sur les dépenses et l'allocation des ressources actuelles et historiques de Kubernetes. Ces modèles offrent une transparence des coûts dans les environnements Kubernetes qui prennent en charge plusieurs applications, équipes, départements, etc. (Alternative : Kubecost)
  • K8sGPT : Il s'agit d'un outil permettant d'analyser vos clusters Kubernetes, de diagnostiquer et de trier les problèmes. Il dispose d'une expérience SRE codifiée dans ses analyseurs et permet d'extraire les informations les plus pertinentes pour les enrichir avec l'IA
  • Kaito (Kubernetes AI Toolchain Operator) : Un opérateur qui automatise le déploiement du modèle d'inférence IA/ML dans un cluster Kubernetes. Les modèles cibles sont des modèles d'inférence open source populaires de grande taille tels que falcon et llama2

Lors de cette conférence, il est également intéressant de rencontrer la communauté : les TAGs (Tech Advisor Group) qui fournissent des conseils stratégiques et des avis sur les questions techniques, ainsi que les SIGs (Special Interest Group) qui se concentrent sur des domaines d'intérêt ou une expertise spécifique au sein de la communauté Kubernetes pour stimuler le développement et l'innovation.
Les TAGs sont spécialisés par domaines, par exemple sur la sécurité ou la durabilité environnementale.

Conclusion

Voici un aperçu assez complet des outils que vous pouvez mettre en œuvre sur un cluster Kubernetes, ce qui permet de disposer d'une bonne base pour comprendre l'écosystème.

Vous avez à votre disposition une suite d'outils que vous pouvez installer en standard sur un cluster Kubernetes pour gérer les problématiques courantes liées aux microservices (gestion des API, monitoring, logging, gestion des secrets, déploiement, etc.), ainsi que des outils émergents, que vous pouvez également étudier.

A l'avenir, il n'est pas impossible que je vous propose d'autres articles dédiés à certains des outils présentés ici.

Dernier