Boxcutter - or what we learnt about managing objects with Server-Side-Apply in K8
summary
Server-side-apply is presented as a field-level ownership model that lets multiple actors patch only the keys they care about while the API merges and tracks owners; conflicts are handled by force takeovers, yielding fields, or shared ownership to avoid deletions. Practical needs include ordering (create Namespaces and wait for CRD established before CRs), checking observedGeneration in status to ensure controllers actually acted, and guarding against two controllers thrashing the API. A small library, boxcutter, encapsulates these patterns and uses controller-runtime’s SSA support.
AI-written summary · about
chapters (7)
- 0:00Server-Side Apply intro
- 4:41Field ownership conflicts solved
- 12:12Stubborn controllers handling
- 16:01Status reporting importance
- 23:07Operation ordering in K8s
- 27:08Boxcutter introduction
- 28:30Q&A
related talks
28mDeep Dive Into API Machinery
35mKubectl Apply 2019: Defense Against the Dark Arts
28mControllers: Lambda Functions for Extending your Infrastructure
27mDemystifying Why the World Is Built on Kubernetes: Learning To Leverage Bespoke CRDs and Controllers
31mIt's all about reconciliation - anatomy of a kubernetes controller
25mDesign Patterns for Extendable, Scalable K8s Extensions
46mOperators Live in the Past: Designing Reliable Kubernetes Controllers
16mKustomize Your Operator
