DevOps

Backup và Restore Argocd

argocd-logo

ArgoCD là một công cụ mạnh mẽ trong hệ sinh thái Kubernetes, giúp tự động hóa việc triển khai và quản lý ứng dụng bằng cách áp dụng các nguyên tắc GitOps. Với ArgoCD, các bản cập nhật ứng dụng và cấu hình được đồng bộ hóa tự động từ kho Git tới các cluster Kubernetes, đảm bảo tính nhất quán và giảm thiểu sai sót trong quá trình triển khai. Tuy nhiên, sự phụ thuộc vào ArgoCD cũng đặt ra một yêu cầu quan trọng: việc sao lưu và phục hồi dữ liệu của ArgoCD trở thành một nhiệm vụ thiết yếu.

Bất kỳ sự cố nào, từ mất dữ liệu đến hỏng hóc hệ thống, đều có thể gây gián đoạn nghiêm trọng đến hoạt động của các ứng dụng. Do đó, việc duy trì các bản sao lưu định kỳ của ArgoCD không chỉ đảm bảo sự liên tục trong vận hành mà còn giúp khôi phục nhanh chóng trong trường hợp gặp sự cố, bảo vệ toàn vẹn hệ thống và dữ liệu.

Đặt vấn đề

Câu hỏi đặt ra là vì sao chúng ta cần phải thực hiện việc sao lưu và phục hồi cho ArgoCD? ArgoCD không trực tiếp tương tác với cơ sở dữ liệu để lưu trữ dữ liệu mà chỉ sử dụng Redis để làm bộ nhớ đệm. Tất cả các cấu hình của ứng dụng đều được lưu trữ trên Git và ứng dụng thì chạy trên Kubernetes Cluster. Vai trò của ArgoCD là đồng bộ cấu hình của các ứng dụng đang chạy trên Kubernetes Cluster sao cho chúng khớp với cấu hình đã được lưu trên Git. Thậm chí nếu ArgoCD bị xóa đi, ứng dụng vẫn có thể tiếp tục hoạt động bình thường. Vậy, tại sao việc sao lưu và phục hồi lại cần thiết?

Câu trả lời nằm ở chỗ, dù ArgoCD không lưu trữ trực tiếp cấu hình ứng dụng hay thông tin về các ứng dụng đang chạy trên Kubernetes, nhưng nó giữ thông tin quan trọng để kết nối tới các Private Git repositories, Helm charts, và Kubernetes Clusters. Bên cạnh đó, ArgoCD còn lưu trữ trạng thái đồng bộ của ứng dụng. Nếu ArgoCD gặp sự cố nghiêm trọng và không thể khôi phục, việc tái thiết lập các kết nối từ đầu sẽ tốn rất nhiều thời gian và công sức.

Backup argocd

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:

Restore argocd

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ì đó.

Đăng ký liền tay Nhận Ngay Bài Mới

Subscribe ngay

Cám ơn bạn đã đăng ký !

Lỗi đăng ký !

Add Comment

Click here to post a comment

Đăng ký liền tay
Nhận Ngay Bài Mới

Subscribe ngay

Cám ơn bạn đã đăng ký !

Lỗi đăng ký !