
ที่มาภาพ: Unknown Source
วิธีใช้ Argo CD ทำ GitOps บน Kubernetes อย่างปลอดภัย
⚡ สรุป 30 วิ
Argo CD เป็นเครื่องมือ GitOps ที่ทำให้การปรับใช้แอปพลิเคชันบน Kubernetes จาก Git repository กลายเป็นกระบวนการอัตโนมัติและตรวจสอบได้อย่างเต็มที่
Overview — Overview
Argo CD เป็นเครื่องมือ GitOps ที่ทำให้การปรับใช้แอปพลิเคชันบน Kubernetes จาก Git repository กลายเป็นกระบวนการอัตโนมัติและตรวจสอบได้อย่างเต็มที่ ความปลอดภัยของขั้นตอนนี้สำคัญ เพราะหากข้อมูลรหัสหรือคอนฟิกถูกเปิดเผย อาจทำให้ระบบเสี่ยงต่อการโจมตี เราจะพาไปดูวิธีตั้งค่า Argo CD ให้ทำงานแบบ GitOps อย่างปลอดภัย ตั้งแต่การเตรียมสภาพแวดล้อมจนถึงการตรวจสอบและบันทึกเหตุการณ์
- GitOps – การใช้ Git เป็น single source of truth สำหรับคอนฟิกของ Kubernetes
- Argo CD – ตัวควบคุมที่ทำให้คลัสเตอร์ตรงกับสถานะใน Git อย่างต่อเนื่อง
- Security – ควบคุมการเข้าถึง, ใช้ SSH/Token แบบ read‑only, ตั้งค่า RBAC และตรวจสอบ audit logs
เตรียมสภาพแวดล้อม — Setup Environment
ก่อนเริ่มใช้ Argo CD ต้องมั่นใจว่าเครื่องของคุณพร้อมด้วยเครื่องมือที่จำเป็นและคลัสเตอร์ Kubernetes ที่ตั้งค่ามาตรฐานแล้ว การใช้เวอร์ชันล่าสุดของ `kubectl` และ `helm` จะช่วยลดช่องโหว่จากบั๊กเก่า
- **ขั้นตอนที่ 1: ตรวจสอบรุ่น `kubectl` (`kubectl version --client`) ให้เป็น 1.24 ขึ้นไป
- **ขั้นตอนที่ 2: ติดตั้ง Helm (`curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash`)
- **ขั้นตอนที่ 3: สร้าง namespace `argocd` บนคลัสเตอร์ (`kubectl create ns argocd`)
ติดตั้ง Argo CD — Install Argo CD
Argo CD สามารถติดตั้งได้ด้วย Helm chart หรือ manifest แบบดิบ เราแนะนำให้ใช้ Helm เพื่อความยืดหยุ่นและอัพเดทง่าย ระหว่างการติดตั้งควรเปิดใช้งาน `--set server.service.type=LoadBalancer` เพื่อลดขั้นตอนสร้าง Ingress
- **ขั้นตอนที่ 1: เพิ่ม repo ของ Argo CD (`helm repo add argo https://argoproj.github.io/argo-helm`)
- **ขั้นตอนที่ 2: อัปเดต repo (`helm repo update`)
- **ขั้นตอนที่ 3: ติดตั้งด้วยค่าเริ่มต้นและเปิดการตรวจสอบ TLS (`helm install argocd argo/argo-cd -n argocd --set configs.params.server.insecure=false`)
ตั้งค่า Repository อย่างปลอดภัย — Secure Repo Config
Git repository ที่ Argo CD ดึงข้อมูลควรเป็นแบบ read‑only และใช้วิธีการยืนยันตัวตนที่เข้มงวด หลีกเลี่ยงการใส่ Personal Access Token (PAT) แบบเต็มสิทธิ์ใน secret
- ใช้ SSH key pair เฉพาะสำหรับ Argo CD; ให้บันทึก private key ใน Secret ของ Kubernetes (`kubectl create secret generic argocd-repo-ssh --from-file=sshPrivateKey=./id_rsa -n argocd`)
- หากใช้ HTTPS ต้องสร้าง read‑only token ที่มี scope จำกัด (repo:read) และเก็บใน Secret แบบเดียวกัน
- กำหนด `insecure: false` ในไฟล์ config เพื่อบังคับให้ Argo CD ตรวจสอบใบรับรองของ Git server
กำหนดสิทธิ์ RBAC ใน Kubernetes — K8s RBAC
การควบคุมการเข้าถึงระดับคลัสเตอร์ช่วยป้องกันผู้ใช้หรือ service account ที่ไม่จำเป็นจากการแก้ไขทรัพยากรสำคัญ กำหนด Role หรือ ClusterRole เฉพาะสำหรับ Argo CD เท่านั้น
- **Role: ให้สิทธิ์ `get, list, watch` กับ resource ชนิด `applications` ใน namespace `argocd`
- **ClusterRoleBinding: เชื่อม ServiceAccount `argocd-server` เข้ากับ Role ที่สร้างไว้
- ตรวจสอบว่าไม่มีการเปิด `cluster-admin` ให้กับ Argo CD user (`kubectl get clusterrolebinding -o wide | grep argocd`)
ใช้ SSO / OIDC กับ Argo CD — SSO Integration
การเชื่อมต่อ Argo CD กับ Identity Provider (IdP) เช่น Keycloak, Azure AD หรือ GitHub ลดความเสี่ยงจากรหัสผ่านที่เก็บในระบบ
- เปิดใช้งาน `dex` ในค่า config (`--set dex.enabled=true`)
- กำหนด `redirectURI` ให้ตรงกับ URL ของ Argo CD UI (`https://argocd.example.com/auth/callback`)
- สร้าง client ใน IdP ที่มี grant type เป็น Authorization Code และตั้ง scope เป็น `openid profile email`
ตรวจสอบและบังคับนโยบาย Security — Policy Enforcement
เครื่องมือเช่น OPA Gatekeeper หรือ Kyverno สามารถตรวจสอบคอนฟิกที่ Argo CD นำไปใช้ก่อนให้คลัสเตอร์ยอมรับ
| Policy Engine | จุดเด่น | การใช้งานร่วมกับ Argo CD |
|---|---|---|
| OPA Gatekeeper | กฎแบบ Rego ยืดหยุ่นสูง | สร้าง ConstraintTemplate เพื่อตรวจสอบ annotations ของ Application |
| Kyverno | นิยามกฎในรูปแบบ YAML ที่อ่านง่าย | ใช้ `validate` policy ตรวจสอบ image tag ต้องเป็น `semver` เท่านั้น |
- ตั้งค่า Admission webhook ให้ Argo CD ส่งข้อมูลไปยัง Gatekeeper ก่อนการ apply
- กำหนดนโยบายไม่ให้ใช้ `latest` tag ใน container images (`deny-latest-tag.yaml`)
การทำ Monitoring & Auditing — Monitoring & Auditing
การมองเห็นสถานะและเหตุการณ์ของ Argo CD ช่วยตรวจจับพฤติกรรมที่ผิดปกติได้เร็วขึ้น
- เชื่อมต่อ Prometheus กับ Service `argocd-metrics` (`kubectl port-forward svc/argocd-metrics -n argocd 8080:8080`)
- สร้าง Dashboard ใน Grafana แสดง Sync status, Error count และ User activity
- เปิดการบันทึก audit log ของ Kubernetes API server (`--audit-log-path=/var/log/kube-audit.log`) และตั้งค่า retention อย่างน้อย 30 วัน
**Tip: ควรเก็บ Audit logs ไว้ในระบบที่มีการทำ versioning เช่น Elastic Stack หรือ CloudWatch เพื่อให้สามารถย้อนกลับตรวจสอบได้เมื่อเกิดเหตุการณ์ security breach
Tips ปลอดภัยเพิ่มเติม
- อย่าใช้ `admin` user ของ Argo CD สำหรับงานประจำ; สร้างผู้ใช้ใหม่ด้วย role ที่จำกัด (`readonly`)
- ใช้ NetworkPolicy จำกัดการเข้าถึง API server ของ Argo CD ให้เฉพาะ IP ของทีม DevOps เท่านั้น
- ตั้งค่า PodSecurityContext ให้รันเป็น non‑root user และกำหนด `readOnlyRootFilesystem: true`
Summary — Summary
สรุปขั้นตอนสำคัญในการทำ GitOps ด้วย Argo CD บน Kubernetes อย่างปลอดภัย
- เตรียมเครื่องมือและคลัสเตอร์ให้เป็นเวอร์ชันล่าสุด
- ติดตั้ง Argo CD ผ่าน Helm พร้อมเปิดการตรวจสอบ TLS
- ใช้ SSH key หรือ read‑only token สำหรับเชื่อมต่อ Git repository
- ตั้งค่า RBAC เฉพาะสำหรับ ServiceAccount ของ Argo CD
- ผสาน SSO/OIDC เพื่อลดการใช้รหัสผ่านแบบ local
- บังคับนโยบาย Security ด้วย OPA Gatekeeper หรือ Kyverno
- เปิด Monitoring, Auditing และเก็บ Log อย่างเป็นระบบ
ทำตามขั้นตอนเหล่านี้ จะช่วยให้กระบวนการ GitOps ของคุณมีความเสถียร ปลอดภัย และตรวจสอบได้ตลอดเวลา.
แชร์บทความนี้:
ชอบบทความแบบนี้?
สมัคร AI Automate Weekly Newsletter — รับเคล็ดลับ AI + how-to ใหม่
ทุกสัปดาห์ตรงถึง inbox ฟรี ไม่มีสแปม
แหล่งข่าวต้นฉบับ
- ชื่อต้นฉบับ
- วิธีใช้ Argo CD ทำ GitOps บน Kubernetes อย่างปลอดภัย
- ผู้เขียน
- กองบรรณาธิการ Thai Tech News
- แหล่ง
- บทความต้นฉบับ Thai Tech News · ช่วยร่างด้วย AI, เรียบเรียง/ตรวจสอบโดยกองบรรณาธิการ
- วันที่เผยแพร่
- 12 กรกฎาคม 2569 เวลา 10:51
- URL ต้นฉบับ
- https://thaitech.news/articles/growth-944440



