Bài 39: GitOps với Argo CD cơ bản
Bài này chi tiết hóa GitOps/Argo CD theo hướng thực hành chuyên sâu: có lệnh kiểm tra, tình huống production, checklist và bài tập.
- GitOps/Argo CD nằm ở đâu trong hạ tầng production.
- Các thành phần và lệnh kiểm tra quan trọng.
- Cách debug khi có lỗi thực tế.
- Checklist an toàn trước khi thao tác.
1. Bối cảnh thực tế
GitOps/Argo CD là nhóm kiến thức chuyên sâu hơn. Mục tiêu không phải học thuộc lệnh, mà là biết kiểm tra đúng lớp, đọc đúng trạng thái và tránh thao tác gây mất dữ liệu hoặc downtime.
2. Khái niệm cần nắm
- Control plane / data plane: phần điều khiển và phần chạy tải thật.
- Stateful vs stateless: ứng dụng có dữ liệu bền vững cần xử lý cẩn thận hơn.
- Health: trạng thái tổng thể phải nhìn từ nhiều nguồn: service, log, metric, endpoint.
- Blast radius: phạm vi ảnh hưởng nếu thao tác sai.
3. Lab thực hành / lệnh kiểm tra
kubectl get applications -n argocd argocd app list argocd app get my-app argocd app diff my-app argocd app sync my-app argocd app history my-app argocd app rollback my-app 3
4. Tình huống thực tế
Ứng dụng OutOfSync vì có người sửa tay trong cluster. Anh xem diff, đưa thay đổi về Git hoặc sync lại theo Git để giữ Git là nguồn sự thật.
5. Quy trình debug an toàn
- Xác định triệu chứng: lỗi gì, xảy ra từ khi nào, ảnh hưởng ai.
- Kiểm tra trạng thái tổng quan bằng lệnh read-only trước.
- Đọc event/log liên quan.
- Khoanh vùng: network, storage, compute, config hay application.
- Chỉ thay đổi một thứ tại một thời điểm.
- Kiểm tra lại health sau mỗi thay đổi.
- Ghi lại nguyên nhân và bài học.
6. Lỗi thường gặp
- Thấy cảnh báo là chạy lệnh sửa ngay mà không đọc nguyên nhân.
- Không phân biệt lỗi control plane và lỗi workload.
- Xóa resource/volume/secret khi chưa backup.
- Không kiểm tra quyền truy cập và audit log.
7. Checklist
- Đã dùng lệnh read-only để kiểm tra.
- Đã xác định resource/service bị ảnh hưởng.
- Đã đọc log/event trước khi sửa.
- Đã có backup/snapshot nếu liên quan dữ liệu.
- Đã có phương án rollback hoặc escalation.
8. Bài tập
- Dựng lab hoặc dùng môi trường test.
- Chạy các lệnh kiểm tra trong bài.
- Ghi lại output bình thường.
- Mô phỏng một lỗi nhỏ nếu an toàn.
- Viết runbook 5 bước cho sự cố tương tự.
