feat(apisix): expose more config options and document all values - #989
Merged
Conversation
Expose config options that were previously hardcoded or not configurable through the chart (proxy_protocol, proxy_cache zones, dns_resolver, ssl_session_tickets, real_ip_recursive, upstream keepalive, nginx timers, worker_shutdown_timeout, client_max_body_size, graphql.max_size, etcd watch_timeout/startup_retry, etc.), defaults unchanged from APISIX 3.17.0 defaults, and add helm-docs descriptions to every value so the generated README documents all parameters.
…t, lru, tracing and stream access log
There was a problem hiding this comment.
Pull request overview
This PR updates the APISIX Helm chart to expose additional APISIX/NGINX/etcd configuration knobs through values.yaml (and render them into the generated config.yaml ConfigMap), while also filling in previously-missing helm-docs descriptions so the generated README documents all chart values. It also bumps the chart version to reflect these template/value changes.
Changes:
- Expose additional APISIX configuration via
values.yaml(e.g., upstream status header behavior, PROXY protocol, proxy-cache zones/TTL, DNS resolver behavior, SSL session tickets, nginx timer limits + newnginx.http.*block, GraphQL max size, etcd watch/startup retry settings). - Render the newly exposed values into
charts/apisix/templates/configmap.yamlso settings take effect at runtime (not just documented). - Regenerate/expand
charts/apisix/README.mdvalue descriptions and bump chart version to2.16.0.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| charts/apisix/values.yaml | Adds new configurable values and improves/extends inline documentation for helm-docs. |
| charts/apisix/templates/configmap.yaml | Renders the newly configurable options into APISIX config.yaml output. |
| charts/apisix/README.md | Updates generated values table to include missing descriptions/new parameters. |
| charts/apisix/Chart.yaml | Bumps chart version to 2.16.0. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- don't render HPA when useDaemonSet is true (it targets a Deployment) - expose PROXY protocol listen ports on the gateway Service when set - fix grammar in show_upstream_status_in_response_header comment
AlinsRan
approved these changes
Jul 6, 2026
shreemaan-abhishek
approved these changes
Jul 6, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
While comparing the chart against APISIX 3.17.0's built-in defaults (
apisix/cli/config.lua), I found a bunch of config options that users can't set through values.yaml — some are hardcoded in the configmap template, some are not rendered at all. This PR exposes them, keeping every default identical to APISIX's own defaults so a render with default values produces the same effective config as before.Newly configurable:
apisix.showUpstreamStatusInResponseHeader,apisix.proxyProtocol.*(the commented-out block is now a real conditional block, includinglisten_http_port/listen_https_port),apisix.proxyCache(was hardcoded; the default zones now also include thememory_cachezone from APISIX defaults, which the hardcoded block dropped — that silently broke the proxy-cache plugin's memory strategy),apisix.deleteURITailSlash,apisix.normalizeURILikeServlet,apisix.lru.secret.*,apisix.tracing,apisix.dns.enableResolvSearchOpt,apisix.ssl.sslSessionTickets,apisix.nginx.workerShutdownTimeout/maxPendingTimers/maxRunningTimers, stream access log settings (apisix.nginx.logs.stream.*), a newapisix.nginx.http.*block (client timeouts,client_max_body_size,real_ip_*including the previously missingreal_ip_recursive,proxy_ssl_server_name, upstream keepalive settings,charset,variables_hash_max_size),apisix.graphql.maxSize, andetcd.watchTimeout/etcd.startupRetry.One behavior fix worth calling out:
apisix.dns.resolverswas rendered as a comment in the configmap, so setting it never had any effect. It now rendersdns_resolverwhen non-empty, and the default changed from a hardcoded public-DNS list to[](read/etc/resolv.conf), which matches the actual behavior today and is what you want in Kubernetes anyway.Also added helm-docs descriptions to every value that was missing one (~60 of them rendered with an empty description column), so the generated README now documents all parameters, and fixed a couple of misplaced comments (
hostNetwork,extraVolumeMounts).Verified by rendering the chart with default values and with the new options set, and running
apisix initconfig validation against theapache/apisix:3.17.0-ubuntuimage — all pass. Chart version bumped to 2.16.0.