ข้ามไปเนื้อหาหลัก
คอนเทนเนอร์· ~14 นาที· อัปเดตล่าสุด

GitOps ด้วย ArgoCD

ใช้ Git เป็นแหล่งความจริงเดียว คลัสเตอร์ sync ตามอัตโนมัติ

พื้นฐานที่ควรรู้: ในอดีต เวลาจะนำแอปพลิเคชันขึ้นระบบ (Deploy) โปรแกรมเมอร์หรือสคริปต์อัตโนมัติจะต้องโยนโค้ดเข้าไปในเซิร์ฟเวอร์ แต่ GitOps เปลี่ยนแนวคิดใหม่ เป็นการให้เซิร์ฟเวอร์ไปดึง (Pull) ข้อมูลล่าสุดจาก Git มาใช้เอง วิธีนี้ปลอดภัยกว่าและรู้เสมอว่าเวอร์ชันปัจจุบันตรงกับโค้ดชุดไหน

รีโมตต้นฉบับ

GitOps เหมือนให้ Git เป็น "รีโมตต้นฉบับ" ของคลัสเตอร์ — อยากเปลี่ยนอะไรก็แก้ที่ Git แล้วมีตัวช่วย (ArgoCD) คอยเทียบว่าคลัสเตอร์ตรงกับ Git ไหม ถ้าไม่ตรงก็ดึงให้ตรง — เหมือน reconciliation loop แต่ระดับ "ทั้งระบบ"

แนวคิด GitOps: เก็บ manifest/Helm/Kustomize ทั้งหมดใน Git เป็น single source of truth · เครื่องมืออย่าง ArgoCD (หรือ Flux) เฝ้า repo แล้ว sync คลัสเตอร์ให้ตรงกับ Git อัตโนมัติ

Git เป็น source of truth · ArgoCD sync เข้าคลัสเตอร์

Developerpush / PR
Git repomanifests (ต้นฉบับ)
เฝ้า+เทียบ
ArgoCDsync ถ้าไม่ตรง
Cluster

แก้ที่ Git เท่านั้น · drift ในคลัสเตอร์ถูกดึงกลับให้ตรง Git

นักพัฒนา push → Git (source of truth) → ArgoCD เทียบและ sync เข้าคลัสเตอร์ต่อเนื่อง
  • ตรวจสอบย้อนหลังได้ — ทุกการเปลี่ยนคือ commit มีคนอนุมัติผ่าน pull request
  • ย้อนกลับง่ายgit revert แล้วคลัสเตอร์กลับสภาพเดิม
  • กัน drift — ถ้ามีใครไปแก้คลัสเตอร์ตรง ๆ ArgoCD เห็นว่า "ไม่ตรง Git" แล้วดึงกลับ
  • ไม่ต้องแจก credential คลัสเตอร์ ให้ CI — ArgoCD ดึงจาก Git เข้าไปเอง (ปลอดภัยกว่า push)

สรุป Key Takeaways

  • GitOps = Git เป็น source of truth เดียว, ArgoCD/Flux sync คลัสเตอร์ให้ตรงอัตโนมัติ
  • ได้ audit trail, rollback ด้วย git revert, กัน config drift
  • ปลอดภัยกว่าเพราะ pull-based (ไม่ต้องแจก credential ให้ CI)

คำถามที่พบบ่อย

GitOps ต่างจาก CI/CD ที่ kubectl apply ใน pipeline ยังไง

ทิศทางกลับกัน: pipeline แบบเดิม "push" config เข้า cluster (pipeline ต้องถือสิทธิ์เข้า cluster) ส่วน GitOps มี agent ใน cluster (ArgoCD/Flux) คอย "pull" จาก git แล้ว sync ให้ตรง — ได้ audit จาก git history, rollback = git revert, และตรวจ drift อัตโนมัติเมื่อมีคนไปแก้มือ

ArgoCD ตรวจเจอ drift แล้วทำอะไร

แล้วแต่ตั้ง — โหมด manual จะแค่โชว์ OutOfSync ให้กดยืนยัน ส่วน auto-sync + selfHeal จะเขียนทับกลับให้ตรง git ทันที — production ที่วินัยดีเปิด selfHeal เพื่อการันตีว่า git คือความจริงเดียว ใครแก้มือก็ถูกดึงกลับ

อ่านจบแล้วอย่าลืมทำเครื่องหมาย