Hướng dẫn backup và restore cho ArgoCD.
Vấn đề
Câu hỏi được đặt ra là tại sao ta cần backup và restore cho ArgoCD? ArgoCD không tương tác trực tiếp gì với Database để lưu giữ liệu, nó chỉ dùng Redis để làm cache. Và tất cả cấu hình của ứng dụng đều được lưu trên Git và ứng dụng được chạy trên Kubernetes Cluster. ArgoCD chỉ chịu trách nhiệm đồng bộ cấu hình của các ứng dụng chạy trên Kubernetes Cluster giống với cấu hình được lưu trữ trên Git. Cho dù có xóa ArgoCD thì ứng dụng của ta vẫn hoạt động được. Vậy tại sao ta lại cần backup và restore?
Câu trả lời là tuy ArgoCD không lưu gì liên quan tới cấu hình ứng dụng và ứng dụng chạy trên Kubernetes. Nhưng ArgoCD có lưu thông tin để kết nối tới Private Git hoặc Helm và thông tin để kết nối tới Kubernetes Cluster. Ngoài ra nó còn lưu trạng thái đồng bộ ứng dụng. Nếu ArgoCD của ta bị chết và không thể hồi phục thì việc tạo lại từ đầu tới cuối các kết nối cực kì mất thời gian.
Giải pháp
Ta có thể thực hiện backup và restore để tránh rủi ro trên xảy ra này. Để thực hiện ta chỉ cần sử dụng câu lệnh argocd admin
:
$ argocd admin -h
Usage:
argocd admin [flags]
argocd admin [command]
Available Commands:
app Manage applications configuration
cluster Manage clusters configuration
dashboard Starts Argo CD Web UI locally
export Export all Argo CD data to stdout (default) or a file
import Import Argo CD data from stdin (specify `-') or a file
proj Manage projects configuration
repo Manage repositories configuration
settings Provides set of commands for settings validation and troubleshooting
Thực hiện backup:
argocd admin export -n argocd > argocd-backup-$(date +"%Y-%m-%d-%H:%M").yml
Sau khi tạo ra tệp tin backup thì ta nên tải nó lên AWS S3 hoặc GCP Cloud Storage để lưu trữ, lúc cần thì ta sẽ tải xuống để xài. Thực hiện restore:
argocd admin import - < argocd-backup-2023-07-07-14:00.yml
...
/ConfigMap argocd-cm created
/ConfigMap argocd-rbac-cm created
/ConfigMap argocd-ssh-known-hosts-cm created
/ConfigMap argocd-tls-certs-cm created
/Secret argocd-secret created
/Secret autopilot-secret created
argoproj.io/AppProject default created
argoproj.io/AppProject testing created
argoproj.io/Application argo-cd created
argoproj.io/Application autopilot-bootstrap created
argoproj.io/Application cluster-resources-in-cluster created
argoproj.io/Application root created
argoproj.io/ApplicationSet cluster-resources created
argoproj.io/ApplicationSet testing created
...
Kết luận
Sử dụng câu lệnh argocd admin
giúp ta dễ dàng trong việc thực hiện backup và restore. Trong các dự án thực tế thì ta nên thực hiện công việc này một cách tự động bằng Cron Job hay gì đó.
Nếu bài viết có gì sai hoặc cần cập nhật thì liên hệ Admin.
Tham gia nhóm chat của DevOps VN tại Telegram.
Kém tiếng Anh và cần nâng cao trình độ giao tiếp: Tại sao bạn học không hiệu quả?