ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်
Real-world app က layer သီးခြားစီ run ပါတယ် — frontend (static UI, nginx), backend (API server), database (data persist)။ Layer တစ်ခုစီကို Deployment + Service ချထားပေးပြီး, layer တွေအချင်းချင်း Service name (DNS) ကနေတစ်ဆင့် ဆက်သွယ်ပါတယ် — frontend က backend-service ကို ခေါ်, backend က db-service ကို ခေါ်ပါတယ်။ Database layer ကိုတော့ PVC ချိတ်ပေးထားရပါတယ် (data persist ဖို့), config/password ကို ConfigMap/Secret နဲ့ ခွဲထားရပါတယ်.
လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်
Namespace သီးသန့် (`three-tier-app`) create လုပ်ပြီး, database (PVC ချိတ်ထား) → backend (database-service ကို env variable ကနေ ချိတ်) → frontend (backend-service ကို API URL အနေနဲ့ ချိတ်) အစီအစဉ်နဲ့ တစ်ဆင့်ချင်း deploy ပါ — layer တစ်ခုချင်းစီ Ready ဖြစ်မှ နောက်တစ်ဆင့်ကို ဆက်သွားပါ။ Frontend ကို Service NodePort (ဒါမှမဟုတ် Ingress) နဲ့ browser ကနေ ဝင်ကြည့်နိုင်အောင် ချထားပါ.
အတူတူ ကြည့်မယ်
kubectl create namespace three-tier-app
# 1. Database (with PVC + Secret)
kubectl apply -f db-secret.yaml -n three-tier-app
kubectl apply -f db-pvc.yaml -n three-tier-app
kubectl apply -f db-deployment.yaml -n three-tier-app
kubectl apply -f db-service.yaml -n three-tier-app
# 2. Backend (connects to db-service)
kubectl apply -f backend-configmap.yaml -n three-tier-app
kubectl apply -f backend-deployment.yaml -n three-tier-app
kubectl apply -f backend-service.yaml -n three-tier-app
# 3. Frontend (connects to backend-service)
kubectl apply -f frontend-deployment.yaml -n three-tier-app
kubectl apply -f frontend-service.yaml -n three-tier-app
# Verify all three layers
kubectl get pods -n three-tier-appNAME READY STATUS AGE
db-7c9b8-x1a2b 1/1 Running 2m
backend-6f5d9-c3d4e 1/1 Running 1m
frontend-8a1e2-f5g6h 1/1 Running 30s၅ မိနစ် စမ်းကြည့်
Three-tier app (frontend/backend/db) တစ်ခုလုံးကို ကိုယ်တိုင် YAML ရေးပြီး deploy ကြည့်ပါ — frontend ကနေ backend ကို ချိတ်ဆက်နိုင်တာအထိ verify လုပ်ကြည့်ပါ (`kubectl logs` နဲ့ connection error ရှိမရှိ စစ်)။
သတိလေးတစ်ချက်
Backend က database ကို connect မရသေးရင် error ထုတ်ပြီး crash-loop ဖြစ်မယ့်အစား, retry-with-backoff logic ထည့်ထားသင့်ပါတယ် — database layer Ready ဖြစ်ဖို့ အချိန်အနည်းငယ် ယူတတ်ပါတယ်။