Deployment is still progressing since Ingress resource is not considered as synced
Describe the bug
We deploy an application in an "On Premise" Kubernetes using nginx Ingress. When deploying an application through Argo, the ingress object is still syncing although the application is available behind the Ingress.
Consequently, our deployment is still progressing in Argo.
We think that this is related to that PR https://github.com/argoproj/argo-cd/pull/1053/files#diff-d5a0105b0157a44898f0cd002d7d827dR157 and that issue https://github.com/argoproj/argo-cd/issues/997 .
Our ingress controller is nginx and each ingress has the following status (which is a healthy status according to us):
...
status:
loadBalancer: {}
To Reproduce
kind: Ingress
metadata:
name: my-ingress
namespace: myns
spec:
rules:
- host: whatever.example.com
http:
paths:
- backend:
serviceName: my-service
servicePort: 80
tls:
- hosts:
- whatever.example.com
Expected behavior
The ingress should be deployed in the Kubernetes cluster, and still be syncing in Argo. The Application deployment should still be progressing.
Screenshots
If applicable, add screenshots to help explain your problem.
Version
argocd: v1.0.1+5fe1447.dirty
BuildDate: 2019-05-28T17:26:35Z
GitCommit: 5fe1447b722716649143c63f9fc054886d5b111c
GitTreeState: dirty
GoVersion: go1.11.4
Compiler: gc
Platform: linux/amd64
argocd-server: v1.0.1+5fe1447.dirty
BuildDate: 2019-05-28T17:27:38Z
GitCommit: 5fe1447b722716649143c63f9fc054886d5b111c
GitTreeState: dirty
GoVersion: go1.11.4
Compiler: gc
Platform: linux/amd64
Ksonnet Version: 0.13.1
Logs
/tmp/argocd-linux-amd64 app list
NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY CONDITIONS
white-application https://kubernetes.default.svc whiteapp-development default Synced Progressing <none> <none>
/tmp/argocd-linux-amd64 app get white-application
Name: white-application
Project: default
Server: https://kubernetes.default.svc
Namespace: whiteapp-development
URL: https://cd.devops.caas.cagip.group.gca/applications/white-application
Repo: https://scm.saas.cagip.group.gca/cagip/devops/tools-dashboard
Target: HEAD
Path: deploy
Sync Policy: <none>
Sync Status: Synced to HEAD (2b1892f)
Health Status: Progressing
GROUP KIND NAMESPACE NAME STATUS HEALTH
apps Deployment whiteapp-development tools-dashboard Synced Healthy
extensions Ingress whiteapp-development tools-dashboard Synced Progressing
Service whiteapp-development tools-dashboard Synced Healthy
Have you thought about contributing a fix yourself?
Yes :)
Open Source software thrives with your contribution. It not only gives skills you might not be able to get in your day job, it also looks amazing on your resume.
If you want to get involved, check out the
contributing guide, then reach out to us on Slack so we can see how to get you started.
Please see. https://argoproj.github.io/argo-cd/faq/
You can use this for the Ingress (thank you @stevesea )
resource.customizations: |
extensions/Ingress:
health.lua: |
hs = {}
hs.status = "Healthy"
return hs
This is perfect, many thanks :) @stevesea !
I'm facing the same issue, can you explain where you set this block @alexec ? is this in the argo configmap?
yes, it's in the argocd-cm configmap. Here's the relevant section of the documentation: https://argoproj.github.io/argo-cd/operator-manual/health/#way-1-define-a-custom-health-check-in-argocd-cm-configmap
Huh, i don't seem to be able to get this to work, i see the snippet i added in the argocd-cm configmap correctly, i rebooted the argocd-server pods and im still seeing my ingress as progressing. What am i missing? This is with 1.5.1.
Me either, I don't know how to troubleshoot this. I added the resource customization, reloaded all pods related to argoCD.
I'm using HA-Proxy's ingress controller and Kubernetes' Ingress (not some fancy custom resource).
Kubernetes v1.17.0
ArgoCD v1.5.0+bdda410
argocd-cm :
data:
resource.customizations: |
Ingress:
health.lua: |
hs = {}
hs.status = "Healthy"
return hs
I tried unsuccessfully with Ingress and extensions/Ingress.
Hi. You need to make sure to apply the resource customization to the correct resource type.
I think recent versions of Kubernetes moved the Ingress resource type from the extensions API to the networking.k8s.io API, so what was
resource.customizations: |
extensions/Ingress:
before should now be
resource.customizations: |
networking.k8s.io/Ingress:
Hi,
You're right ! It now works :)
Thanks a lot for your quick answer !
Encountered the same problem, the above method can solve this problem, but there is a new problem. can not delete the application version 1.5.4
Most helpful comment
Hi. You need to make sure to apply the resource customization to the correct resource type.
I think recent versions of Kubernetes moved the
Ingressresource type from theextensionsAPI to thenetworking.k8s.ioAPI, so what wasbefore should now be