kubectl diff în Kubernetes (kubectl)

Compararea vizuală linie-cu-linie a modificărilor locale din fișierele YAML cu starea activă din cluster înainte de aplicare.

Sintaxă comandă
kubectl diff -f <manifest.yaml>

Rularea oarbă a comenzii `kubectl apply -f manifest.yaml` în clustere de producție reprezintă una dintre principalele cauze ale incidentelor majore de infrastructură: o mică eroare de tastare într-o variabilă de mediu sau schimbarea accidentală a unui număr de replici poate dărâma servicii critice.

Comanda kubectl diff funcționează precum comanda `git diff` sau `terraform plan`: trimite manifestul local către serverul API Kubernetes, care simulează aplicarea și returnează un diff colorat comparând starea curentă din etcd cu noua stare propusă.

Permite inginerilor DevOps și sistemelor automate de CI/CD să inspecteze exact ce resurse vor fi adăugate, modificate sau șterse, garantând că nicio schimbare neprevăzută nu ajunge în producție.

Sintaxă, opțiuni și concepte cheie

Opțiune / Concept Descriere practică
-f Fișierul sau directorul de manifeste ce urmează să fie comparat.
-k Compararea resurselor generate prin Kustomize.
Exit Code 0 vs 1 Returnează 0 dacă nu există diferențe și 1 dacă au fost detectate modificări (ideal pentru verificări automate în CI/CD).
Server-Side Dry Run Mecanismul prin care API serverul aplică regulile de validare și mutare fără a salva datele.

Exemple practice și cod

Exemplul 1: Inspectarea modificărilor pe un Deployment înainte de aplicare

Cum se previzualizează o schimbare de versiune de imagine.

$ kubectl diff -f deployment.yaml

diff -u -N /tmp/LIVE /tmp/MERGED
--- /tmp/LIVE   2026-10-24 14:10:00
+++ /tmp/MERGED 2026-10-24 14:10:05
@@ -20,7 +20,7 @@
       containers:
       - name: web-api
-        image: my-corp/api:v1.2.0
+        image: my-corp/api:v1.3.0
         resources:
           limits:
-            memory: 512Mi
+            memory: 1Gi

Rezultat & Impact

Vizualizare clară a creșterii memoriei și a schimbării de versiune înainte de execuția reală.

Greșeli frecvente și bune practici

  • Confundarea `kubectl diff` cu `kubectl apply –dry-run=client`; diff-ul interoghează starea vie a clusterului, în timp ce dry-run de client validează doar sintaxa locală.
  • Omiterea verificării drepturilor RBAC; comanda necesită permisiuni de citire (`get`, `list`) pe resursele inspectate.

Ghiduri și noțiuni înrudite