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

Ingress

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

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

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

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

App ၁၀ ခု run နေတဲ့ cluster မှာ Service LoadBalancer type ၁၀ ခု create လုပ်ရင် cloud load balancer ၁၀ လုံး (cost ၁၀ ဆ) ဖန်တီးရမှာပါ — မကုန်ကျမလိုချင်ပါဘူး။ Ingress က load balancer တစ်ခုတည်းပဲ ဖန်တီးပြီး, domain (`api.example.com`, `app.example.com`) ဒါမှမဟုတ် path (`/api`, `/app`) ပေါ်မူတည်ပြီး correct Service ဆီကို route လုပ်ပေးပါတယ် — 'ဟိုတယ် front desk' လိုမျိုးပါ, guest တစ်ယောက်ချင်းကို ဘယ်အခန်းသွားရမလဲ ညွှန်ပြပေးသလိုပါပဲ။ Ingress ကို အလုပ်လုပ်ဖို့ Ingress Controller (nginx-ingress, Traefik ကဲ့သို့) cluster ထဲ install ထားရပါမယ်.

လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်

Ingress rule ထဲမှာ `api.example.com` → `api-service`, `app.example.com` → `frontend-service` ဆိုပြီး route ချထားနိုင်ပါတယ် — TLS/HTTPS certificate ကိုလည်း Ingress level မှာ centralize ထားနိုင်ပါတယ် (Service တစ်ခုချင်းစီမှာ cert ထားစရာမလို)။ Local minikube မှာ Ingress Controller ကို `minikube addons enable ingress` နဲ့ enable လုပ်ရပါမယ်.

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

yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: app-ingress
spec:
  rules:
    - host: app.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: web-service
                port:
                  number: 80
    - host: api.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: api-service
                port:
                  number: 8080
You should see
$ kubectl get ingress app-ingress
NAME           CLASS   HOSTS                             ADDRESS       PORTS
app-ingress    nginx   app.example.com,api.example.com  192.168.1.5   80

၅ မိနစ် စမ်းကြည့်

`minikube addons enable ingress` ကို run ပြီး, အထက်က Ingress rule ကို (host ကို local testing domain ပြောင်းပြီး) apply လုပ်ကြည့်ပါ။

သတိလေးတစ်ချက်

Ingress class (nginx, traefik, စသည်) အမျိုးမျိုးရဲ့ annotation syntax က မတူညီပါ — documentation ကို သင့် Ingress Controller အလိုက် သေချာ ဖတ်ပါ။

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

  • Ingress Controller ကို install မလုပ်ဘဲ Ingress resource ကိုပဲ create လုပ်ခြင်း — Ingress resource က 'instruction' ပဲ, Controller မရှိရင် ဘာမှ မဖြစ်ပါ
  • path/host rule ကို ရှုပ်ထွေးအောင် ရေးပြီး traffic ကို wrong Service ဆီ route ဖြစ်သွားခြင်း

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

`minikube addons enable ingress` ကို run ပြီး, အထက်က Ingress rule ကို (host ကို local testing domain ပြောင်းပြီး) apply လုပ်ကြည့်ပါ။

You'll know it worked when: $ kubectl get ingress app-ingress NAME CLASS HOSTS ADDRESS PORTS app-ingress nginx app.example.com,api.example.com 192.168.1.5 80

Ingress | Thuta Learning