Skip to content

feat: expose rollout controls and the status endpoint in the apisix chart - #1007

Open
4refael wants to merge 1 commit into
apache:masterfrom
4refael:feat/expose-rollout-controls
Open

feat: expose rollout controls and the status endpoint in the apisix chart#1007
4refael wants to merge 1 commit into
apache:masterfrom
4refael:feat/expose-rollout-controls

Conversation

@4refael

@4refael 4refael commented Aug 29, 2026

Copy link
Copy Markdown

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.

…hart

Signed-off-by: refael iliaguyev <4refael@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add configurable livenessProbe support for APISIX pod

1 participant