ทำความรู้จัก Argo CD CLI และ Web UI สำหรับจัดการ Deployment

บทนำ

Argo CD มีสองวิธีหลักในการจัดการ Deployment คือ CLI (Command Line Interface) และ Web UI ซึ่งแต่ละวิธีมีข้อดีและข้อเสียที่แตกต่างกัน บทความนี้จะอธิบายวิธีการใช้งาน Argo CD CLI และ Web UI พร้อมกับตัวอย่างคำสั่งและเมื่อควรใช้แต่ละวิธี

Argo CD CLI คืออะไร

Argo CD CLI เป็นเครื่องมือบรรทัดคำสั่งที่ให้คุณสามารถจัดการ Argo CD ได้จากเทอร์มินัล โดยสามารถทำการ Automation และ Integration กับ CI/CD Pipeline อื่น ๆ ได้อย่างง่ายดาย

การติดตั้ง Argo CD CLI

บน macOS

brew install argocd

บน Linux

curl -sSL -o argocd https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64
chmod +x argocd
sudo mv argocd /usr/local/bin/

บน Windows

choco install argocd-cli

การเข้าสู่ระบบ (Login) ด้วย CLI

คำสั่ง Login พื้นฐาน

argocd login <ARGOCD_SERVER> --username <USERNAME>

ตัวอย่าง

argocd login argocd.example.com --username admin

หลังจากนั้นระบบจะขอให้คุณป้อน Password

Login ด้วย Token

argocd login <ARGOCD_SERVER> --auth-token <TOKEN>

Login โดยไม่ต้องตรวจสอบ SSL

argocd login <ARGOCD_SERVER> --insecure --username <USERNAME>

คำสั่ง Argo CD CLI หลัก

1. Application Management

สร้าง Application ใหม่

argocd app create <APP_NAME> \
  --repo <GIT_REPO_URL> \
  --path <PATH_IN_REPO> \
  --dest-server <KUBERNETES_SERVER> \
  --dest-namespace <NAMESPACE>

ตัวอย่าง:

argocd app create my-app \
  --repo https://github.com/example/repo.git \
  --path ./manifests \
  --dest-server https://kubernetes.default.svc \
  --dest-namespace default

ดูรายชื่อ Application ทั้งหมด

argocd app list

ดูรายละเอียด Application

argocd app get <APP_NAME>

ตัวอย่าง:

argocd app get my-app

ลบ Application

argocd app delete <APP_NAME>

หรือลบแบบ Force (ไม่รอ Cascading Delete):

argocd app delete <APP_NAME> --cascade=false

2. Synchronization

ทำการ Sync Application ด้วยตัวเอง

argocd app sync <APP_NAME>

ตัวอย่าง:

argocd app sync my-app

Sync แบบมี Timeout

argocd app sync <APP_NAME> --timeout 5m

Sync แบบ Dry Run (ดูเฉพาะการเปลี่ยนแปลง)

argocd app sync <APP_NAME> --dry-run

Sync ด้วยการสร้างใหม่ทั้งหมด

argocd app sync <APP_NAME> --replace

3. Repository Management

เพิ่ม Git Repository ใหม่

argocd repo add <REPO_URL> \
  --username <USERNAME> \
  --password <PASSWORD>

ตัวอย่าง:

argocd repo add https://github.com/example/repo.git \
  --username myuser \
  --password mypassword

เพิ่ม Repository แบบใช้ SSH Key

argocd repo add [email protected]:example/repo.git \
  --ssh-private-key-path ~/.ssh/id_rsa

ดูรายชื่อ Repository ทั้งหมด

argocd repo list

ลบ Repository

argocd repo remove <REPO_URL>

4. Cluster Management

เพิ่ม Cluster ใหม่

argocd cluster add <CONTEXT_NAME>

ตัวอย่าง:

argocd cluster add minikube

ดูรายชื่อ Cluster ทั้งหมด

argocd cluster list

ลบ Cluster

argocd cluster remove <CLUSTER_SERVER_URL>

Argo CD Web UI

การเข้าถึง Web UI

สามารถเข้าถึง Web UI ได้โดยการ Port Forward:

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

แล้วเข้าไปที่ https://localhost:8080 และป้อน Username และ Password

Dashboard

Dashboard ของ Argo CD Web UI จะแสดง:

  • รายชื่อ Application ทั้งหมด
  • สถานะ Sync ของแต่ละ Application
  • สถานะของ Cluster ที่เชื่อมต่อ
  • Recent Sync Activity

Application View

เมื่อคลิกเข้าไปที่ Application ตัวใดตัวหนึ่ง คุณจะเห็น:

  • Application Details – ข้อมูลทั่วไปของ Application
  • Resource Tree – โครงสร้างของ Resources ทั้งหมด
  • Diff View – ความแตกต่างระหว่าง Git และ Cluster
  • Logs – Logs ของ Container ต่าง ๆ
  • Sync Status – สถานะของการ Sync ล่าสุด

การ Sync ผ่าน Web UI

  1. เข้าไปที่ Application ที่ต้องการ Sync
  2. คลิก “Sync” Button
  3. เลือก Sync Strategy (Automated หรือ Manual)
  4. คลิก “Synchronize”
  5. ดูสถานะการ Sync ในหน้า Application

Diff View

Diff View จะแสดงความแตกต่างระหว่าง Git Manifest กับสิ่งที่ Deploy อยู่ใน Cluster ในรูปแบบ Side-by-Side Comparison

Logs View

Logs View จะแสดง Logs จากทุก Container ของ Application ที่คุณสามารถ Filter และ Search ได้

CLI vs Web UI – เมื่อใช้แต่ละอัน

ควรใช้ CLI เมื่อ

  • ต้องการ Automate การจัดการ Argo CD ใน Scripts
  • ต้องการ Integrate กับ CI/CD Pipeline
  • ต้องการ Batch Operation บนหลาย Applications
  • ต้องการการทำงาน Remote บน Server ที่ไม่มี GUI
  • ต้องการความเร็วในการทำงาน
  • ต้องการสร้าง Custom Scripts

ควรใช้ Web UI เมื่อ

  • ต้องการดูสถานะของ Application อย่างสดชื่น
  • ต้องการ Visualize Resource Tree
  • ต้องการดู Diff ระหว่าง Git และ Cluster แบบ Interactive
  • ต้องการดู Logs ของ Container อย่างสะดวก
  • ต้องการให้ Users ที่ไม่เข้าใจ CLI ใช้งาน Argo CD
  • ต้องการการ Sync ด้วยสายตา (Visual Confirmation)

ตัวอย่างการใช้งาน

ตัวอย่างที่ 1: สร้างและจัดการ Application

# สร้าง Application
argocd app create demo-app \
  --repo https://github.com/example/demo.git \
  --path ./k8s \
  --dest-server https://kubernetes.default.svc \
  --dest-namespace default

# ดูรายละเอียด
argocd app get demo-app

# ทำการ Sync
argocd app sync demo-app

# ดูสถานะ
argocd app get demo-app

ตัวอย่างที่ 2: Automation ใน CI/CD Pipeline

#!/bin/bash
# Script สำหรับ GitLab CI/CD

argocd login $ARGOCD_SERVER --auth-token $ARGOCD_TOKEN
argocd app create $APP_NAME \
  --repo $GIT_REPO \
  --path ./manifests \
  --dest-server https://kubernetes.default.svc \
  --dest-namespace production

argocd app sync $APP_NAME --timeout 5m

การใช้งาน Argo CD กับ ผู้ให้บริการโฮสติ้ง Cloud VPS

หากคุณ Deploy Argo CD บน ผู้ให้บริการโฮสติ้ง Cloud VPS ของเรา คุณจะได้รับ:

  • ความเสถียรของ Infrastructure ที่สูง
  • Network Bandwidth ที่เพียงพอสำหรับ GitOps Workflow
  • Computational Resources ที่สามารถ Scale ได้ตามความต้องการ
  • Data Center ที่มีระบบความปลอดภัยขั้นสูง
  • Support จากทีม ผู้ให้บริการโฮสติ้ง ที่มีความเชี่ยวชาญ

นอกจากนี้ ผู้ให้บริการโฮสติ้ง Cloud Hosting ยังสามารถใช้สำหรับเก็บ Git Repository ของคุณได้อย่างปลอดภัยและมีความเสถียรสูง

บทสรุป

Argo CD CLI และ Web UI ล้วนแต่เป็นเครื่องมือที่มีประสิทธิภาพในการจัดการ Deployment โดยแต่ละอันมีจุดแข็งของตัวเอง CLI เหมาะสำหรับ Automation และ Scripting ขณะที่ Web UI เหมาะสำหรับการ Visualization และการจัดการโดยตรง การรู้วิธีใช้ทั้งสองวิธี จะทำให้คุณสามารถจัดการ Argo CD ได้อย่างมีประสิทธิภาพและยืดหยุ่นที่สุด