Upgrading Argo CD

To upgrade Argo CD:

  1. Go to the Argo CD GitHub page and determine the latest release. You can also check the Roundtable repository with neophile analyze (see the neophile documentation for more information).
  2. Read the upgrade notes to see if there are any changes to adjust for.
  3. Update the Argo CD configuration to point to the latest version. Argo CD will then sync and upgrade itself as soon as it notices the change to the repository.

If the upgrade fails (upgrading oneself is a tricky operation!), you may need to manually apply the Argo CD configuration. You can do this with:

$ kubectl apply -k deployments/argo-cd/kustomization.yaml

from the top level of the Roundtable repository with the update to change the Argo CD version applied.

For major upgrades, consider taking a backup before upgrading with:

$ chmod 644 ~/.kube/config
$ docker run -v ~/.kube:/home/argocd/.kube --rm \
    argoproj/argocd:$VERSION argocd-util export -n argocd > backup.yaml
$ chmod 600 ~/.kube/config

You have to temporarily make your kubectl configuration file world-readable so that the Argo CD Docker image can use your credentials. Replace $VERSION with the current Argo CD version as seen in the top left hand sidebar in the UI, with the leading v but without the + and trailing hash. This is taken from the Argo CD disaster recovery documentation with the addition of the namespace flag.

If anything goes horribly wrong, you can then restore the configuration with:

$ chmod 644 ~/.kube/config
$ docker run -i -v ~/.kube:/home/argocd/.kube --rm \
    argoproj/argocd:$VERSION argocd-util import -n argocd - < backup.yaml
$ chmod 600 ~/.kube/config