2 minutes pour comprendre... CEL
Sommaire
En 2 minutes #
CEL ou Common Expression Language est un langage open source dédié à l’évaluation d’expressions. Il a été concu pour être performant (pouvant évaluer en quelques nanosecondes ou microsecondes) et intégré de manière indépendante dans des applications. CEL est donc communément utilisé pour les décisions booléennes mais il est également possible de construire des objets JSON avec. Par exemple, dans l’IAM de Google Cloud, un sous-ensemble de CEL est utilisé pour écrire des conditions permettant de prendre des décisions d’autorisation.
Vis à vis de Kubernetes, CEL est directement utilisé dans l’API afin de déclarer et évaluer des règles de validation, d’autorisation et d’autres contraintes ou conditions. Voici quelques exemples concrets d’utilisation dans Kubernetes :
- empêcher un utilisateur de dépasser un certain nombre de réplicas dans ses manifestes Kubernetes
- interdire l’utilisation de certaines valeurs dans les SecurityContext ou bien les Capabilities
- autoriser une modification sur des ressources en fonction d’un
selector - contraindre les noms de ressources
- forcer l’utilisation des probes
En savoir plus… #
Fonctionnalités principales #
- définir des règles d’authentification via les Authentication Configuration
- définir des règles d’autorisation via les Authorization Configuration
- ajouter des contraintes lors de création, mise à jour ou suppression des ressources via les Validating Admission Policy
- effectuer des validation de types ou ajouter des conditions dans les CRDs
Voici un exemple permettant avec CEL d’interdire l’utilisation de tag latest dans les Deployments :
| |
Ecosystème #
Il existe de nombreuses solutions incluant CEL dans leurs fonctionnalités, en voici quelques-unes :
Bon à savoir #
- CEL est un standard natif de Kubernetes pour la validation de ressources (GA depuis la version 1.30)
- dans le contexte de Kubernetes, nativement, les ValidatingAdmissionPolicy ne peuvent pas prendre en compte les valeurs présentes dans d’autres ressources précédement appliqués