ติดตั้ง Argo CD บน Kubernetes Cluster บน Cloud VPS แบบ Step-by-Step

บทนำ

Argo CD เป็นเครื่องมือ Continuous Deployment (CD) ที่ใช้ GitOps Workflow สำหรับการจัดการและปรับใช้แอปพลิเคชันบน Kubernetes ได้อย่างมีประสิทธิภาพ ในบทความนี้เราจะสอนวิธีการติดตั้ง Argo CD บน Kubernetes Cluster ที่ทำงานบน Cloud VPS ของ ผู้ให้บริการโฮสติ้ง ทีละขั้นตอน เพื่อให้คุณมีระบบ GitOps ที่เสถียรและสามารถควบคุมได้ง่าย

ข้อกำหนดเบื้องต้น

ก่อนที่จะเริ่มติดตั้ง Argo CD คุณจำเป็นต้องมี:

  • Kubernetes Cluster – ติดตั้งบน Cloud VPS ของ ผู้ให้บริการโฮสติ้ง และพร้อมใช้งาน
  • kubectl – ติดตั้งในเครื่องของคุณและกำหนดค่า config file ให้สามารถเชื่อมต่อกับ Kubernetes Cluster ได้
  • Git Repository – สำหรับเก็บไฟล์ Manifest ของแอปพลิเคชันที่ต้องการปรับใช้
  • สิทธิ์เข้าถึง Cloud VPS – เพื่อจัดการทรัพยากร Kubernetes Cluster

หากคุณยังไม่มี Kubernetes Cluster บน Cloud VPS ของ ผู้ให้บริการโฮสติ้ง สามารถเลือกแพ็กเกจที่เหมาะสมได้ที่ https://de.co.th/cloud-vps

ขั้นตอนที่ 1: สร้าง Namespace สำหรับ Argo CD

ขั้นแรก เราต้องสร้าง Namespace ใหม่สำหรับ Argo CD เพื่อแยกทรัพยากรของ Argo CD ออกจากแอปพลิเคชันอื่นในคลัสเตอร์

kubectl create namespace argocd

ตรวจสอบว่า Namespace ถูกสร้างสำเร็จ:

kubectl get namespace argocd

ผลลัพธ์ควรแสดง Namespace argocd พร้อมสถานะ Active

ขั้นตอนที่ 2: ติดตั้ง Argo CD ด้วย kubectl apply

ติดตั้ง Argo CD โดยใช้ไฟล์ Manifest อย่างเป็นทางการจาก Argo CD Project:

kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

คำสั่งนี้จะดาวน์โหลดไฟล์ Manifest เวอร์ชันเสถียร (Stable) ของ Argo CD และติดตั้งทรัพยากรทั้งหมดใน Namespace argocd ประกอบด้วย Deployment, Service, ConfigMap และ RBAC ต่าง ๆ

กระบวนการติดตั้งอาจใช้เวลาสักครู่ โปรดรอจนกว่าคำสั่งจะทำงานเสร็จสิ้น

ขั้นตอนที่ 3: ตรวจสอบการติดตั้ง

หลังจากติดตั้ง Argo CD เราต้องตรวจสอบว่า Pods ทั้งหมดกำลังทำงานอย่างถูกต้อง:

kubectl get pods -n argocd

ผลลัพธ์ที่คาดหวังจะแสดง Pods ดังต่อไปนี้:

  • argocd-server – API Server และ UI ของ Argo CD
  • argocd-repo-server – สำหรับดึงข้อมูล Manifest จาก Git Repository
  • argocd-application-controller – ตัวควบคุม Application ของ Argo CD
  • argocd-redis – สำหรับเก็บข้อมูล Cache
  • argocd-dex-server – สำหรับการตรวจสอบสิทธิ์ (Authentication)
  • argocd-notifications-controller – สำหรับการแจ้งเตือน
  • argocd-applicationset-controller – สำหรับจัดการ ApplicationSet

รอจนกว่า Pods ทั้งหมดจะมีสถานะ Running หากพบ Pods ที่ค้าง ให้ตรวจสอบรายละเอียด:

kubectl describe pod -n argocd <pod-name>

ขั้นตอนที่ 4: เข้าถึง Argo CD Server

มีสองวิธีในการเข้าถึง Argo CD UI: ใช้ Port Forwarding หรือกำหนดค่า Ingress/LoadBalancer

วิธีที่ 1: ใช้ Port Forwarding (สำหรับทดสอบ)

วิธีที่ง่ายที่สุดคือใช้ Port Forwarding:

kubectl port-forward svc/argocd-server -n argocd 8080:443

จากนั้นเปิดเบราว์เซอร์ไปที่ https://localhost:8080 (ยอมรับคำเตือน SSL Certificate เพราะเป็น Self-signed Certificate)

วิธีที่ 2: กำหนดค่า LoadBalancer (สำหรับใช้งานจริง)

สำหรับ Production บน Cloud VPS ของ ผู้ให้บริการโฮสติ้ง ให้เปลี่ยน Service Type เป็น LoadBalancer:

kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'

ตรวจสอบ External IP:

kubectl get svc argocd-server -n argocd

ขั้นตอนที่ 5: ดึงรหัสผ่าน Admin เริ่มต้น

Argo CD สร้างรหัสผ่าน Admin เริ่มต้นโดยอัตโนมัติ ดึงรหัสผ่านด้วยคำสั่ง:

kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo

Username คือ admin และ Password คือค่าที่ได้จากคำสั่งด้านบน

ขั้นตอนที่ 6: เข้าสู่ระบบและเปลี่ยนรหัสผ่าน

เปิด Argo CD UI ในเบราว์เซอร์ ใช้ Username admin และรหัสผ่านที่ดึงมาจากขั้นตอนที่ 5

หลังจากเข้าสู่ระบบ ควรเปลี่ยนรหัสผ่านทันที ไปที่ Settings > Accounts แล้วคลิก Update Password

หลังจากเปลี่ยนรหัสผ่าน ให้ลบ Secret เดิมเพื่อความปลอดภัย:

kubectl delete secret argocd-initial-admin-secret -n argocd

ขั้นตอนที่ 7: ทดสอบด้วยการ Deploy แอปพลิเคชันตัวอย่าง

เพื่อตรวจสอบว่า Argo CD ทำงานถูกต้อง สร้างไฟล์ test-app.yaml:

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: test-app
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/argoproj/argocd-example-apps.git
    targetRevision: HEAD
    path: guestbook
  destination:
    server: https://kubernetes.default.svc
    namespace: default
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
    - CreateNamespace=true

Apply ไฟล์นี้:

kubectl apply -f test-app.yaml

ตรวจสอบสถานะ:

kubectl get application -n argocd

หากแสดงสถานะ Synced แสดงว่า Argo CD ทำงานถูกต้อง

การแก้ไขปัญหาที่พบบ่อย

Pods ไม่เริ่มทำงาน

หาก Pods ค้างอยู่ใน Pending State ให้ตรวจสอบ Resources ของ Cluster:

kubectl describe node
kubectl top nodes

Cloud VPS ของ ผู้ให้บริการโฮสติ้ง มี Resources ที่เพียงพอ แต่หากต้องการเพิ่ม สามารถอัปเกรด VPS ได้ที่ de.co.th/cloud-vps

ไม่สามารถเข้าถึง Argo CD UI

ตรวจสอบ Service:

kubectl get svc -n argocd

ตรวจสอบ Firewall ว่าเปิด Port ที่จำเป็น (443 หรือ Port ที่ตั้งค่าไว้)

Git Repository Sync ล้มเหลว

ตรวจสอบ Credentials:

kubectl get secret -n argocd -l argocd.argoproj.io/secret-type=repository

ดู Log ของ Repo Server:

kubectl logs -n argocd -l app.kubernetes.io/name=argocd-repo-server

คำแนะนำสำหรับ Production บน Cloud VPS

  • ตั้งค่า SSL/TLS Ingress – เพื่อความปลอดภัยในการสื่อสาร
  • เปิด Audit Logs – เพื่อติดตามการเปลี่ยนแปลงทั้งหมด
  • ตั้งค่า RBAC – เพื่อจำกัดสิทธิ์การเข้าถึง
  • สร้าง Backup – สำรองข้อมูล Argo CD Configuration
  • ตั้งค่า Monitoring – ใช้ Prometheus และ Grafana ตรวจสอบสถานะ
  • อัปเดตเป็นประจำ – เพื่อรับ Security Patches ล่าสุด

สรุป

การติดตั้ง Argo CD บน Kubernetes Cluster บน Cloud VPS ของ ผู้ให้บริการโฮสติ้ง เป็นกระบวนการที่ไม่ซับซ้อน เพียงทำตาม 7 ขั้นตอนที่อธิบายในบทความนี้ คุณก็จะมีระบบ GitOps ที่พร้อมใช้งาน

Cloud VPS ของ ผู้ให้บริการโฮสติ้ง ที่ de.co.th/cloud-vps มี Infrastructure ที่น่าเชื่อถือ เหมาะสำหรับการรัน Kubernetes และ Argo CD สำหรับการจัดการ Deployment ของแอปพลิเคชันในทุกขนาดธุรกิจ