Helm — ตัวจัดการแพ็กเกจของ K8s
ติดตั้งชุด manifest ทั้งก้อนแบบปรับค่าได้ ด้วยคำสั่งเดียว
พื้นฐานที่ควรรู้: ในสมาร์ทโฟนเรามี App Store หรือ Play Store ให้กดโหลดแอปพร้อมใช้ได้เลย K8s เองก็มีแอปพื้นฐานหลายตัวที่คนทั้งโลกต้องใช้ (เช่น ระบบเก็บ Log, ระบบ Monitoring) แทนที่เราจะมานั่งเขียนไฟล์ YAML เองทีละบรรทัด เราสามารถใช้เครื่องมือจัดการแพ็กเกจมาช่วยติดตั้งได้
Helm เหมือนแอปสโตร์ + ตัวติดตั้งของ K8s · แทนที่จะ apply ไฟล์ YAML ทีละสิบไฟล์เอง ก็ helm install ทั้งชุด (เช่นติดตั้ง Prometheus, nginx, PostgreSQL) แล้วปรับค่าผ่านไฟล์เดียว
Chart คือแพ็กเกจ Helm (รวม template ของ manifest + ค่า default) · เราปรับแต่งด้วย values.yaml โดยไม่ต้องแก้ template · ทำให้ deploy แอปเดียวกันหลาย environment ด้วยค่าต่างกันได้ง่าย
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install my-db bitnami/postgresql \
--set auth.database=myapp # ปรับค่าผ่าน --set หรือ -f values.yaml
helm upgrade my-db bitnami/postgresql -f values.yaml
helm rollback my-db 1 # ย้อนกลับ release เวอร์ชันก่อน
helm list # ดู release ที่ติดตั้งไว้helm status my-db
helm history my-db
helm rollback my-db <revision>สรุป Key Takeaways
- Helm = package manager ของ K8s · Chart = แพ็กเกจ, values.yaml = ค่าที่ปรับ
- จัดการหลาย manifest เป็น release เดียว: install/upgrade/rollback/uninstall
- ทางเลือก: Kustomize (overlay) — นิยมใช้คู่กัน
คำถามที่พบบ่อย
Helm แก้ปัญหาอะไรของ YAML ธรรมดา
สามเรื่อง: ทำซ้ำ (template + values แทน YAML ก๊อปแก้หลาย environment), แพ็คเกจ (ลงแอปซับซ้อนทั้งชุดด้วยคำสั่งเดียว), และจัดการ release (upgrade/rollback เป็นเวอร์ชัน) — คิดว่ามันคือ package manager ของ K8s แบบเดียวกับ apt/npm
helm install ของคนอื่นมา ควรตรวจอะไรก่อน
ดูว่า chart ทำอะไรจริงด้วย helm template แล้วอ่าน manifest ที่ generate ออกมา โดยเฉพาะสิทธิ์ RBAC ที่ขอ, resource ที่สร้าง, และค่า default ที่หลวม (เปิด service เป็น LoadBalancer, ไม่ตั้ง resource limit) — chart ดังๆ คุณภาพดีแต่ default ไม่ได้เหมาะกับทุกที่

