ติดตั้ง Argo CD ด้วย Helm Chart บน Cloud VPS อย่างมืออาชีพ

ทำไมต้องใช้ 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 ที่พร้อมช่วยเหลือทุกขั้นตอน