EN: Read in English
Dunia K7: Pandu Sendiri
Self-heal dan drift
Anda akan belajar: apa itu drift, dan cara self-heal atau Sync kembalikan versi Git.
Teks BM belum disemak oleh penutur asli.
Disemak dengan Kubernetes 1.37 pada 31 Okt 2026
Masalahnya
kind-dev namespace defaultGit minta 3 dulang. Kluster jalankan 1. Lantai gerai tak lagi sama dengan papan pesanan. Jurang ini dipanggil drift (hanyut) (drift): Kluster tak lagi sama dengan Git, selalunya selepas perubahan secara manual. (hanyut).
Cuba
Self-heal dihidupkan. Buat perubahan manual dengan butang kubectl. Kemudian perhati.
Tukar kluster secara manual. Kemudian pastikan perubahan itu dibatalkan.
Git (papan pesanan)
apps/shop/deployment.yaml
Tunjuk seluruh fail
apiVersion: apps/v1
kind: Deployment
metadata:
name: shop
namespace: shop
spec:
replicas: 3
selector:
matchLabels:
app: shop
template:
metadata:
labels:
app: shop
spec:
containers:
- name: web
image: ghcr.io/kedai-kancil/shop:1.4.0
Commit
f89a8e9Add shopdalam kluster
Kluster · namespace shop
Sync: SyncedHealth: Healthy
Deployment shop: 3/3 sedia · image 1.4.0
syncPolicy:
automated:
selfHeal: trueTunjuk Application Argo CD
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: shop
namespace: argocd
spec:
project: default
source:
repoURL: "https://github.com/kedai-kancil/gitops.git"
path: apps/shop
targetRevision: main
destination:
server: "https://kubernetes.default.svc"
namespace: shop
syncPolicy:
automated:
selfHeal: true
Petunjuk
Tekan butang kubectl scale di bawah “Perubahan manual”.Teka
Sekarang self-heal (pulih sendiri) (self-heal): Argo CD kembalikan versi Git dengan sendiri bila seseorang ubah kluster secara manual. (pulih sendiri) dimatikan. Seseorang scale kepada 1 secara manual. Apa jadi?
Pilih satu jawapan.
Cuba
Self-heal dimatikan. Buat perubahan manual, kemudian undurkannya sendiri.
Tukar kluster secara manual. Kemudian pastikan perubahan itu dibatalkan.
Git (papan pesanan)
apps/shop/deployment.yaml
Tunjuk seluruh fail
apiVersion: apps/v1
kind: Deployment
metadata:
name: shop
namespace: shop
spec:
replicas: 3
selector:
matchLabels:
app: shop
template:
metadata:
labels:
app: shop
spec:
containers:
- name: web
image: ghcr.io/kedai-kancil/shop:1.4.0
Commit
f89a8e9Add shopdalam kluster
Kluster · namespace shop
Sync: SyncedHealth: Healthy
Deployment shop: 3/3 sedia · image 1.4.0
syncPolicy:
automated:
selfHeal: falseTunjuk Application Argo CD
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: shop
namespace: argocd
spec:
project: default
source:
repoURL: "https://github.com/kedai-kancil/gitops.git"
path: apps/shop
targetRevision: main
destination:
server: "https://kubernetes.default.svc"
namespace: shop
syncPolicy:
automated:
selfHeal: false
Petunjuk
Selepas perubahan manual, tekan Sync sekarang.Cuba
Kluster ini tiada pembantu GitOps. Jadilah pembantu itu. Cari drift, kemudian kembalikan versi dalam fail.
kind-dev namespace defaultMahu 1. Nampak 1. Semua okey.
dev-control-planeBukaPengurusTiada dulang di sini.
dev-workerBuka- shop·grxfr
dev-worker2BukaTiada dulang di sini.
Petunjuk
kubectl get deployment shop tunjukkannya. kubectl apply -f shop.yaml baikinya.Semak
Leret: tabiat baik atau tidak?
Leret ke kanan untuk bagus, ke kiri untuk perlu baiki. Atau guna butang.
Baiki production secara manual pukul 2 pagi, dan tak commit langsung.
Anda berjaya!
Kini anda boleh kesan drift dan kembalikan versi Git.
Nak tahu lebih (pilihan)
Secara lalai, self-heal tunggu 5 saat sebelum sync semula. Sesetengah drift memang sengaja: autoscaler ubah replicas. Beritahu Argo CD untuk abaikan medan itu dengan ignoreDifferences. Latihan sebenar (pilihan): pada kluster kind, kubectl scale satu Deployment, kemudian kubectl apply -f failnya. Lihat bilangannya kembali.
English
Git asks for 3 trays. The cluster runs 1. The floor no longer matches the order board. This gap is called drift.
Self-heal is on. Make a manual change with the kubectl button. Then watch.
Now self-heal is off. Someone scales to 1 by hand. What happens?
Self-heal is off. Make the manual change, then undo it yourself.
This cluster has no GitOps helper. Be the helper. Find the drift, then put the file’s version back.
kubectl get deployment shop shows it. kubectl apply -f shop.yaml fixes it.Swipe: good habit or not?
You can now spot drift and get Git’s version back.
Anda dah siapkan ini. Latihan lagi pun bagus!
Dokumentasi rasmi: Argo CD: automated sync and self-heal · Argo CD: diffing (ignore differences) · kubectl apply
Anda dah belajar 25 minit. Rehat sekejap bantu otak anda.
Pecutan selesai! Fokus yang hebat. Regangkan badan seminit?