BM: Baca dalam Bahasa Melayu
World K7: Self-Driving · Boss challenge
Hands off
You will learn: to run Kedai Kancil from Git alone, then catch and undo a manual edit.
Checked with Kubernetes 1.37 on 31 Oct 2026
The problem
Lunch rush, Saturday. Kedai Kancil now runs on GitOps. Boss mission: keep your hands off the cluster. Git does the driving. You need more trays. Where do you ask?
Pick one answer.
Try it
Room 1: change one line in Git. Ask for 5 trays, then watch the cluster follow.
Change one line in Git and commit. Watch the cluster follow.
Git (the order board)
apps/kedai-kancil/deployment.yaml
Show the whole file
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
Commits
c7c258eAdd shopin the cluster
Cluster · namespace shop
Sync: SyncedHealth: Healthy
Deployment shop: 3/3 ready · image 1.4.0
syncPolicy:
automated:
selfHeal: trueShow the Argo CD Application
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: kedai-kancil
namespace: argocd
spec:
project: default
source:
repoURL: "https://github.com/kedai-kancil/gitops.git"
path: apps/kedai-kancil
targetRevision: main
destination:
server: "https://kubernetes.default.svc"
namespace: shop
syncPolicy:
automated:
selfHeal: true
Hint
Press + twice, then Commit to Git.Try it
Room 2: Argo CD keeps the order the same as Git. The Deployment keeps the trays. A tray falls. Watch the inner loop fix it.
Want 5, see 5. A tray is deleted: see 4, make 1 more.
Want 5. See 5. All good.
dev-workerOpen- shop·4j5fz
- shop·k7hl8
- shop·zdbvc
dev-worker2Open- shop·8slqz
- shop·vblr4
Hint
Tap a tray’s delete button.Try it
Room 3: ship version 1.5.0, the GitOps way.
Change one line in Git and commit. Watch the cluster follow.
Git (the order board)
apps/kedai-kancil/deployment.yaml
Show the whole file
apiVersion: apps/v1
kind: Deployment
metadata:
name: shop
namespace: shop
spec:
replicas: 5
selector:
matchLabels:
app: shop
template:
metadata:
labels:
app: shop
spec:
containers:
- name: web
image: ghcr.io/kedai-kancil/shop:1.4.0
Commits
c7c258eAdd shopin the cluster
Cluster · namespace shop
Sync: SyncedHealth: Healthy
Deployment shop: 5/5 ready · image 1.4.0
syncPolicy:
automated:
selfHeal: trueShow the Argo CD Application
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: kedai-kancil
namespace: argocd
spec:
project: default
source:
repoURL: "https://github.com/kedai-kancil/gitops.git"
path: apps/kedai-kancil
targetRevision: main
destination:
server: "https://kubernetes.default.svc"
namespace: shop
syncPolicy:
automated:
selfHeal: true
Hint
Pick shop:1.5.0 in the image list, then commit.Try it
Room 4: a teammate’s commit broke the sync. Read the real error. Fix the file in Git.
Fix the manifest, then press Apply.
Try it
Room 5: self-heal is off on this app. Someone scales it by hand. Catch the drift and undo it.
Change the cluster by hand. Then get that change undone.
Git (the order board)
apps/kedai-kancil/deployment.yaml
Show the whole file
apiVersion: apps/v1
kind: Deployment
metadata:
name: shop
namespace: shop
spec:
replicas: 5
selector:
matchLabels:
app: shop
template:
metadata:
labels:
app: shop
spec:
containers:
- name: web
image: ghcr.io/kedai-kancil/shop:1.5.0
Commits
c7c258eAdd shopin the cluster
Cluster · namespace shop
Sync: SyncedHealth: Healthy
Deployment shop: 5/5 ready · image 1.5.0
syncPolicy:
automated:
selfHeal: falseShow the Argo CD Application
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: kedai-kancil
namespace: argocd
spec:
project: default
source:
repoURL: "https://github.com/kedai-kancil/gitops.git"
path: apps/kedai-kancil
targetRevision: main
destination:
server: "https://kubernetes.default.svc"
namespace: shop
syncPolicy:
automated:
selfHeal: false
Hint
Press the kubectl button, then Sync now. Or turn self-heal on.Check
Last check. Swipe: true or not quite?
Swipe right for good, left for needs work. Or use the buttons.
Every change today is a commit you can read and revert.
You did it!
You can now run a cluster from Git alone, hands off.
Bahasa Melayu
Waktu puncak, hari Sabtu. Kedai Kancil kini berjalan dengan GitOps. Misi boss: jangan sentuh kluster. Git yang memandu. Anda perlukan lebih banyak dulang. Di mana anda minta?
Bilik 1: tukar satu baris dalam Git. Minta 5 dulang, kemudian perhati kluster ikut.
Bilik 2: Argo CD pastikan pesanan sama dengan Git. Deployment pula jaga dulang. Satu dulang jatuh. Perhati gelung dalam membaikinya.
Bilik 3: hantar versi 1.5.0, cara GitOps.
Bilik 4: commit rakan sepasukan rosakkan sync. Baca ralat sebenar. Baiki fail itu dalam Git.
Bilik 5: self-heal dimatikan pada aplikasi ini. Seseorang scale secara manual. Tangkap drift itu dan undurkannya.
Semakan terakhir. Leret: betul atau belum tepat?
Kini anda boleh jalankan kluster dari Git sahaja, lepas tangan.
You finished this before. Practice is always welcome!
Official docs: Argo CD: automated sync and self-heal · OpenGitOps: the four principles · Kubernetes: controllers
You've learned for 25 minutes. A short break helps your brain.
Sprint done! Great focus. Stretch for a minute?