Surfaced by a real-kubectl E2E while reviewing #314. Pre-existing (not introduced by #314), so kept out of that PR.
Goal: kubectl apply --server-side and finalizer-gated delete should behave for the common typed kinds the way they already do for registry-backed kinds.
Today
- SSA field ownership (
managedFields, conflict/force, field-removal, Update entries) only runs via the registry path (registryPatch → serverSideApply). Typed handlers (ConfigMap, Secret, Service, Deployment) do a plain merge with no ownership.
- Finalizers are honored only on registry kinds + typed Namespace/Pod; typed ConfigMap/Secret/Service/Deployment are hard-deleted despite
metadata.finalizers.
kubectl apply --server-side of a new registry object returns 404 (create-on-apply not wired).
Ops
- Route typed handlers through
serverSideApply for the apply-patch content-type.
- Honor finalizers on typed ConfigMap/Secret/Service/Deployment delete.
- Wire apply-create so an apply to a missing object creates it instead of 404.
Surfaced by a real-kubectl E2E while reviewing #314. Pre-existing (not introduced by #314), so kept out of that PR.
Goal:
kubectl apply --server-sideand finalizer-gated delete should behave for the common typed kinds the way they already do for registry-backed kinds.Today
managedFields, conflict/force, field-removal, Update entries) only runs via the registry path (registryPatch→serverSideApply). Typed handlers (ConfigMap, Secret, Service, Deployment) do a plain merge with no ownership.metadata.finalizers.kubectl apply --server-sideof a new registry object returns 404 (create-on-apply not wired).Ops
serverSideApplyfor the apply-patch content-type.