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.