Comme prévu, La version 1.28 de Kubernetes est sortie le 15 aout 2023. C’est la deuxième version de Kubernetes à sortir cette année, 4 mois après la version 1.27. Au programme de cette nouvelle version de Kubernetes, 59 améliorations, parmi lesquelles des nouveautés pour les sidecars et des renforts dans les protocoles de sécurité.
Vous souhaitez devenir incollable sur Kubernetes et obtenir une maitrise complète de l’outil ? Notre formation Kubernetes vous apprendront tout ce qu’il y a à savoir afin que vous puissiez déployer, diriger et administrer des conteneurs applicatifs. Vous pourrez également passer des certifications afin de prouver vos compétences.
Les Kubernetes Sidecars
Les sidecars Kubernetes sont sans aucun doute les stars de cette nouvelle version. Ce concept est à la base de nombreux éléments cruciaux des environnements cloud native. Pourtant, la version 1.28 marque la première fois que la notion de sidecar est intégrée par défaut dans l’API Kubernetes avec la fusion de sidecar KEP.
Pour comprendre pourquoi ce changement est un gros changement dans Kubernetes, il est bon de rappeler l’organisation des composants Kubernetes.
Le pod est l’unité centrale d’exécution et d’adressage dans Kubernetes, chaque pod contient un ou plusieurs conteneurs. Les pods disposent d’une adresse IP unique, et les conteneurs d’un pod partagent tous cette adresse IP. Les conteneurs sont complètement dépendants des pods, si un pod meurt, tous ses conteneurs meurent aussi. En utilisant les pods comme éléments de base, Kubernetes y empile un grand nombre de constructions au-dessus.
Bien que les pods puissent avoir de nombreuses propriétés différentes, ils ne sont jamais vus différemment par Kubernetes (un pod restera toujours un pod) contrairement aux conteneurs qui peuvent de type normal ou de type init.
Le rôle des conteneurs init est, comme leur nom l’indique, de s’exécuter au moment de l‘initialisation du pod, avant qu’il ne soit prêt à agir. Les conteneurs init sont censés se terminer, et une fois que tous les conteneurs init se terminent dans un pod, les conteneurs ordinaires, non init, s’exécutent. Cette distinction est la clé pour comprendre le fonctionnement des Sidecars Kubernetes.
Sidecars et Kubernetes 1.28
Comme pour les sidecars de moto, ceux de Kubernetes sont des conteneurs s’exécutant en parallèle d’un conteneur principal. Cette fonctionnalité permet d’augmenter une application au moment de l’exécution sans avoir à modifier le code, tout en fonctionnant dans le même contexte opérationnel et de sécurité que l’application elle-même. Vous pourrez donc ajouter des fonctionnalités à cette application sans avoir à recompiler le code.
Après des années de stagnation (la fonction avait été annoncée en 2019), le KEP sidecar fait enfin son apparition dans Kubernetes. Le but principal de cet ajout est en réalité lié aux conteneurs init. Il introduit un nouveau champ RestartPolicy dans la spécification des conteneurs init. Ce champ ouvre de nombreuses possibilités.
- Vous pouvez spécifier une nouvelle configuration « always » pour un conteneur init
- Cette nouvelle configuration ajoute un conteneur sidecar
- Le conteneur sidecar démarre avant tous les conteneurs ordinaires (parce que c’est un conteneur init), et, c’est là qu’est la subtilité, il se termine maintenant dès que tous les conteneurs ordinaires se terminent
- Le « always » permet de lancer un redémarrage automatique si le sidecar meurt alors que les conteneurs principaux sont en cours d’exécution
- Contrairement aux conteneurs d’initialisation normaux qui attendent chacun à leur tour d’être terminés avant que le suivant ne démarre, les autres conteneurs d’initialisation n’attendent pas que les conteneurs sidecar soient terminés avant de démarrer
Ces ajouts corrigent donc deux des plus gros problèmes liés à l’utilisation des sidecars : le support des Jobs et les conditions de course au démarrage des conteneurs.
Nouveautés de sécurité dans Kubernetes 1.28
En plus des nouveautés sur les sidecars, Kubernetes 1.28 apporte de nombreuses fonctionnalités en matière de sécurité.
Changement des politiques d’admissions
Les politiques d’admissions sont un moyen très efficace de sécuriser vos clusters Kubernetes. Introduites dans la version 1.26, elles constituent une alternative performante aux contrôleurs externes.
Les améliorations des politiques d’admission sont basées sur le langage CEL qui fait partie intégrante du webhook d’admission, outil permettant d’intercepter et de modifier les demandes adressées au serveur API de Kubernetes. Le langage CEL permet de créer des politiques d’admissions et des conditions de correspondance bien plus complexes et expressives.
Réduction des jetons de compte de service
Kubernetes 1.28 permet désormais aux utilisateurs de réduire l’utilisation des jetons de compte de service. L’objectif de cette mise à jour est de minimiser la surface d’attaque potentielle liée à l’utilisation de ces jetons. Cela devrait aussi réduire la charge de travail pour les administrateurs de clusters.
Assurer des images secrètes
Dans Kubernetes 1.28, l’extraction d’images est maintenant garantie sécurisée, en particulier lorsque la politique « IfNotPresent » est utilisée.
Kubernetes peut donc maintenant vérifier l’intégrité de l’image sur le nœud et de la comparer à l’image dans le registre. En cas de non-concordance ou de compromission de l’image sur le nœud, l’image extraite du registre à nouveau. Cela garantit que seules des images vérifiées et sécurisées sont utilisées dans le cluster.
Amélioration de KMS v2
Le Key Management Service (KMS) reçoit aussi des améliorations. Cette version 2 introduit une nouvelle version de l’API améliorant les performances, les mécanismes de rotation des clés et l’observabilité. Les processus de cryptage/décryptages sont maintenant plus efficaces et la rotation des clés peut se faire de façon complètement transparente et sans perturbations.
KMS v2 est également plus sûr et plus fiable. Si une clé utilisée pour le chiffrement est compromise, le système peut désormais opérer une rotation transparente vers une nouvelle clé.
Certificat Kubelet et Kubelet TLS
Le bootstrap sécurisé des certificats Kubelet est un composant crucial de la sécurité dans Kubernetes. Kubernetes 1.28 dispose d’une nouvelle fonction nommée Kubelet TLS Bootstrap. Elle facilite la création et la distribution des certificats TLS dont les Kubelets ont besoin pour se connecter en toute sécurité au plan de contrôle.
Cette fonction permet non seulement de réduire la charge administrative et de renforcer la sécurité du cluster.
Logs dynamiques
Les journaux d’audit sont des éléments clés de la sécurité dans Kubernetes et l’introduction de l’audit dynamique devrait faciliter la tâche des administrateurs clusters. Il est désormais possible de modifier les politiques d’audit sans redémarrer le cluster. Cela offre une plus grande adaptabilité pour répondre aux changements des exigences de sécurité.
Autres améliorations
La version 1.28 de Kubernetes est riche en amélioration et toutes les citer prendrait des heures, donc voici en vrac quelques nouveautés.
Topology Manager
Le gestionnaire de topologie a été amélioré dans cette version 1.28 et dans sa mission d’optimiser la distribution des ressources et d’augmenter les performances des clusters. Ces avancées sont maintenant valables, y compris sur les infrastructures matérielles complexes comme les NUMA.
Prise en charge de l’IPV6
Les clusters Kubernetes peuvent désormais gérer les communications IPV4 et IPV6. Cet ajout était essentiel pour maintenir Kubernetes à la pointe des avancées des entreprises.
Instantanés et restauration
Les données des snapshots peuvent à présent être gérées et restaurées plus facilement grâce aux nouvelles fonctionnalités de snapshot et de restauration de volume de la version 1.28. Ce sont des fonctionnalités importantes pour augmenter la disponibilité et la fiabilité des applications exécutées sur les clusters Kubernetes.
Limitation du débit des serveurs API
Afin de garantir le bon fonctionnement du cluster, il est essentiel de limiter le débit des serveurs API. Dans cette nouvelle version, des capacités améliorées de limitation de débit pour les serveurs d’API font leur apparition. Les restrictions de débit sur les demandes d’API peuvent maintenant être contrôlées plus précisément, permettant une meilleure gestion des ressources des clusters.
Conclusion
La version 1.28 de Kubernetes renferme encore de nombreuses autres améliorations que vous pourrez retrouver sur la page officielle du Github Kubernetes. Si vous souhaitez avoir le point de vue des développeurs eux-mêmes sur les fonctionnalités phares de leur nouvelle version, vous pouvez regarder cette vidéo réalisée à l’occasion de la sortie de Kubernetes 1.28.