ทำไมต้องใช้ Helm Chart ในการติดตั้ง Argo CD
การติดตั้ง Argo CD แบบดั้งเดิมโดยใช้ kubectl apply กับไฟล์ YAML อาจดูเรียบง่าย แต่เมื่อเข้าสู่สภาพแวดล้อม Production ที่ซับซ้อน การใช้ Helm Chart จะช่วยให้คุณจัดการได้อย่างมีประสิทธิภาพมากขึ้น Helm Chart ช่วยให้คุณ:
- จัดการการตั้งค่าแบบ Declarative ผ่านไฟล์ values.yaml
- ควบคุมเวอร์ชันการติดตั้งและจัดการการอัปเดตได้ง่าย
- ใช้ Template ที่สามารถนำมาใช้ซ้ำได้ในสภาพแวดล้อมต่าง ๆ
- ปรับเพิ่มหรือลดทรัพยากรได้ตามความต้องการ
- รองรับการ Rollback หากมีปัญหา
สำหรับผู้ใช้งาน Cloud VPS ของ ผู้ให้บริการโฮสติ้ง ที่ต้องการสภาพแวดล้อม Production ที่เสถียรและปลอดภัย การใช้ Helm Chart ถือเป็นแนวทางปฏิบัติที่ดีที่สุด
ข้อกำหนดเบื้องต้น
ก่อนเริ่มติดตั้ง Argo CD ด้วย Helm Chart บน Cloud VPS ให้เตรียมสิ่งต่อไปนี้:
- Kubernetes Cluster เวอร์ชัน 1.24 ขึ้นไป (รันบน Cloud VPS ของ ผู้ให้บริการโฮสติ้ง)
- kubectl ติดตั้งแล้วและตั้งค่า kubeconfig เชื่อมต่อกับ Cluster
- Helm 3 ติดตั้งแล้ว (เวอร์ชัน 3.10 ขึ้นไป)
- สิทธิ์ RBAC ในการสร้าง Namespace และ Resources
หากยังไม่ได้ติดตั้ง Helm สามารถติดตั้งได้จากเว็บไซต์อย่างเป็นทางการ หรือใช้ Package Manager เช่น apt, brew หรือ choco
ขั้นตอนที่ 1: เพิ่ม Argo CD Helm Repository
เริ่มต้นด้วยการเพิ่ม Helm Repository อย่างเป็นทางการของ Argo CD:
helm repo add argo https://argoproj.github.io/argo-helm
helm repo update
ตรวจสอบว่า Repository ถูกเพิ่มเรียบร้อย:
helm repo list
ค้นหาเวอร์ชันล่าสุดของ Argo CD Chart:
helm search repo argo/argo-cd --versions | head -5
ขั้นตอนที่ 2: สร้าง values.yaml สำหรับปรับแต่ง
สร้าง Namespace สำหรับ Argo CD:
kubectl create namespace argocd
จากนั้นสร้างไฟล์ values.yaml เพื่อปรับแต่งการติดตั้ง ตัวอย่างสำหรับ Production:
global:
domain: argocd.yourdomain.com
server:
replicas: 2
resources:
limits:
cpu: 500m
memory: 256Mi
requests:
cpu: 250m
memory: 128Mi
ingress:
enabled: true
ingressClassName: nginx
hosts:
- argocd.yourdomain.com
tls:
- secretName: argocd-tls
hosts:
- argocd.yourdomain.com
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
nginx.ingress.kubernetes.io/ssl-redirect: "true"
repoServer:
replicas: 2
resources:
limits:
cpu: 1000m
memory: 512Mi
requests:
cpu: 500m
memory: 256Mi
controller:
resources:
limits:
cpu: 1000m
memory: 1024Mi
requests:
cpu: 500m
memory: 512Mi
redis:
resources:
limits:
cpu: 250m
memory: 256Mi
requests:
cpu: 100m
memory: 128Mi
applicationSet:
enabled: true
notifications:
enabled: true
การตั้งค่าสำคัญในไฟล์นี้:
- High Availability: มี 2 Replica สำหรับ Server และ Repo Server
- Resource Limits: กำหนดทรัพยากร CPU และ Memory ป้องกันการใช้เกิน
- Ingress: ใช้ NGINX Ingress Controller พร้อม SSL/TLS
- ApplicationSet: เปิดใช้งานเพื่อจัดการหลาย Application
ขั้นตอนที่ 3: ติดตั้งด้วย helm install
เมื่อเตรียม values.yaml เรียบร้อยแล้ว ติดตั้ง Argo CD ด้วยคำสั่ง:
helm install argocd argo/argo-cd \
--namespace argocd \
--values values.yaml \
--version 7.0.0
รอสักครู่ให้ Pods ทั้งหมดเริ่มทำงาน ตรวจสอบสถานะ:
kubectl get pods -n argocd
รอจนกว่าทุก Pod จะแสดงสถานะ Running
ขั้นตอนที่ 4: ปรับแต่ง Configuration เพิ่มเติม
ตั้งค่า High Availability (HA) Mode
สำหรับระบบ Production บน Cloud VPS ของ ผู้ให้บริการโฮสติ้ง ที่ต้องการความเสถียรสูง เพิ่มการตั้งค่า HA:
controller:
replicas: 2
env:
- name: ARGOCD_CONTROLLER_REPLICAS
value: "2"
server:
replicas: 2
repoServer:
replicas: 2
กำหนด Pod Disruption Budget
server:
pdb:
enabled: true
minAvailable: 1
repoServer:
pdb:
enabled: true
minAvailable: 1
ตั้งค่า Resource Limits ตามขนาด VPS
สำหรับ Cloud VPS ขนาดเล็ก (2-4 CPU, 4-8 GB RAM) ใช้ค่า Default ได้ สำหรับ VPS ขนาดใหญ่ สามารถเพิ่ม Resource ให้ Controller:
controller:
resources:
limits:
cpu: 2000m
memory: 2048Mi
requests:
cpu: 1000m
memory: 1024Mi
ขั้นตอนที่ 5: ตรวจสอบการติดตั้ง
ตรวจสอบ Resources ทั้งหมด:
kubectl get all -n argocd
ตรวจสอบ Helm Release:
helm list -n argocd
ดึงรหัสผ่าน Admin:
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo
ทดสอบเข้าถึงด้วย Port Forwarding:
kubectl port-forward -n argocd svc/argocd-server 8080:443
เปิดเบราว์เซอร์ไปที่ https://localhost:8080 และ Login ด้วย Username admin
ขั้นตอนที่ 6: อัปเกรด Argo CD ด้วย Helm
หนึ่งในข้อดีสำคัญของ Helm คือการอัปเกรดที่ง่ายดาย:
อัปเดต Repository:
helm repo update
ค้นหาเวอร์ชันใหม่:
helm search repo argo/argo-cd --versions | head -5
อัปเกรดไปเวอร์ชันใหม่:
helm upgrade argocd argo/argo-cd \
--namespace argocd \
--values values.yaml \
--version 7.1.0
หากมีปัญหา Rollback กลับเวอร์ชันก่อนหน้า:
helm rollback argocd -n argocd
ดูประวัติ Revision:
helm history argocd -n argocd
ข้อดีของการติดตั้ง Argo CD ด้วย Helm Chart
1. การจัดการเวอร์ชันที่ชัดเจน
Helm เก็บข้อมูลการติดตั้งในรูปแบบ Release ทำให้สามารถติดตามเวอร์ชัน อัปเดต และ Rollback ได้ง่าย
2. การทำซ้ำที่สอดคล้องกัน
ด้วยไฟล์ values.yaml เดียว สามารถติดตั้ง Argo CD ในสภาพแวดล้อมต่าง ๆ (Dev, Staging, Production) ได้อย่างสอดคล้องกัน
3. รองรับ GitOps
เก็บไฟล์ values.yaml ใน Git Repository และใช้ Argo CD เองจัดการการติดตั้ง ซึ่งเป็นหลักการแท้จริงของ GitOps
4. ขยายขนาดได้ง่าย
เมื่อ Cluster เติบโต การตั้งค่า HA Mode ผ่าน Helm ช่วยให้ Argo CD รองรับ Workload ที่ใหญ่ขึ้นได้อย่างราบรื่น
สรุป
การติดตั้ง Argo CD ด้วย Helm Chart บน Cloud VPS ของ ผู้ให้บริการโฮสติ้ง เป็นวิธีที่เป็นมืออาชีพและง่ายต่อการจัดการ ด้วยความสามารถในการปรับแต่งผ่าน values.yaml การอัปเกรดที่ง่าย และการ Rollback ที่รวดเร็ว Helm เป็นเครื่องมือที่ขาดไม่ได้สำหรับการจัดการ Argo CD ในระดับ Production
เริ่มต้นใช้งาน Argo CD บน Cloud VPS ของ ผู้ให้บริการโฮสติ้ง ได้ที่ de.co.th/cloud-vps พร้อมทีม Support ที่พร้อมช่วยเหลือทุกขั้นตอน

