ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်
Config value (ဥပမာ `API_URL=https://staging.example.com`) ကို Docker image ထဲမှာ hardcode လုပ်ထားရင်, staging ကနေ production ပြောင်းတဲ့အခါ image ကို ပြန် build ရမယ် — ဒါက slow ပြီး error-prone ပါတယ်။ ConfigMap ကို သုံးရင် config value ကို Kubernetes object တစ်ခုအဖြစ် သီးသန့်ထားပြီး, Pod က run time မှာ environment variable (ဒါမှမဟုတ် file) အနေနဲ့ inject လုပ်ယူနိုင်ပါတယ် — image ကိုယ်တိုင် မပြောင်းရဘဲ ConfigMap တစ်ခုတည်း ပြောင်းလိုက်ရင် app behavior ပြောင်းနိုင်ပါတယ်။
လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်
ConfigMap ကို YAML နဲ့ define လုပ်ပြီး Pod spec ထဲမှာ `envFrom` (ConfigMap ရဲ့ key-value အားလုံးကို env variable အဖြစ်) ဒါမှမဟုတ် `volumeMounts` (config file အဖြစ်) နဲ့ ချိတ်ဆက်ယူနိုင်ပါတယ်။ Staging environment နဲ့ production environment အတွက် ConfigMap နှစ်ခု ခွဲထားပြီး, Deployment YAML ကို မပြောင်းဘဲ ConfigMap ကိုပဲ ပြောင်းရုံနဲ့ environment ကူးပြောင်းနိုင်ပါတယ်။
အတူတူ ကြည့်မယ်
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
API_URL: "https://api.example.com"
LOG_LEVEL: "info"
---
apiVersion: v1
kind: Pod
metadata:
name: app-with-config
spec:
containers:
- name: app
image: my-app:latest
envFrom:
- configMapRef:
name: app-config$ kubectl exec app-with-config -- printenv API_URL
https://api.example.com၅ မိနစ် စမ်းကြည့်
ConfigMap တစ်ခု create လုပ်ပြီး Pod ထဲမှာ envFrom နဲ့ ချိတ်ဆက်ကြည့်ပါ — `kubectl exec <pod> -- printenv` နဲ့ value ဝင်လာကြောင်း စစ်ကြည့်ပါ။
သတိလေးတစ်ချက်
ConfigMap ထဲက data ကို ဘယ်သူမဆို `kubectl get configmap -o yaml` နဲ့ ဖတ်နိုင်ပါတယ် — sensitive data တစ်စုံတစ်ခုမှ ConfigMap ထဲ မထည့်ပါနှင့်။