Argo CD Ingress Stuck – Find & Fix
When Argo CD ingress gets stuck—no ADDRESS assigned or stuck in Terminating—the AWS Load Balancer Controller may be failing to reconcile. Use the steps below to find the cause and apply fixes.
1. Overview
Common causes:
-
Stale ssl-redirect annotation without
certificate-arn—ALB controller cannot create the HTTPS listener -
Ingress stuck in deletion—finalizers prevent removal (e.g.
ingress.k8s.aws/resources) - ALB controller errors—certificate validation or security group cleanup failures
What this guide does:
- Confirms the ingress is stuck and why (no ADDRESS or stuck in Terminating)
- Shows how to check for stale annotations and controller logs
- Removes the ssl-redirect annotation when it blocks creation
- Clears finalizers when the ingress is stuck in deletion
2. Prerequisites
Before starting, ensure you have:
- kubectl configured with context set to your cluster
- Permissions to get, patch, and annotate resources in the
argocdnamespace
3. Confirm the Ingress Is Stuck
Check ingress status:
kubectl get ingress -n argocd -o wide
No ADDRESS = stuck (controller hasn't provisioned the load balancer).
Check if stuck in deletion:
kubectl get ingress -A -o custom-columns='NS:.metadata.namespace,NAME:.metadata.name,DELETING:.metadata.deletionTimestamp,ADDRESS:.status.loadBalancer.ingress[0].hostname'
DELETING set + empty ADDRESS = stuck in Terminating.
4. Check for Stale ssl-redirect
ssl-redirect without certificate-arn causes the ALB controller to fail creating the HTTPS listener:
kubectl get ingress argocd-server-ingress -n argocd -o jsonpath='{.metadata.annotations}' | tr ',' '\n' | grep -E "listen-ports|ssl-redirect|certificate"
If you see ssl-redirect but no certificate-arn, remove the annotation (see step 6).
5. Check ALB Controller Logs
Inspect the controller logs for errors:
kubectl logs -n aws-load-balancer-controller -l app.kubernetes.io/name=aws-load-balancer-controller --tail=200 | grep -i -E "argocd|certificate|CreateListener|error|failed|delet"
Look for:
ValidationError: A certificate must be specified for HTTPS listenersfailed to delete securityGroup
6. Fix: Remove Stale ssl-redirect
If the ingress has ssl-redirect but no certificate-arn:
kubectl annotate ingress argocd-server-ingress -n argocd alb.ingress.kubernetes.io/ssl-redirect-
The controller should reconcile and provision the load balancer (HTTP-only initially, or HTTPS if you add the certificate annotation separately).
7. Fix: Unstick Ingress Stuck in Deletion
If the ingress is stuck in Terminating, clear its finalizers:
kubectl patch ingress argocd-server-ingress -n argocd -p '{"metadata":{"finalizers":null}}' --type=merge
Note: Use this only when you intend to delete the ingress. If you want to keep it, removing finalizers while it's in deletion may leave orphaned AWS resources; fix the underlying issue instead.
8. Summary: Copy-Paste
Use this sequence when you know the ingress name is argocd-server-ingress:
# 1. Remove stale ssl-redirect (if blocking creation)
kubectl annotate ingress argocd-server-ingress -n argocd alb.ingress.kubernetes.io/ssl-redirect-
# 2. Clear finalizers (if stuck in Terminating)
kubectl patch ingress argocd-server-ingress -n argocd -p '{"metadata":{"finalizers":null}}' --type=merge
9. Troubleshooting
Issue: Ingress still has no ADDRESS after removing ssl-redirect
Solution: Check ALB controller logs (step 5). Ensure the controller is running, has IAM permissions, and that subnet tags (for internal/private ALBs) are correct. Add certificate-arn if you need HTTPS.
Issue: Ingress reappears or is recreated by Argo CD
Solution: Update the Argo CD manifest or Helm values to remove the ssl-redirect annotation and add certificate-arn if needed. Let Argo CD reconcile; avoid patching in a loop.
Issue: Orphaned load balancer or security groups after clearing finalizers
Solution: Manually delete the ALB and security groups in the AWS console if the controller didn't clean them up. Consider fixing the controller before force-deleting ingresses.
10. References
- AWS Load Balancer Controller: https://kubernetes-sigs.github.io/aws-load-balancer-controller/
- Argo CD: https://argo-cd.readthedocs.io/
- Kubernetes Ingress: https://kubernetes.io/docs/concepts/services-networking/ingress/
Top comments (0)