Azure / application-gateway-kubernetes-ingress

This is an ingress controller that can be run on Azure Kubernetes Service (AKS) to allow an Azure Application Gateway to act as the ingress for an AKS cluster.
https://azure.github.io/application-gateway-kubernetes-ingress
MIT License
677 stars 421 forks source link

Support readinessGates #995

Open tkinz27 opened 4 years ago

tkinz27 commented 4 years ago

Is your feature request related to a problem? Please describe. A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Readiness Gates allow the ingress controller to provide feedback to the kubernetes scheduler about when the load balancer is ready to remove the pod or add the pod. By providing this feedback, you can get nearly zero downtime rolling deployments.

See https://www.youtube.com/watch?v=Vw9GmSeomFg for a better explanation of the issue.

I have a situation where we have to set maxSurge on our deployments rolling update to 0 which makes this even more important (service uses a hostPort). So what happens is we need our pods to go completely away, then get added and fully become ready (meaning seen as healthy by the load balancer) before moving on with the next set of pods to upgrade. I am coming from AWS, and no amount of tuning the connection draining, preStop commands was able to completely remove the 502s until the alb-ingress-controller added support for readinessGates.

Describe the solution you'd like A clear and concise description of what you want to happen.

Something similar to alb-ingress-controller's readinessGate support.

lastcoolnameleft commented 3 years ago

@akshaysngupta Any thoughts/update on this?

fristedt commented 2 years ago

This would be a great feature and would make the tweaks described in this document less important: https://azure.github.io/application-gateway-kubernetes-ingress/how-tos/minimize-downtime-during-deployments/