diff & dry-run
kubectl diff -f zeigt den Diff gegen den
Live-Stand vor dem Apply (Exit-Code 1 = Unterschiede,
CI-tauglich).
--dry-run=client sendet keinen Schreib-Request
und fängt deshalb keine falschen Feldnamen ab, die
Feldvalidierung macht der API-Server;
--dry-run=server lässt
Admission-Webhooks + Defaulting am API-Server
laufen, ohne zu persistieren, das ehrlichere Preflight.
Server-Side Apply, Field-Ownership
apply --server-side (GA seit v1.22) merged am
API-Server. Ownership steht pro Feld in
metadata.managedFields, jeder Writer trägt
einen --field-manager.
Conflict (HTTP 409), wenn ein anderer Manager
das Feld hält: --force-conflicts
übernimmt die Ownership, bewusst einsetzen, das
entzieht dem anderen Controller das Feld.
kubectl diff -f deploy.yaml kubectl apply -f deploy.yaml --dry-run=server kubectl apply --server-side --field-manager=ci -f deploy.yaml kubectl apply --server-side --force-conflicts -f deploy.yaml kubectl get deploy web --show-managed-fields -o yaml