I usually enjoy ArgoCD and deployments via Helm charts.
Just sometimes an unexpected behaviour pops up.
In my case the ingress deployed via a helm run by ArgoCD were stuck in status progressing.
Meanwhile the ingress where there, from k8s perspective (kubectl get ing was all fine).
Ingress in progressing causes the ArgoCD application to stay in status progressing.
This tends to mask other errors.
Let’s deep dive into the issue…
- in ArgoCD issue #14607 the scenario is described for
nginxwhen no loadbalancer IP is provided- the referenced getIngressHealth(…) shows us, this
progressingstatus is equivalent tolen(ingresses) <= 0thus=0. This would be{}.
- the referenced getIngressHealth(…) shows us, this
- for the ArgoCD Health Check and how the health check for networking.k8s.io/Ingress was coded in ArgoCD, see here
- from ArgoCD issue #1704 you get the suggestion for custom health checks too - not what I intended. But it provided the hit to (from ArgoCD PoV) unexpected behaviour of resource controllers and
providers.kubernetesIngress.publishedService - for Traefik the
loadbalancer.statuscan be configured to copy the Kubernetes service status, see publishedService documentation- Traefik
providers.kubernetesIngress.ingressEndpoint.publishedService=ingress/traefik
- Traefik
- if the Traefik Ingress is not getting the loadbalancer IP and you deploy via helm, check missing LB here with the same
additionalArguments: - "--providers.kubernetesingress.ingressendpoint.publishedservice=NAMESPACE/TRAEFIK_SVC_NAME"
To validate (on a throwaway VM)
sudo curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--disable traefik" sh -s - --write-kubeconfig-mode 644
# install traefik
helm repo add traefik https://traefik.github.io/charts --force-update
helm upgrade traefik traefik/traefik --install -f values.yaml --atomic --wait
# deploy argocd
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
# create application with ingress
https://github.com/argoproj/argocd-example-apps/tree/master/helm-guestbook
https://github.com/argoproj/argo-cd/blob/master/docs/operator-manual/application.yaml
kubectl apply -f https://raw.githubusercontent.com/argoproj/argo-cd/refs/heads/master/docs/operator-manual/application.yaml # restart argocd afterwards
https://github.com/argoproj/argocd-example-apps/blob/master/helm-guestbook/templates/NOTES.txt
# observe ingress
kubectl get ing
kubectl describe app NAME_OF_THE_APPLICATION