diff --git a/docs/operator-manual/disaster_recovery.md b/docs/operator-manual/disaster_recovery.md new file mode 100644 index 0000000000000..fdc9018d76455 --- /dev/null +++ b/docs/operator-manual/disaster_recovery.md @@ -0,0 +1,25 @@ +# Disaster Recovery + +You can use `argocd-util` can be used 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: + +```bash +argocd version | grep server +# ... +export VERSION=v1.0.1 +``` + +Export to a backup: + +```bash +docker run -v ~/.kube:/home/argocd/.kube --rm argoproj/argocd:$VERSION argocd-util export > backup.yaml +``` + +Import from a backup: + +```bash +docker run -v ~/.kube:/home/argocd/.kube --rm argoproj/argocd:$VERSION argocd-util import - < backup.yaml +``` diff --git a/docs/operator-manual/high_availability.md b/docs/operator-manual/high_availability.md new file mode 100644 index 0000000000000..ad5106e72b903 --- /dev/null +++ b/docs/operator-manual/high_availability.md @@ -0,0 +1,19 @@ +# High Availability + +Argo CD is largely stateless, all data is persisted as Kubernetes objects, which in turn is stored in Kubernetes' etcd. Redis is only used as a throw-away cache and can be lost. When lost, it will be rebuilt without loss of service. + +A set HA of manifests are provided for users who wish to run Argo CD in a highly available manner. This runs more containers, and run Redis in HA mode. + +[Manifests ⧉](https://github.com/argoproj/argo-cd/tree/master/manifests) + +!!! note + The HA installation will require at least three different nodes due to pod anti-affinity roles in the specs. + +## Scaling Up + +You might scale up some Argo CD services in the following circumstances: + +* The `argocd-repo-server` can scale up when there is too much contention on a single git repo (e.g. many apps defined in a single git repo). +* The `argocd-server` can scale up to support more front-end load. + +All other services should run with their pre-determined number of replicas. The `argocd-application-controller` must not be increased because multiple controllers will fight. The `argocd-dex-server` uses an in-memory database, and two or more instances would have inconsistent data. `argocd-redis` is pre-configured with the understanding of only three total redis servers/sentinels. diff --git a/mkdocs.yml b/mkdocs.yml index af61cb7d388da..6f502141eff32 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -30,6 +30,8 @@ nav: - operator-manual/rbac.md - operator-manual/security.md - operator-manual/cluster-bootstrapping.md + - operator-manual/high_availability.md + - operator-manual/disaster_recovery.md - operator-manual/webhook.md - operator-manual/health.md - operator-manual/custom_tools.md