Health Check ใน Argo CD คืออะไร
Health Check ใน Argo CD คือกระบวนการตรวจสอบสถานะของ Application และ Kubernetes Resources โดยอัตโนมัติ ระบบนี้จะประเมินว่า Application แต่ละตัวทำงานได้อย่างไร และสามารถรับคำขอจากผู้ใช้ได้หรือไม่ เมื่อ Argo CD รู้ว่า Application มีปัญหา มันจะแจ้งเตือนและช่วยให้คุณสามารถจัดการปัญหาได้อย่างรวดเร็ว
ด้วยการใช้ Health Check อย่างถูกต้อง คุณจะสามารถ:
- ตรวจจับปัญหา Application ในช่วงเริ่มต้นก่อนที่จะส่งผลกระทบต่อผู้ใช้งาน
- ปรับปรุงความพร้อมใช้งาน (Availability) ของ Application
- ลดเวลา Downtime ของระบบ
- จัดการและควบคุม Deployment ได้ดีขึ้น
ประเภทของ Health Status ใน Argo CD
Argo CD ใช้ 6 ประเภทของ Health Status ในการอธิบายสถานะของ Application:
1. Healthy
Application ทำงานได้ปกติและพร้อมใช้งาน ทั้ง Pods ทั้งหมดได้รับการ Deploy อย่างสำเร็จและตอบสนองต่อ Readiness Probes
2. Progressing
Application อยู่ในขั้นตอนการ Deploy หรือการอัปเดต ยังคงรอให้ Pods ทั้งหมดพร้อมใช้งาน
3. Degraded
Application มีปัญหาและไม่สามารถทำงานได้อย่างเต็มที่ อาจเกิดจากการสร้าง Pods ล้มเหลว หรือ Health Check ล้มเหลว
4. Suspended
Application ถูกหยุดชั่วคราว โดยทั่วไปเกิดจากการตั้งค่าอย่างชัดเจน เช่น การ scale replicas เป็น 0
5. Missing
Argo CD ไม่พบ Application ในคลัสเตอร์ Kubernetes อาจถูกลบไปแล้ว
6. Unknown
Argo CD ไม่สามารถตรวจสอบสถานะของ Application ได้ อาจเกิดจากปัญหาการเชื่อมต่อ
Built-in Health Check สำหรับ Kubernetes Resources
Argo CD มี Health Check ที่สร้างไว้แล้ว (Built-in) สำหรับ Kubernetes Resources ต่างๆ ดังนี้:
- Deployment: ตรวจสอบว่า Replicas ทั้งหมดพร้อมใช้งานแล้ว
- StatefulSet: ตรวจสอบ Replicas และ Persistent Volumes
- DaemonSet: ตรวจสอบว่า Pods ทั้งหมดบนโหนดต่างๆ ทำงานอยู่
- Service: ตรวจสอบว่ามี Endpoints ที่พร้อมใช้งาน
- Ingress: ตรวจสอบ Status และ Rules
- PersistentVolumeClaim (PVC): ตรวจสอบว่า PVC ถูก Bind แล้ว
- Pod: ตรวจสอบ Phase และ Conditions
- Job: ตรวจสอบว่า Job เสร็จสิ้นหรือล้มเหลว
วิธีดู Health Status ผ่าน Argo CD UI
การดู Health Status ผ่าน Argo CD UI นั้นง่ายมาก:
- เข้าสู่ Argo CD Dashboard
- เลือก Application ที่ต้องการตรวจสอบ
- ดู Health Status ในหน้า Application Details
- ไอคอนสีเขียว = Healthy, สีเหลือง = Progressing, สีแดง = Degraded
การดู Health Status ผ่าน CLI
คุณสามารถใช้คำสั่ง argocd CLI เพื่อตรวจสอบ Health Status:
# ดูรายละเอียด Application รวมถึง Health Status
argocd app get my-app
# ดูรายการ Applications ทั้งหมดพร้อม Health Status
argocd app list
# ดูสถานะ Resources แต่ละตัว
argocd app resources my-app
ตัวอย่าง YAML สำหรับ Health Check
นี่คือตัวอย่าง YAML สำหรับตั้งค่า Readiness Probe และ Liveness Probe ซึ่งเป็นพื้นฐานของ Health Check ใน Kubernetes:
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-app
namespace: production
spec:
replicas: 3
selector:
matchLabels:
app: web-app
template:
metadata:
labels:
app: web-app
spec:
containers:
- name: web-container
image: myapp:1.0
ports:
- containerPort: 8080
readinessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 10
periodSeconds: 5
timeoutSeconds: 3
failureThreshold: 2
livenessProbe:
httpGet:
path: /alive
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 3
failureThreshold: 3
การตั้งค่า Health Check Timeout
การตั้งค่า Timeout สำหรับ Health Check เป็นสิ่งสำคัญ เพราะค่าที่ไม่เหมาะสมอาจทำให้เกิด False Positive หรือตรวจจับปัญหาได้ช้า:
- initialDelaySeconds: เวลารอก่อนที่จะเริ่มตรวจสอบ (แนะนำ 10-30 วินาที)
- periodSeconds: ระยะเวลาระหว่างการตรวจสอบ (แนะนำ 5-10 วินาที)
- timeoutSeconds: ระยะเวลาสูงสุดที่รอคำตอบ (แนะนำ 2-3 วินาที)
- failureThreshold: จำนวนครั้งที่ล้มเหลวก่อนถือว่า Pod ไม่สมบูรณ์ (แนะนำ 2-3 ครั้ง)
Best Practices สำหรับ Health Check
ต่อไปนี้คือแนวทางปฏิบัติที่ดีที่สุดสำหรับ Health Check:
- ใช้ Readiness Probe: เพื่อบอก Kubernetes ว่า Application พร้อมรับ Traffic แล้ว
- ใช้ Liveness Probe: เพื่อตรวจจับ Application ที่ค้าง (Deadlock) และรีสตาร์ท Pod โดยอัตโนมัติ
- ตั้งค่า Timeout อย่างสมเหตุสมผล: ไม่สั้นเกินจนเกิด False Positive หรือยาวเกินจนตรวจจับปัญหาไม่ทัน
- สร้าง Health Endpoint: สร้าง /health หรือ /ready endpoint ในแอปพลิเคชันของคุณ
- ใช้ Startup Probe: สำหรับแอปพลิเคชันที่ใช้เวลา startup นาน
- ตรวจสอบ Logs: ตรวจสอบ Logs เมื่อ Health Check ล้มเหลวเพื่อหาสาเหตุ
- ทดสอบใน Staging: ทดสอบ Health Check ทั้งหมดในสภาพแวดล้อม staging ก่อน production
การใช้งาน Health Check กับ ผู้ให้บริการโฮสติ้ง Cloud VPS
เมื่อคุณใช้งาน Kubernetes บน ผู้ให้บริการโฮสติ้ง Cloud VPS คุณสามารถใช้ Health Check เพื่อให้แน่ใจว่าแอปพลิเคชันของคุณทำงานอย่างเสถียร บริการ Cloud VPS ของ ผู้ให้บริการโฮสติ้ง มีประสิทธิภาพสูงและเหมาะสำหรับการรัน Kubernetes Cluster
ด้วยการตั้งค่า Health Check อย่างถูกต้อง คุณจะสามารถ:
- ลด Downtime ของแอปพลิเคชัน
- ปรับปรุงประสิทธิภาพของระบบ
- จัดการ Resources ได้อย่างมีประสิทธิภาพ
- เพิ่มความมั่นใจในการ Deployment
สรุป
Health Check ใน Argo CD เป็นเครื่องมือสำคัญที่ช่วยให้คุณสามารถตรวจสอบสถานะของแอปพลิเคชันบน Kubernetes ได้โดยอัตโนมัติ ด้วยการตั้งค่า Readiness Probe และ Liveness Probe อย่างถูกต้อง และทำตามแนวทางปฏิบัติที่ดีที่สุด คุณจะมั่นใจได้ว่าแอปพลิเคชันของคุณทำงานได้อย่างเสถียรและมีประสิทธิภาพสูง หากคุณใช้ ผู้ให้บริการโฮสติ้ง Cloud VPS อยู่แล้ว คุณก็พร้อมที่จะใช้งาน Argo CD และ Health Check เพื่อให้ระบบของคุณทำงานได้ดีขึ้น

