0

Bài 34. ArgoCD - Tự động đồng bộ Kubernetes từ Git

"Nếu Git là nguồn sự thật (Source of Truth), tại sao chúng ta vẫn phải tự chạy kubectl apply?"

Đó chính là câu hỏi mà ArgoCD ra đời để giải quyết.


Vấn đề

Giả sử bạn vừa sửa file deployment.yaml:

image: my-app:v2

Sau khi commit lên Git, bạn vẫn phải:

kubectl apply -f deployment.yaml

Điều này có một số nhược điểm:

  • Có thể quên deploy.
  • Có thể deploy nhầm cluster.
  • Có thể deploy nhầm phiên bản.
  • Không ai biết chính xác cluster đang chạy đúng với Git hay không.

Nếu có hàng chục ứng dụng và nhiều môi trường (Dev, Staging, Production), việc deploy thủ công sẽ rất dễ xảy ra sai sót.


1. ArgoCD là gì?

ArgoCD là một công cụ GitOps dành cho Kubernetes.

Nó liên tục theo dõi repository Git và đảm bảo rằng:

Cluster luôn có trạng thái giống hệt những gì được mô tả trong Git.

Nói cách khác:

Git thay đổi → Kubernetes tự cập nhật.


2. ArgoCD hoạt động như thế nào?

Developer
    │
    │ git push
    ▼
Git Repository
    │
    │ ArgoCD theo dõi
    ▼
ArgoCD
    │
    │ Sync
    ▼
Kubernetes Cluster

Quy trình rất đơn giản:

  1. Developer sửa file YAML hoặc Helm Chart.
  2. Commit và Push lên Git.
  3. ArgoCD phát hiện có thay đổi.
  4. ArgoCD tự động đồng bộ cluster.
  5. Ứng dụng được cập nhật.

Không cần SSH vào server.

Không cần chạy kubectl apply.


3. Điều gì xảy ra nếu ai đó sửa trực tiếp trên Cluster?

Ví dụ, một người chạy:

kubectl scale deployment my-app --replicas=10

Trong khi Git vẫn ghi:

replicas: 3

ArgoCD sẽ phát hiện sự khác biệt này (drift) và đưa cluster trở về đúng trạng thái trong Git.

Đó là lý do Git được gọi là Single Source of Truth.


4. Lợi ích của ArgoCD

  • Tự động triển khai sau khi có thay đổi trong Git.
  • Giảm thao tác thủ công.
  • Hạn chế sai sót khi deploy.
  • Dễ dàng rollback bằng Git.
  • Luôn biết cluster có đang đúng với cấu hình mong muốn hay không.

5. Khi nào nên dùng ArgoCD?

ArgoCD đặc biệt hữu ích khi:

  • Có nhiều ứng dụng.
  • Có nhiều môi trường (Dev, Staging, Production).
  • Có nhiều thành viên cùng deploy.
  • Muốn áp dụng GitOps để quản lý hạ tầng.

Tổng kết

ArgoCD biến việc triển khai Kubernetes thành một quy trình đơn giản:

Push code → ArgoCD tự đồng bộ → Cluster luôn đúng với Git.

Nhờ đó, Git không chỉ lưu mã nguồn mà còn trở thành nơi quản lý toàn bộ trạng thái mong muốn của hệ thống.


Bài tiếp theo

Trong bài sau, chúng ta sẽ ghép các mảnh ghép lại với nhau và xây dựng một pipeline CI/CD hoàn chỉnh: khi code được merge vào Git, ứng dụng sẽ tự động được build, đẩy image lên Registry và ArgoCD sẽ triển khai phiên bản mới lên Kubernetes mà gần như không cần thao tác thủ công.


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.