Gitops Argocd Flux Guide IT General

Gitops Argocd Flux Guide

📅 2026-02-09 | โดย อ.บอม กิตติทัศน์ เจริญพนาสิทธิ์ — SiamCafe.net Since 1997

GitOps, Argo CD, Flux Guide: ทำไมต้องสนใจ?

น้องๆ เคยเจอปัญหา deploy โค้ดแล้วพังไหม? หรือแก้ config ใน production แล้วลืมแก้ใน source code หรือเปล่า? GitOps นี่แหละคือทางออก! สมัยผมทำร้านเน็ตฯ เมื่อก่อน deploy ทีต้อง ssh เข้าไปแก้ไฟล์เอง เสี่ยงมาก! GitOps มันเหมือนมี auto-pilot คอยจัดการทุกอย่างให้เราปลอดภัยและเป็นระบบมากขึ้นเยอะเลย

GitOps คือการใช้ Git เป็น "single source of truth" สำหรับ infrastructure และ application state ทั้งหมด พูดง่ายๆ คือ ทุกอย่างที่เกี่ยวกับระบบเรา (โค้ด, config, infrastructure) ถูกเก็บไว้ใน Git repository แล้วใช้เครื่องมืออัตโนมัติจัดการให้ระบบเราเป็นไปตามที่ Git บอก

Argo CD และ Flux คือเครื่องมือยอดนิยมที่ช่วยให้เราทำ GitOps ได้ง่ายขึ้น คิดซะว่า Argo CD กับ Flux เป็น "คนงาน" ที่คอยฟังคำสั่งจาก Git แล้วจัดการทุกอย่างให้เป็นไปตามนั้น

ทำไม GitOps ถึงสำคัญ?

พื้นฐานที่ต้องรู้ก่อนลุย GitOps

Git คือพระเอกตัวจริง

Git คือหัวใจหลักของ GitOps ถ้าไม่เข้าใจ Git นี่จบเห่เลยนะน้อง! ต้องคล่องเรื่อง branch, commit, pull request, merge อะไรพวกนี้ สมัยก่อนตอนเริ่มทำเว็บ SiamCafe ผมใช้ CVS… โคตรทรมาน! พอมาเจอ Git ชีวิตดีขึ้นเยอะ

ลองดูคำสั่ง Git ง่ายๆ:


git clone 
git checkout -b feature/new-feature
# แก้ไขไฟล์
git add .
git commit -m "Add new feature"
git push origin feature/new-feature

Kubernetes (K8s) คือสนามรบ

GitOps มักจะใช้กับ Kubernetes เพราะมัน scale ได้ดีและจัดการ application ได้ซับซ้อน แต่จริงๆ ก็ใช้กับอย่างอื่นได้นะ แค่ K8s มันฮิตสุด

ต้องเข้าใจ concepts พื้นฐานของ K8s เช่น Pod, Deployment, Service, Namespace, ConfigMap, Secret อะไรพวกนี้ ไม่งั้นจะงงว่า GitOps มันจัดการอะไรกันแน่

ตัวอย่าง K8s deployment YAML:


apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app
        image: my-app:latest
        ports:
        - containerPort: 8080

YAML: ภาษาที่ GitOps ใช้คุยกับ K8s

YAML คือภาษาที่ใช้ define configuration ใน K8s และ GitOps หลายๆ ตัว มันอ่านง่ายกว่า XML เยอะ แต่ก็ต้องระวังเรื่อง indentation นะ พลาดไปทีนี่ error เลย

YAML เป็น human-readable data-serialization language. It is commonly used for configuration files and in applications where data is being stored or transmitted. YAML targets many of the same communications applications as Extensible Markup Language (XML) but has a minimal syntax which intentionally differs from SGML.

วิธีใช้งาน GitOps: เริ่มต้นยังไง?

เริ่มจากเลือกเครื่องมือ GitOps ก่อนเลยว่าจะใช้ Argo CD หรือ Flux ทั้งคู่มีข้อดีข้อเสียต่างกัน แต่หลักการทำงานคล้ายๆ กันคือ คอย sync state ของ K8s cluster ให้ตรงกับสิ่งที่อยู่ใน Git repository

จากนั้นก็สร้าง Git repository ที่เก็บ configuration ของ application และ infrastructure แบ่งเป็น folder ให้ชัดเจน เช่น /infrastructure, /applications, /environments

สุดท้ายก็ configure เครื่องมือ GitOps ให้เชื่อมต่อกับ Git repository ของเรา แล้วมันจะเริ่ม sync ทุกอย่างให้อัตโนมัติ

ขั้นตอนปฏิบัติจริง: Argo CD

  1. ติดตั้ง Argo CD: ติดตั้ง Argo CD ใน K8s cluster ของเรา ใช้ Helm ก็ได้
  2. สร้าง Argo CD Application: define application ใน Argo CD โดยระบุ Git repository, branch, path ที่เก็บ K8s manifests
  3. Sync Application: Argo CD จะ sync K8s manifests จาก Git repository ไปยัง K8s cluster
  4. Monitor Application: ดู status ของ application ใน Argo CD dashboard ถ้ามีอะไรผิดพลาด มันจะแจ้งเตือน

ขั้นตอนปฏิบัติจริง: Flux

  1. ติดตั้ง Flux: ติดตั้ง Flux ใน K8s cluster ของเรา ใช้ flux bootstrap github ได้เลย
  2. Define Kustomization: สร้าง Kustomization resource เพื่อบอก Flux ว่าจะ sync อะไรจาก Git repository
  3. Commit and Push: commit และ push Kustomization resource ไปยัง Git repository
  4. Flux Sync: Flux จะ sync Kustomization resource และเริ่ม sync K8s manifests

ลองดูตัวอย่าง Kustomization resource:


apiVersion: kustomize.toolkit.fluxcd.io/v1beta2
kind: Kustomization
metadata:
  name: my-app
  namespace: flux-system
spec:
  interval: 5m
  path: ./deployments/my-app
  prune: true
  sourceRef:
    kind: GitRepository
    name: my-git-repo

🎬 วิดีโอแนะนำ

ดูวิดีโอเพิ่มเติมเกี่ยวกับGitops Argocd Flux Guide:

เปรียบเทียบ Argo CD กับ Flux

Argo CD กับ Flux ต่างก็เป็นเครื่องมือ GitOps ที่ดีทั้งคู่ Argo CD จะเน้น UI ที่ใช้งานง่าย ส่วน Flux จะเน้น CLI และ Git native workflow เลือกอันที่เหมาะกับทีมเราครับ

สมัยผมเริ่มทำ SiamCafe ก็ต้องเลือกเครื่องมือเยอะแยะ สุดท้ายก็ต้องลองเองถึงจะรู้ว่าอะไรเหมาะกับเรา

คุณสมบัติ Argo CD Flux
UI มี UI ที่ใช้งานง่าย เน้น CLI
Git Native Support หลาย Git provider Git native workflow
Multi-tenancy ดีกว่า รองรับ
Rollback ง่าย ต้องใช้ Git revert
Community ใหญ่ กำลังเติบโต

ถ้าอยากอ่านเรื่องราว IT สนุกๆ เพิ่มเติม แวะไปที่ SiamCafe Blog ได้เลย

ทางเลือกอื่น: Jenkins X, GitLab CI

นอกจาก Argo CD และ Flux ก็ยังมีเครื่องมืออื่นๆ ที่ช่วยทำ GitOps ได้ เช่น Jenkins X, GitLab CI แต่สองตัวนี้จะเน้น CI/CD มากกว่า GitOps เป็นแค่ส่วนหนึ่งของ workflow

Jenkins X ซับซ้อนกว่า GitLab CI ใช้งานง่ายกว่า แต่ถ้าอยากได้ GitOps แบบ pureๆ Argo CD กับ Flux เวิร์คกว่าเยอะ

สุดท้ายนี้ อย่าลืมลองผิดลองถูก ไม่มีอะไรได้มาง่ายๆ เหมือนตอนผมทำร้านเน็ตฯ สมัยก่อน ต้องเจอปัญหาทุกรูปแบบ แต่ก็ทำให้เราเก่งขึ้นเยอะเลย

อ่านบทความอื่นๆ ที่น่าสนใจได้ที่ SiamCafe Blog ครับ!

Best Practices / เคล็ดลับจากประสบการณ์

เอาล่ะน้องๆ หลังจากที่เราปูพื้นเรื่อง GitOps, Argo CD, และ Flux กันไปแล้ว คราวนี้มาถึงของจริงกันบ้าง นั่นคือ เคล็ดลับที่พี่บอมสั่งสมมาจากการใช้งานจริงในสนามรบ IT กว่า 28 ปี สมัยผมทำร้านเน็ต SiamCafe นี่แหละ เจอปัญหามาเยอะ เจ็บมาเยอะ เลยอยากมาแชร์ให้พวกเราได้เอาไปใช้กันแบบไม่ต้องเสียเวลาลองผิดลองถูกเอง

3-4 เทคนิคที่ใช้ได้จริง

1. Structure โฟลเดอร์ให้ดี มีชัยไปกว่าครึ่ง: สมัยก่อนตอนทำร้านเกมส์ นี่แหละครับ ผมเจอปัญหาเยอะมากเพราะไม่ได้จัดระเบียบไฟล์ให้ดี พอร้านใหญ่ขึ้น ลูกค้าเยอะขึ้น config มั่วไปหมด GitOps ก็เหมือนกันนะน้อง ถ้าเราไม่จัดโครงสร้างโฟลเดอร์ให้ดีๆ ใน Git repository ของเรา จะกลายเป็นนรกดีๆ นี่เอง

ลองดูตัวอย่างโครงสร้างที่พี่ใช้บ่อยๆ:


├── clusters
│   ├── production
│   │   └── manifests
│   │       ├── deployment.yaml
│   │       └── service.yaml
│   └── staging
│       └── manifests
│           ├── deployment.yaml
│           └── service.yaml
├── applications
│   └── my-app
│       └── kustomization.yaml
└── base
    └── my-app
        ├── deployment.yaml
        └── service.yaml

จะเห็นว่าเราแยก `clusters` (environments), `applications` (แต่ละแอปพลิเคชัน), และ `base` (manifests พื้นฐาน) ชัดเจน เวลาแก้ config หรือ deploy อะไร จะได้หาเจอง่ายๆ

2. ใช้ Kustomize หรือ Helm: อย่าพยายามเขียน Kubernetes manifests เองทั้งหมดตั้งแต่ต้น มันเสียเวลา! ใช้เครื่องมืออย่าง Kustomize หรือ Helm ช่วยในการจัดการ config จะดีกว่า Kustomize เหมาะกับการ customize manifests ที่มีอยู่แล้ว ส่วน Helm เหมาะกับการ package แอปพลิเคชันที่ซับซ้อน

3. Git Branching Strategy สำคัญมาก: สมัยก่อนตอนทำเว็บ SiamCafe ผมเคยพลาดเรื่องนี้มาแล้ว คือแก้ code ใน branch หลักโดยตรง พอ deploy ขึ้น production ปุ๊บ พัง! Git branching strategy ที่ดีจะช่วยป้องกันปัญหานี้ได้ ลองใช้ Gitflow หรือ GitHub Flow ดู แล้วแต่ความเหมาะสมของทีม

4. Monitoring & Alerting: GitOps ไม่ใช่แค่การ deploy code นะน้อง มันคือการ maintain state ด้วย เพราะฉะนั้นเราต้องมีระบบ monitoring และ alerting ที่ดี คอยเช็คว่าทุกอย่างยังทำงานปกติไหม ถ้ามีอะไรผิดปกติ จะได้รู้ตัวทัน

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

Argo CD vs. Flux เลือกอะไรดี?

อันนี้ตอบยากเหมือนถามว่า "กินข้าวมันไก่ร้านไหนอร่อยกว่ากัน" มันแล้วแต่ความชอบและ use case ของแต่ละคน Argo CD เหมาะกับคนที่ต้องการ UI ที่สวยงาม และ features ที่ครบครัน ส่วน Flux เหมาะกับคนที่ชอบความเรียบง่าย และเน้น Git-centric workflow

GitOps เหมาะกับทุกโปรเจ็กต์ไหม?

ไม่เสมอไป GitOps เหมาะกับโปรเจ็กต์ที่ต้องการความ repeatable, auditable, และ automated ในการ deploy แต่ถ้าโปรเจ็กต์เล็กๆ หรือไม่มีทีมที่เชี่ยวชาญด้าน Kubernetes การใช้ GitOps อาจจะ overkill

Security สำคัญแค่ไหนใน GitOps?

สำคัญมากๆ! เพราะทุกอย่างมันอยู่ใน Git หมดเลย ถ้าใครเข้าถึง Git repository ของเราได้ ก็เหมือนกับได้กุญแจบ้านเราไป ดังนั้นต้องดูแลเรื่อง access control, secrets management, และ auditing ให้ดี

มี tool อะไรที่ช่วยให้การทำ GitOps ง่ายขึ้นบ้าง?

นอกจาก Argo CD และ Flux แล้ว ยังมีเครื่องมืออื่นๆ อีกมากมาย เช่น Jenkins X, Tekton, และ Spinnaker ลองศึกษาดู แล้วเลือกใช้ให้เหมาะสมกับทีม

สรุป

GitOps เป็น paradigm ที่น่าสนใจ และมีประโยชน์มากในการจัดการ infrastructure และ application deployments แต่ก็ต้องศึกษาและทำความเข้าใจให้ดีก่อนนำไปใช้จริง อย่าลืมว่าไม่มี silver bullet อะไรที่แก้ปัญหาได้ทุกอย่าง เลือกใช้เครื่องมือและ practices ที่เหมาะสมกับทีม และโปรเจ็กต์ของเรา

ถ้าใครอยากรู้เรื่อง cloud เพิ่มเติม ลองไปดูที่ iCafeForex ได้นะครับ

และอย่าลืมแวะไปอ่านบทความอื่นๆ ที่ SiamCafe Blog ด้วยนะ มีอะไรดีๆ อีกเยอะเลย