Disaster Recovery¶
You can use argocd admin to import and export all Argo CD data.
Make sure you have ~/.kube/config pointing to your Argo CD cluster.
Figure out what version of Argo CD you're running:
argocd version | grep server
# ...
export VERSION=v1.0.1
Export to a backup:
docker run -v ~/.kube:/home/argocd/.kube --rm quay.io/argoproj/argocd:$VERSION argocd admin export > backup.yaml
Import from a backup:
docker run -i -v ~/.kube:/home/argocd/.kube --rm quay.io/argoproj/argocd:$VERSION argocd admin import - < backup.yaml
Note
If you are running Argo CD on a namespace different than default remember to pass the namespace parameter (-n
Exporting a clean, re-creatable manifest set¶
By default, argocd admin export includes the status field of exported resources (e.g. Application sync history and health). This is useful for warm-standby/disaster-recovery setups where you want the restored resources to retain their last known status.
If instead you want a clean backup that can be applied directly with kubectl apply or re-created from scratch (for example, to seed a new cluster or store manifests in git), pass --strip-status to omit the status field from the export:
argocd admin export --strip-status > backup.yaml
kubectl apply -f backup.yaml
[!NOTE]
--strip-statusonly affects the export. On update,argocd admin importonly overwrites the live resource's status when the backup manifest actually contains a status field, so importing a--strip-statusbackup will not clear the status of existing live resources. On create, the new resource simply gets whatever status (if any) was present in the backup.