New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[BUG] New azure-load-balancer-health-probe-request-path not working with rewrite-target #3621
Comments
Action required from @Azure/aks-pm |
@jdthorpe But that means changing this on the local nodeports that ingress controller uses then or ? I have one set already for HTTP. But still problem with timeouts reaching Public IP. |
@gionapaolini How did you patch the, defaultBackend.enabled: true Did you do it in a different way. Can you patch the deployment with this also, controller.service.annotations."service.beta.kubernetes.io/azure-load-balancer-health-probe-request-path"=/healthz". |
I've stumbled into this issue. I've been using Terraform to create the resources. I was wondering if anyone had a way to use Terraform to perform the switch from Otherwise this is literally the only manual step I have to take which is kinda lame. |
@LukeTouchFoundry How are you creating the resources with Terraform ? Are you using the Helm provider or something else ? |
@zioproto I am indeed using the Helm provider
What I have found is that even if I set the value in the Azure portal, it's being reset back to |
You need to look into the Kubernetes API logs and find the Identity of the API call that is reverting the value to |
This could be a useful query for you:
Make sure you have data in the |
Thank you @zioproto I'll give this a try and revert back. |
Hello LukeTouchFoundry, I have just recently found the same problem. I found that to make the /healthz annotation stick I edited the YAML file in Azure for the nginx-controller service and saved it. If you redeploy it will be lost of course. But it will not be overwritten every day I have found annotations: |
@LukeTouchFoundry @CHDR-Nigel could you folks please share the exact name and version of the Helm chart you are deploying ? I can't reproduce with the code shared by @LukeTouchFoundry :
because I dont have the |
There is some info in here... So what I have done is add this to my values file for nginx and it works. The /healthz annotation is deployed... |
@CHDR-Nigel can you please edit and fix the markdown link in your command above? |
Apologies - I don't post much - Should be fixed now. |
Here are my locals, sorry I should have provided these for context.
|
I've figured out my issue. The way I was passing the Helm values with set {} was incorrect. It was translating to the following annotations: Modifying the way I am setting the helm value is what has fixed it for me.
Note the Thank you @zioproto for your time <3 |
Describe the bug
After upgrading the cluster to version 1.25.6, our loadbalancer stopped working (EXTERNAL IP not reachable).
After a bit of research it seems that the health probe endpoint has changed for the azure load balancer, so we have added the annotation
service.beta.kubernetes.io/azure-load-balancer-health-probe-request-path: "/healthz"
to our ingress-nginx deployment.It seems to work, until we deploy our own ingress definition, which has a rewrite-target annotation
nginx.ingress.kubernetes.io/rewrite-target: /$2
This seems to be breaking the url path and is unable to reach the /healthz endpoint.
After some more research, we have found a workaround which is to enable the default backend (https://kubernetes.github.io/ingress-nginx/user-guide/default-backend/) on the nginx controller by setting the following
defaultBackend.enabled: true
, but it doesn't sound right since it's not reaching the azure health endpoint anymore but just the default backend that nginx deploys now.To Reproduce
Steps to reproduce the behavior:
Expected behavior
We expect to see that the EXTERNAL IP that is provided is reachable, but it is not.
Environment:
The text was updated successfully, but these errors were encountered: