The future of configurability in Kubernetes with Common Expression Language (CEL)
2025-03-30 , The Waterloo

Support for Common Expression Language (CEL) is a popular feature in Kubernetes which is being added to new areas of the project each release. CEL makes configuring existing features like validations for CRDs easier and efficient than how it was done before. CEL is very powerful and expressible with how we can use it and because of this, it is quickly becoming a standard in Kubernetes. This talk goes into the details of Kubernetes Enhancement Proposal #4595 - Adding CEL support for CRD additionalPrinterColumns.

Currently CRD additionalPrinterColumns only lets you use JSONPath to configure how to print data when fetching custom resources with kubectl get. When dealing with more complex data such as lists or arrays, JSONPath becomes very difficult to work with. Adding support for CEL would let users configure expressions to print more complex data and do conditional operations on the data.

This talk goes into the details of how CEL works, how CRD additionalPrinterColumns work and how we added CEL support for it.


Common Expression Language is one of the key new features making Kubernetes more configurable as we step into its second decade. If you survey the past couple of release cycles, many of them have had at least one KEP in relation to adding support for CEL in a new area in the project. For example v1.32 has some work done related to adding CEL support for the DRA APIs (https://github.com/kubernetes/kubernetes/pull/128101).

With CEL being introduced across the project, it is important for both contributors and end users. Attendees who are cluster administrators will have good takeaways on how CEL is impacting how we use existing features such as CRDs and admission control, now that CEL is available as an alternative to webhooks for both validating (https://github.com/kubernetes/enhancements/issues/3488) and mutating admission (https://github.com/kubernetes/enhancements/issues/3962).

From the perspective of contributors, this talk would be a good example of how they can contribute to SIG API Machinery and how they can get started with reading and learning the code for core API Machinery areas like CustomResourceDefinitions. This talk would also give attendees an idea of where the Kubernetes project is heading towards in its second decade in terms of configurability.