DevConf.CZ 2025

Boxcutter - or what we learnt about managing objects with Server-Side-Apply in Kubernetes
2025-06-14 , E112 (capacity 156)

Writing controllers that manage other objects is hard. Especially if you want to do:
- server-side-apply (all the cool kids are talking about it)
- proper status reporting through generic object probes
- phased ordering of managed objects (Namespaces need to exist before resources can be put into them; CustomResourceDefinitions (CRDs) must be registered before being used; ...)
- Conflict detection (did someone else change an object under my control?)

We'd like to present to you, what we learnt about managing objects using server-side-apply while extracting some functionality of our service-delivery operator "package-operator" into the separate library "boxcutter".


Experience level

Intermediate - attendees should be familiar with the subject

See also:

Josh is a Site Reliability Engineer working on Layered Products on top of Managed OpenShift.
He is currently leading a Site Reliability Engineering team that supports multiple managed offerings and spends a lot of time mentoring his teammates in go and kubernetes operator development.

Nico is a Principal Software Engineer working on Red Hat OpenShift.
Before joining the OpenShift engineering team, he led an Site Reliability Engineering team supporting the launch of multiple managed offerings, like Red Hat Advanced Cluster Security and Red Hat OpenShift AI, among others.

Prior to joining Red Hat at the start of 2021, Nico did work in consulting around Kubernetes Operator development and lead a product team working on a multi-cluster solution for Kubernetes.
He is living in southern Bavaria, Germany close to the Alps.