three sail boats on water during daytime

I’ve been using Argo CD for GitOps automation for a very long time. I have it manage itself too! The other day I noticed that there was a new major version of Argo CD, so I decided to upgrade my stuff too. It did not go smoothly, though it wasn’t an issue with Argo CD itself.

It was the usual problem of Helm charts renaming and moving around stuff in their values.yaml, which results in significant breakage for (from an user perspective) no good reason. I summed up what I learned so others don’t have to play around with it so much.

All of the breakage was centered around the Ingress configuration. I have Traefik as my ingress controller and it terminates HTTPS for me, so the Argo server would run “insecure” behind that. The correct configuration took a while to figure out, because (obviously) once I screwed it up, I couldn’t connect to Argo in the browser, and I had to first fix my local kubeconfig so I could port-forward to the Argo server pod to see what was going on.

--insecure

Crucially, the insecure option has to be specified under configs.params.server.insecure as string true. The Helm chart template looks at this configuration option to decide which port to use so if you used to use server.extraArgs to pass in --insecure, that will no longer work. It has to be under configs.

configs:
  params:
    server.insecure: "true"

Hosts

Before, under server.ingress I’d have a hosts option and a tls option with the same configuration in it. The host name is now preferably set using the global.domain option at the top level of values.

global:
  domain: argo.example.com

The tls configuration also changed to extraTls (though with the same value) and I got the impression you also needed to include ingressClassName now, so that got done too.

server:
  ingress:
    ingressClassName: traefik
    extraTls:
    - hosts:
      - argo.example.com

Once Argo pulled in these value changes, everything worked just fine again.