4refael opened a new pull request, #1007:
URL: https://github.com/apache/apisix-helm-chart/pull/1007

   ### Problem
   
   During a rolling update in etcd mode, new pods receive traffic before they 
are ready. For a short time they answer 404. The cause: the readiness probe is 
only a TCP check on the proxy port. The pod becomes Ready when nginx starts to 
listen. At that moment, the workers have not loaded the routes from etcd yet.
   
   APISIX already has a correct readiness endpoint: `/status/ready`. It returns 
200 only after every worker has loaded the configuration. It works in etcd mode 
too, since APISIX 3.13.0 (apache/apisix#12200). But the chart enables this 
endpoint only for `role_traditional` + `config_provider: yaml`.
   
   There is a second problem, at shutdown. The chart lets you configure a 
graceful drain (`apisix.nginx.workerShutdownTimeout`), but it does not let you 
configure `terminationGracePeriodSeconds`. So Kubernetes always kills a 
stopping pod after 30 seconds, even when the drain timeout is longer.
   
   ### Changes
   
   - New value `apisix.status.enabled`: enables the status endpoint in every 
deployment mode. When it is on, the default readiness probe uses `httpGet 
/status/ready` instead of the TCP check.
   - New values: `terminationGracePeriodSeconds`, `minReadySeconds`, 
`progressDeadlineSeconds`, and `livenessProbe` / `readinessProbe` overrides.
   - Chart version 2.17.0 → 2.18.0. README regenerated with helm-docs.
   
   ### Related work
   
   Closes #951. Issue #951 and PR #952 ask for a configurable `livenessProbe`. 
This PR includes one, as a full-map override value instead of a fixed-fields 
toggle, so users control every probe field. The new values live at the top 
level of values.yaml, next to the existing `updateStrategy`.
   
   ### No change for existing users
   
   All defaults keep the current behavior. A render with default values is 
identical to master, except that `progressDeadlineSeconds: 600` and 
`terminationGracePeriodSeconds: 30` are now written explicitly — both are the 
Kubernetes defaults. Note: `terminationGracePeriodSeconds` is part of the pod 
template, so the first upgrade to this chart version restarts the APISIX pods 
one time. I verified the renders for the etcd, traditional yaml, DaemonSet, and 
control_plane modes. `ct lint` passes.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to