Bài 33. GitOps là gì? Vì sao ngày càng nhiều công ty áp dụng?
"Mọi thứ đều chạy ổn trên máy của tôi. Nhưng ai đã deploy phiên bản này lên production?"
Đây là câu hỏi mà hầu như đội DevOps nào cũng từng gặp.
Trước khi có GitOps
Hãy tưởng tượng nhóm của bạn có 5 lập trình viên.
Mỗi khi cần deploy ứng dụng lên Kubernetes, mọi người đều có thể chạy:
kubectl apply -f deployment.yaml
Ban đầu mọi thứ có vẻ ổn.
Nhưng sau vài tháng, những câu hỏi bắt đầu xuất hiện:
- Ai vừa sửa Deployment?
- Vì sao Replica lại từ 3 thành 10?
- File YAML trên cluster có giống trong Git không?
- Nếu deploy lỗi thì quay lại phiên bản cũ bằng cách nào?
Dần dần, Kubernetes và Git không còn giống nhau nữa.
Người ta gọi đây là Configuration Drift – trạng thái thực tế của cluster đã "trôi" khỏi những gì được lưu trong Git.
1. GitOps ra đời để giải quyết vấn đề đó
Ý tưởng của GitOps rất đơn giản:
Git chính là nguồn sự thật duy nhất (Single Source of Truth).
Thay vì sửa trực tiếp trên Kubernetes, bạn chỉ cần sửa file YAML trong Git.
Developer
│
▼
Git Repository
│
▼
GitOps Tool (ArgoCD / Flux)
│
▼
Kubernetes Cluster
Một công cụ như ArgoCD sẽ liên tục theo dõi repository.
Khi phát hiện có commit mới, ArgoCD sẽ tự động đồng bộ những thay đổi xuống Kubernetes.
Không còn ai cần đăng nhập vào cluster để chạy kubectl apply nữa.
2. GitOps mang lại những lợi ích gì?
✅ Mọi thay đổi đều có lịch sử
Bạn luôn biết:
- Ai thay đổi?
- Thay đổi khi nào?
- Thay đổi những gì?
Chỉ cần mở Git là có câu trả lời.
✅ Dễ dàng rollback
Nếu phiên bản mới gặp lỗi, chỉ cần:
git revert
git push
ArgoCD sẽ tự động đưa cluster trở về phiên bản trước.
✅ Đồng nhất giữa Git và Kubernetes
Nếu ai đó vô tình sửa trực tiếp trên cluster, ArgoCD sẽ phát hiện sự khác biệt và đồng bộ lại theo đúng cấu hình trong Git.
Cluster luôn đúng với những gì đã được lưu trữ.
✅ Tự động hóa việc triển khai
Quy trình trở nên rất đơn giản:
Code
│
▼
Pull Request
│
▼
Merge
│
▼
Git
│
▼
ArgoCD
│
▼
Kubernetes
Chỉ cần merge Pull Request, ứng dụng sẽ được triển khai tự động.
3. Có phải GitOps chỉ dành cho Kubernetes?
Không.
GitOps là một cách làm việc, còn Kubernetes là nơi GitOps được áp dụng phổ biến nhất.
Ngày nay, nhiều công ty sử dụng GitOps để quản lý:
- Kubernetes
- Hạ tầng với Terraform
- Cấu hình hệ thống
- Chính sách bảo mật
Điểm chung là mọi thay đổi đều bắt đầu từ Git.
Tổng kết
GitOps không phải là một công cụ, mà là một phương pháp quản lý hạ tầng và ứng dụng bằng Git.
Thay vì chỉnh sửa trực tiếp trên hệ thống, mọi thay đổi đều được thực hiện thông qua Pull Request và commit. Điều này giúp việc triển khai trở nên minh bạch, dễ kiểm soát và dễ khôi phục khi có sự cố.
Chính vì vậy, GitOps đang trở thành tiêu chuẩn tại nhiều công ty xây dựng nền tảng Kubernetes hiện đại.
Bài tiếp theo
Ở bài này, chúng ta đã hiểu GitOps là gì và vì sao nó ngày càng phổ biến.
Nhưng một câu hỏi khác xuất hiện:
Làm thế nào Kubernetes biết Git vừa có commit mới và tự động deploy ứng dụng?
Trong bài tiếp theo, chúng ta sẽ tìm hiểu ArgoCD – công cụ GitOps phổ biến nhất hiện nay và cách nó tự động đồng bộ ứng dụng từ Git vào Kubernetes.
All rights reserved