Kustomize v5.8.1: Regression Fix and What Changed
Kustomize v5.8.0 introduced the propagation namePrefix inherit function, but it shipped with a regression. The bug caused the parent namespace’s namePrefix to propagate incorrectly into child customization YAML files. Issue 6044 tracks the problem. v5.8.1 fixes it. The team also stopped the propagation function from overwriting name suffixes, which broke some users who relied on the previous behavior. Issue 6058 covers an option to restore that old behavior. Helm chart namespace was not being set on all resources, also now resolved.
kuberc: Opt-In Defaults Without Breaking Pipelines
kubectl is as old as Kubernetes itself, so behavioral changes break pipelines and scripts that teams have built over years. kuberc is the beta config file that lets users opt into new defaults without touching those pipelines. Current options include interactive delete, server-side apply as default, and a credential plugin allow-list. Maciej demonstrated that his own kuberc setting for interactive delete caused E2E tests to hang, which is exactly why backwards compatibility stays strict. Arda and Peter recently added a kuberc command so users no longer need to hand-edit the file.
kubectl 1.36: WebSockets, Multiple Wait Conditions, and Stable Features
SPDY was deprecated almost a decade ago. Modern clients dropped support, breaking kubectl exec and kubectl port-forward for those users. kubectl now uses WebSockets instead, in beta as of 1.36 and planned for GA in 1.37. No configuration change is required as long as both kubectl and the cluster are on newer versions. Multiple-condition support in kubectl wait also landed in 1.36. Conditions run in sequence; create always runs first and delete always runs last regardless of the order specified. Two additional feature gates were also promoted to stable.
What the Team Wants to Build Next
Four items are on the near-term list. First, a new command to replace kubectl apply that uses server-side apply by default. The team went through apply synonyms and landed briefly on “actuate” before shelving the name. Second, multiple kubeconfig file support, which is currently hard to manage across many clusters and contexts. Third, switching kubectl’s JSONPath from the current partial implementation to something like CEL that includes a length function. Fourth, CRI-native copy to replace the current implementation that depends on a tar binary in the container and has accumulated CVEs.
Q&A
How should the team collect anonymous CLI usage data without leaking secrets? Flags already marked as containing secrets are not logged, only flag names are sent, not values. ▶ 15:45
Is prune in kubectl apply going to be fixed? Two contributors, including the original author Justin, committed at the maintainer summit to resume the work. ▶ 17:15
Why build a new server-side apply command instead of just adding a kuberc option? A dedicated command is easier to advertise and removes the need to ask users to set a flag; the team also wants to redesign the full apply experience after ten years of feedback. ▶ 19:19
Can a community plugin for multiple kubeconfig support be upstreamed? Yes. A plugin is the recommended path to prove demand before merging into kubectl, since plugins can ship weekly versus three releases per year for kubectl itself. ▶ 21:49
Are there plans to support arbitrary sub-resources in kubectl beyond scale and status? No, because the Kubernetes API itself only supports status and scale for CRDs unless you run a custom API server. ▶ 26:03
Notable Quotes
cube RC was our attempt to kind of introduce default behavior. So, the cube control is as old as a Kubernetes project itself, right? you build a Kubernetes and then you need to build a CLI tool to work with the the Kubernetes. Eddie Zaneski · ▶ 11:40
a plugin is a great way to like try and get functionality you might want in Qtle and then prove that people actually want to use it and then we can upstream that kind of code into Cube Kettle. Maciej Szulik · ▶ 22:22
Also, it’s like one of the the simplest and the fastest way to for you to iterate on a particular new command because if something lands in a cubecado, the release cycle is like three times a year. If you’re a plug-in, you basically can release every week. Maciej Szulik · ▶ 22:36
we literally went through the synonyms of the apply. Uh, also apply is like not quite um what it does and we’re trying to figure out like Eddie Zaneski · ▶ 20:35
Key Takeaways
- Kustomize v5.8.1 fixes a namePrefix propagation regression introduced in v5.8.0; upgrade now and see issue 6044.
- kubectl wait gained multiple-condition support in 1.36; create runs first and delete runs last regardless of order.
- kuberc is in beta and lets you opt into interactive delete and server-side apply without touching existing pipeline scripts.
- kubectl exec and port-forward now use WebSockets instead of SPDY; GA is targeted for Kubernetes 1.37.
- A server-side apply replacement command is in design; the team is actively seeking a name and UX feedback.
About the Speaker(s)
Eddie Zaneski is Field CTO at Defense Unicorns, based in Denver, CO. He works on the Kubernetes project and spends time outside of it climbing rocks.
Maciej Szulik is a Staff Platform Engineer at Defense Unicorns with more than 20 years of software experience. He works on Kubernetes challenges by day and Python side projects by night.
Yugo Kobayashi is a Software Engineer at SB Intuitions focused on internal platforms and is a maintainer of kubernetes-sigs/kustomize.
Marly Salazar is a Staff Software Engineer at Integral Ad Science with a background in legacy and on-premises systems. She has contributed to the Kubernetes project for a year and a half, primarily on kubectl.
Arda Guclu is a Principal Software Engineer at Red Hat, a regular Kubernetes contributor, and one of the maintainers of kubectl.