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.
Priyanka Saggu is a Kubernetes Engineer at SUSE, contributing to Kubernetes via Release, ContribEx, Testing, and CLI SIGs.
She is the Emeritus Advisor for Kubernetes v1.31, Release Lead for v1.29, GitHub Admin, and Technical Lead for SIG Contributor Experience (SIG ContribEx).
She has also served as Release Lead Shadow (1.27, 1.26), Enhancement Lead (1.25), and part of the Release Team since 1.23.
Priyanka is also an Election Officer for the Kubernetes Steering Committee elections 2024.
Sreeram is a Senior Software Engineer at DigitalOcean and is an active contributor in the Kubernetes community. One of the recipients of the Kubernetes Contributor Awards in 2024, he has been contributing to Kubernetes from 2022. He was part of the Kubernetes release team from v1.29 to v1.32 and was the enhancements sub-team lead for the v1.31 release cycle. He also helps write the Last Week in Kubernetes Development newsletter and has made contributions as part of the special interest groups for kubelet and kube-apiserver. Read about all of Sreeram's contributions here in his blog.