Kubernetes, le Graal en matière de PaaS
Plate-forme d'orchestration de conteneurs, Kubernetes a parfois été vu comme la solution miracle pour le déploiement d'applications. Nouvelle génération d'IaaS, elle offre de nombreuses fonctionnalités comme Open Stack, mais également de gestion des charges de travail qui se trouvent plus haut dans la pile conceptuelle (Deployments, StatefulSets, Jobs, Services, Ingress.).
Une preuve supplémentaire de la puissance de Kubernetes. Mais est-ce la seule réponse pour les développeurs d'applications ?
Dans quelle mesure faire confiance en sa capacité à effectuer un déploiement correct, sans entraîner de problème pour les autres locataires du cluster Kubernetes ? Comment être sûr d'avoir configuré les autorisations RBAC de sorte que les développeurs disposent uniquement des niveaux d'accès à l'API dont ils ont besoin ? Est-ce vraiment un bon outil pour un développeur ?
Certains développeurs ont suffisamment de curiosité et d'expérience en administration système pour se frayer un chemin dans la complexité de Kubernetes. On les appelle généralement ingénieurs DevOps, et bien qu'ils soient de plus en plus nombreux, ils restent encore aujourd'hui l'exception et non la règle. La majorité des développeurs d'applications qui se préoccupent principalement de la livraison de leur application vont d'abord demander l'aide d'un expert de Kubernetes et passer du temps à appréhender et comprendre la plate-forme.
Si certains vont abandonner en cours de route, d'autres commettront des erreurs dangereuses lors du déploiement d'applications avec YAML en copiant le code à partir de StackOverflow ou de la documentation Kubernetes.
Il est nécessaire d'isoler le développeur de la complexité de la plate-forme de conteneurs. Si l'on ne souhaite pas que ce travail incombe à d'autres, il est primordial de fournir une plate-forme d'applications qui réponde aux besoins du développeur.
Cette plate-forme devra prendre en charge plusieurs locataires et en toute sécurité, permettre aux développeurs de travailler ensemble sur leurs applications et de fournir des services de données au développeur plutôt que de le contraindre à les créer lui-même.
Mais elle devra également permettre aux équipes de publier les nouvelles versions rapidement, utiliser du code plutôt que des packages ou des images de conteneur et enfin permettre aux opérateurs de la plate-forme de contrôler les politiques et la sécurité.
Aujourd'hui de nombreux outils destinés aux développeurs sont conçus pour répondre à ces exigences. La plupart sont basés sur un modèle CI/CD, un événement de validation ou de marquage dans Git déclenche un pipeline qui crée de nouvelles images et Kubernetes YAML (peut-être un diagramme Helm) qui est ensuite déployé sur Kubernetes.
Comme Kubernetes, cette approche peut être extrêmement puissante et peut être personnalisée à l'infini. Également, la mise en place du pipeline nécessite une certaine expertise. Les nouveaux outils facilitent de plus en plus les choses. L'écart est donc réduit, mais il reste quelques inconvénients à prendre en compte.
Lire aussi : Heroku devient un PaaS Kubernetes
Chaque application a besoin de son propre pipeline, et le workflow est souvent lié à un outil de contrôle de source particulier, généralement Git. Ces inconvénients ne sont pas rédhibitoires pour tout le monde, mais il existe une autre approche qui les évite, et se satisfait aux exigences définies pour une plate-forme d'applications adaptée aux développeurs et conçue dès le départ pour répondre aux besoins des développeurs.
L'écart entre développeur et CaaS n'est pas si différent de celui qui existe entre développeur et IaaS. Le PaaS (Platform-as-a-Service) a été inventé pour combler cet écart, et Cloud Foundry a été créé pour permettre aux utilisateurs d'utiliser leurs propres plates-formes. Les sociétés à la pointe du secteur informatique ont en quelque sorte oublié le PaaS en raison de l'enthousiasme suscité par Kubernetes et Docker avant cela.
Fait intéressant, Docker a ses racines dans le PaaS. Lors de la PyCon 2013, dotCloud (qui était le nom de l'entreprise à l'époque) a présenté une technologie qu'elle avait créée pour servir de backend pour son service de plate-forme d'applications. Les plates-formes de conteneurs ne susciteraient pas autant d'intérêt d'aujourd'hui si l'entreprise n'avait pas inventé des outils permettant de fournir un service multi-tenant aux développeurs fournissant du code dans le cloud.
Cloud Foundry a parfois mauvaise réputation auprès des utilisateurs de Kubernetes, probablement parce qu'il n'a pas été créé récemment et qu'il se traine donc une étiquette un peu ringarde. Pourtant, cela fait des années qu'il a son propre orchestrateur de conteneurs, Diego, et il y a eu beaucoup de crainte à quitter cette base de code.
La création de cet orchestrateur de conteneurs a nécessité un travail considérable et les développeurs impliqués dans le projet étaient initialement réticents à l'idée d'essayer un orchestrateur créé par quelqu'un d'autre.
Il a fallu quelques années, mais Kubernetes a su balayer d'un revers de la main cette objection. Non seulement il était extrêmement populaire, mais chaque nouvelle version était plus stable et plus puissante que la précédente.
Kubernetes est désormais incontournable. Il y a un an et demi, lors du sommet Cloud Foundry à Bâle, un petit groupe de travail a été chargé de déterminer comment utiliser Kubernetes pour exécuter Cloud Foundry Application Runtime (CFAR). Le résultat de ce travail, les projets Eirini et Quarks, ont suscité un véritable enthousiasme au sein de la communauté. Et Cloud Foundry de se mettre en quête du Graal d'orchestrateurs de conteneurs.
En remplaçant Diego par Eirini et BOSH Director par Quarks (un opérateur Kubernetes pour CFAR), on obtient exactement ce dont Kubernetes a besoin actuellement. Soit une interface de développement simple, sûre, robuste et flexible pour Kubernetes qui fonctionne de façon native sur Kubernetes. Les développeurs bénéficient de l'expérience Cloud Foundry et les opérateurs bénéficient de l'expérience Kubernetes. Un bon moyen de séparer les responsabilités et d'aborder la transformation logicielle et informatique.
La transformation de l'informatique a été incroyablement rapide au cours des dernières années, en particulier avec l'essor de Docker et des conteneurs en général. Alors que les entreprises commencent à moderniser leur infrastructure informatique et à restructurer leurs applications existantes (ou à en créer de nouvelles) à l'aide de microservices, elles se tournent vers les conteneurs, qui sont beaucoup plus petits et plus portables que les machines virtuelles.
À mesure que l'utilisation des conteneurs augmente, les entreprises ont besoin d'un moyen de les gérer. Kubernetes est de loin le logiciel le plus populaire pour orchestrer l'utilisation des conteneurs.
Sur le même thème
Voir tous les articles Cloud