Ce face kubectl diff
Comanda kubectl diff îți arată exact ce s-ar modifica în cluster dacă ai rula kubectl apply cu aceleași argumente. Trimite un server-side dry-run către API server, deci include în comparație și valorile implicite completate de Kubernetes sau de mutating webhooks.
Codul de ieșire este gândit pentru scripturi și pipeline-uri CI/CD: returnează 0 dacă nu există nicio diferență, 1 dacă există diferențe și >1 dacă a apărut o eroare.
Opțiuni și argumente
| Opțiune / Parametru | Descriere |
|---|---|
-f, --filename=CALE |
Fișierul sau directorul comparat cu starea live din cluster. |
-k, --kustomize=DIR |
Compară rezultatul unui director Kustomize. |
--server-side |
Calculează diferența folosind regulile Server-Side Apply. |
--prune -l SELECTOR |
Include în diff și obiectele care ar fi șterse de apply --prune. |
Exemple
Exemplul 1: Verificarea modificărilor înainte de deploy
Vedem că imaginea și numărul de replici urmează să se schimbe.
kubectl diff -f k8s/deployment.yaml
Ieșire în terminal
diff -u -N /tmp/LIVE-1842/apps.v1.Deployment.shop.api /tmp/MERGED-9301/apps.v1.Deployment.shop.api
--- /tmp/LIVE-1842/apps.v1.Deployment.shop.api
+++ /tmp/MERGED-9301/apps.v1.Deployment.shop.api
@@ -6,7 +6,7 @@
name: api
namespace: shop
spec:
- replicas: 2
+ replicas: 4
selector:
matchLabels:
app: api
@@ -18,7 +18,7 @@
spec:
containers:
- - image: ghcr.io/exemplu/api:1.4.1
+ - image: ghcr.io/exemplu/api:1.4.2
name: api
Greșeli frecvente
- În scripturi Bash cu
set -e,kubectl diffoprește scriptul când găsește diferențe deoarece returnează codul1; tratează explicit codul de ieșire. - Secretele apar în clar (în Base64) în output-ul de diff; ai grijă când îl afișezi în loguri publice de CI.
Comenzi înrudite
kubectl apply: Creează sau actualizează declarativ resurse din fișiere YAML/JSON ori directoare Kustomize.kubectl edit: Deschide definiția YAML a unei resurse din cluster în editorul de text și aplică modificările la salvare.kubectl rollout: Monitorizează lansarea unei versiuni noi, revine la o revizie anterioară (undo) sau repornește treptat pod-urile.