Pourquoi il ne faut plus avoir peur de Kubernetes
Abdelfettah Sghiouar
Senior Cloud Developer Advocate, Google Cloud
Depuis quelques années, Kubernetes est devenu la plateforme open source de référence pour la gestion des workloads conteneurisés.
Google Cloud Innovators Program
Si vous souhaitez accroître vos compétences Google Cloud, rejoignez notre communauté d'innovateurs et développez vos compétences avec nous.
S’inscrireSynonyme de portabilité et d’évolutivité, la conteneurisation permet d’exploiter pleinement le potentiel du Cloud tout en réduisant le temps consacré à la gestion de son infrastructure.
Le nom même de Kubernetes signifie “capitaine” en grec, à l’image du commandant chargé d’assurer la sécurité de son navire. Tout comme ce capitaine expérimenté, il s’agit d’une technologie éprouvée : chez Google, nous exécutons des workloads conteneurisés depuis une quinzaine d’années, travaillant main dans la main avec une communauté open source engagée et passionnée.
Kubernetes et la communauté open source
L’histoire de Kubernetes est fortement liée à celle de la communauté open source. Cette dernière a considérablement évolué au fil des années, mais reste tout aussi engagée en faveur du partage et de l’entraide. Google croit profondément en l’open source, à sa valeur pour l’ensemble de la communauté des développeurs ainsi qu’à sa rentabilité. Nous cherchons tous à résoudre les mêmes problèmes. Au lieu de réinventer la roue, l’open source permet aux entreprises d’apporter de la valeur ajoutée à des produits existants.
Par exemple, l’une des tendances actuelles en matière d’open source est le développement de solutions de sécurité. Les problématiques évoluent depuis quelques années : il ne s’agit plus de protéger seulement votre système de production, mais toute votre chaîne d'approvisionnement logicielle. La culture du partage de l’univers de la conteneurisation open source est à double tranchant : en téléchargeant les conteneurs d’autrui, on peut s’exposer à des risques. Plusieurs initiatives open source s’attaquent à la question, notamment l’Open Software Security Foundation, ainsi que la communauté Sigstore, dont Google fait partie. Ainsi, nous avons mis au point Software Delivery Shield, solution de sécurité de la chaîne d'approvisionnement logicielle entièrement gérée de bout en bout.
Kubernetes, en l'occurrence, a été développé pour aborder le problème de la gestion d’un parc de serveurs à grande échelle. Un, deux ou trois serveurs sont relativement faciles à gérer. Lorsqu’il s’agit de dix serveurs, voire des milliers, que l’on doit installer et configurer, de préférence de manière automatisée, cela devient bien plus compliqué. Inspiré de Borg, le système de gestion de clusters interne de Google, Kubernetes a été développé et mis à la disposition de la communauté open source en 2015.
Extensibilité, portabilité et abstraction des complexités opérationnelles
Kubernetes peut être défini comme le “système d’exploitation du Cloud”, un framework permettant de développer, de gérer et de coordonner les applications conteneurisées dans le cadre d’une infrastructure et une structure cohérente. Kubernetes agit en tant que couche d’abstraction : sa compatibilité multi-architecture et multi-environnement permet de créer des clusters qui agissent comme un unique terminal. Plutôt que de déployer manuellement des répliques de l'application sur différents serveurs, l’on peut simplement demander à Kubernetes de créer un certain nombre de répliques de l'application, de manière manuelle ou automatisée. En tant que développeur, plus besoin de se demander où sont ses serveurs, quelle est leur configuration, comment ils sont gérés - c’est Kubernetes qui s’en charge.
Kubernetes est également extensible. Les utilisateurs peuvent ajouter ou personnaliser des fonctionnalités par le biais d’API, de contrôleurs et de ressources personnalisées. Il s’agit d’un système avant tout déclaratif : le développeur envisage l'état souhaité des applications et de l'infrastructure et envoie une commande sous la forme de fichier YAML, laissant Kubernetes se charger des détails d'implémentation. Par exemple, l’on peut dire, “Il faudrait exécuter 10 répliques de telle application, 10 fois par jour,” ou bien l’on peut étendre l'API de manière à pouvoir déclarer mon intention de créer une ressource, autrement dit un CRD, ou Custom Resource Definition. L’intérêt pour les développeurs réside dans le fait de pouvoir gérer toutes les dépendances de son application à travers un seul système. En regroupant toutes ces configurations dans un ou plusieurs fichiers YAML, la gestion de l'application devient plus simple. On parle dans ce cas de Kubernetes Resource Model, ou KRM.
Comment j'ai appris à ne plus m'en faire et à aimer Kubernetes
Kubernetes a la réputation d’être complexe. En réalité, cela dépend de ce que l’on cherche à faire. Si l’on souhaite simplement déployer des applications, ce sera relativement simple. Il existe de multiples solutions open source, telles que Helm, qui met à disposition des cartes de navigation (“Helm Charts”) permettant de définir, d’installer et de mettre à jour des applications Kubernetes.
Cependant, la complexité augmente lorsqu’il s’agit de cas d’utilisation plus avancés, tels que la gestion de clusters, ce qui nécessite une connaissance assez approfondie des paramètres et fonctionnalités de la plateforme. Certains gèrent leurs propres clusters en exploitant l'infrastructure des fournisseurs de cloud, tandis que d’autres optent pour les services entièrement managés. GKE Autopilot, propose une expérience simplifiée et automatisée de Google Kubernetes Engine (GKE), dont la configuration des nœuds, du scaling, et de la sécurité entre autres.
La communauté Kubernetes a commencé à développer des solutions pour faciliter l’utilisation de Kubernetes, tels que Knative, qui agit comme une couche d'abstraction. L’utilisation de WebAssembly (WASM) offre également des possibilités intéressantes en termes d’isolation et de portabilité des applications. WASM peut constituer un pas vers la fin du “vendor lock-in” en permettant de déployer des applications sur différentes plateformes sans trop dépendre d'un fournisseur spécifique.
Il existe de nombreuses ressources autour du sujet. Le Kubernetes Podcast from Google propose chaque semaine des actualités et des entretiens avec la communauté Kubernetes, tandis que la chaîne YouTube ContainerBytes aborde en détail GKE et la conteneurisation.
Le programme Google Cloud Innovators offre également aux développeurs l’opportunité de développer leurs compétences et de rentrer en contact avec d’autres professionnels et experts Google. Pour toute question, n’hésitez pas à nous contacter.