Thuta Learning
ရှာဖွေရန်
ProjectsDevOpsintermediate

Project — Full-Stack App Deploy

စိတ်လျှော့ပါ။ ဒီခန်းကို စာအုပ်လိုမဟုတ်ဘဲ စကားပြောသလိုပဲ၊ နားလည်လွယ်အောင် ရှင်းပါမယ်။

ဒီခန်းပြီးရင် ဘာတတ်သွားမလဲ

  • Project — Full-Stack App Deploy ကို ကြောက်စရာမလိုအောင် နားလည်မယ်
  • ကိုယ်တိုင် kubectl command/YAML ကို run ကြည့်တတ်မယ်
  • Real project ထဲမှာ ဒီ concept ကို ချက်ချင်း အသုံးချတတ်မယ်

ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်

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 ကနေ ဝင်ကြည့်နိုင်အောင် ချထားပါ.

အတူတူ ကြည့်မယ်

bash
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-app
You should see
NAME                          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 ဖြစ်ဖို့ အချိန်အနည်းငယ် ယူတတ်ပါတယ်။

ဒီနေရာမှာ လူအများမှားတတ်တယ်

  • Layer အားလုံးကို တစ်ပြိုင်နက် apply လုပ်ခြင်း — database Ready မဖြစ်သေးခင် backend က connection error ဖြစ်နိုင်ပါတယ် (retry logic မထားထားရင်)
  • Service name ကို deployment/backend code ထဲမှာ hardcode IP နဲ့ ရေးထားခြင်း — Service DNS name ကို သုံးသင့်ပါတယ်

အခု ကိုယ်တိုင် စမ်းကြည့်

Three-tier app (frontend/backend/db) တစ်ခုလုံးကို ကိုယ်တိုင် YAML ရေးပြီး deploy ကြည့်ပါ — frontend ကနေ backend ကို ချိတ်ဆက်နိုင်တာအထိ verify လုပ်ကြည့်ပါ (`kubectl logs` နဲ့ connection error ရှိမရှိ စစ်)။

You'll know it worked when: NAME READY STATUS AGE db-7c9b8-x1a2b 1/1 Running 2m backend-6f5d9-c3d4e 1/1 Running 1m frontend-8a1e2-f5g6h 1/1 Running 30s

Project — Full-Stack App Deploy | Thuta Learning