Introduction

Le système de permissions de Kubernetes, sans aucune surcouche, est puissant, mais reste basique. Kubernetes utilise un système d’authentification basé sur des comptes utilisateurs, présents dans la base de données du cluster Kubernetes lui-même (base etcd). Les autorisations d’un utilisateur une fois connecté se gèrent sous la forme d’autorisations explicites, de permissions. Kubernetes se base en effet sur un système de politiques d’autorisations RBAC (Role-Based Access Control). Tout utilisateur désirant effectuer quelque action sur une ressource doit y avoir été préalablement explicitement autorisé.

La problématique est que, comme dit, les utilisateurs et leurs permissions sont gérés directement au sein du cluster, stockés dans la base interne de Kubernetes. Cela est suffisant pour un usage personnel ou pour le cluster d’une PME, or dans le contexte d’un cluster dans une entreprise conséquente, ou simplement dans le cadre d’une organisation avec un SI développé, il n’est pas rare que ce système de gestion interne soit rapidement limité.

Que ce soit par Active Directory, openLDAP ou quelque autre système de gestion centralisée des accès, Kubernetes ne gère nativement aucune source externe pour la gestion des utilisateurs et accès. C’est pour répondre à cette problématique que Kubi a vu le jour.

 

Kubi, développé par le Crédit Agricole, est un outil permettant la connexion à un cluster Kubernetes via une source externe d’utilisateurs (LDAP). Ainsi, la gestion des utilisateurs et de leurs permissions peut être externalisée dans un outil spécialisé, comme un Active Directory.

Kubi est un projet open-source, disponible sur le GitHub de CA-GIP. Il s’agit donc d’un projet que n’importe qui ou quelle entreprise peut reprendre, étendre afin de répondre à ses besoins et déployer sur son cluster.

Fonctionnement

Kubi se divise en deux parties :

  • Une partie serveur, tournant dans le cluster et chargée de recevoir et répondre aux requêtes d’authentifications du client
  • Une partie client, en lignes de commandes, permettant de s’authentifier auprès d’un cluster et de générer et stocker le fichier de configuration kubectl nous permettra par la suite d’accéder à notre cluster

Kubi n’est donc pas une solution de remplacement à kubectl ou à l’API de Kubernetes, mais bien une solution qui vient se greffer par-dessus notre système de base afin de permettre l’authentification par source externe.

 

Conclusion

Si Kubernetes ne propose pas nativement l’authentification LDAP ou Active Directory, Kubi nous permet de l’ajouter à notre cluster rapidement et très facilement. Le projet s’installe et se configure en quelques minutes, et une vraie gestion des permissions du cluster via LDAP est un grand gain de gestion pour une entreprise, ne serait-ce que parce-que des dizaines de très bons outils existent pour la gestion LDAP / Active Directory.

Le projet est porté par une documentation très conséquente, autant pour la partie client que pour la mise en place de la partie serveur au sein du cluster. N’hésitez pas donc à aller faire un tour sur le dépôt https://github.com/ca-gip/kubi afin de vous faire votre propre idée.

Julien Pontillo