Problem
The apisix-ingress-controller Helm chart 1.2.x renders three leader-election settings with camelCase names:
leader_election:
leaseDuration: 15s
renewDeadline: 10s
retryPeriod: 2s
APISIX Ingress Controller 2.1.0 accepts the YAML keys lease_duration, renew_deadline, and retry_period. Its configuration loader uses non-strict yaml.Unmarshal, so the rendered camelCase keys are silently ignored.
As a result:
- The chart's default
15s lease duration is not applied; the binary default 30s remains effective.
- The chart's default
10s renewal deadline is not applied; the binary default 20s remains effective.
- User overrides of
.Values.config.leaderElection.leaseDuration, renewDeadline, and retryPeriod do not affect controller behavior.
Reproduction
Render the default ConfigMap:
helm template test apisix/apisix-ingress-controller \
--show-only templates/configmap.yaml
The rendered config.yaml contains camelCase leader-election keys. Starting controller 2.1.0 with that configuration leaves the prefilled NewLeaderElection() defaults unchanged because those keys do not match the binary's explicit YAML tags.
Related default drift
The same chart surface contains additional defaults that should be reconciled with the controller or explicitly documented as intentional:
| Field |
Controller 2.1.0 |
Chart values.yaml |
Template fallback |
leader_election_id |
apisix-ingress-gateway-leader |
apisix-ingress-controller-leader |
apisix-ingress-controller-leader |
provider.sync_period |
1h |
1m |
1s |
server_addr |
:9092 |
Not exposed |
Not rendered |
enable_server |
false |
Not exposed |
Not rendered |
The template fallback for sync_period is a hidden third value that is used when the Helm value is absent or empty.
The cross-product API7/APISIX comparison and default-alignment decisions are tracked in api7/api7-ingress-controller#462. This issue is limited to the upstream APISIX chart and controller contract.
Expected behavior
- The chart should render configuration keys accepted by the controller.
- Every documented Helm override should change the effective controller configuration.
values.yaml, template fallbacks, and controller defaults should agree unless a chart-specific override is intentional and documented.
Proposed acceptance criteria
Evidence
Problem
The
apisix-ingress-controllerHelm chart 1.2.x renders three leader-election settings with camelCase names:APISIX Ingress Controller 2.1.0 accepts the YAML keys
lease_duration,renew_deadline, andretry_period. Its configuration loader uses non-strictyaml.Unmarshal, so the rendered camelCase keys are silently ignored.As a result:
15slease duration is not applied; the binary default30sremains effective.10srenewal deadline is not applied; the binary default20sremains effective..Values.config.leaderElection.leaseDuration,renewDeadline, andretryPerioddo not affect controller behavior.Reproduction
Render the default ConfigMap:
helm template test apisix/apisix-ingress-controller \ --show-only templates/configmap.yamlThe rendered
config.yamlcontains camelCase leader-election keys. Starting controller 2.1.0 with that configuration leaves the prefilledNewLeaderElection()defaults unchanged because those keys do not match the binary's explicit YAML tags.Related default drift
The same chart surface contains additional defaults that should be reconciled with the controller or explicitly documented as intentional:
values.yamlleader_election_idapisix-ingress-gateway-leaderapisix-ingress-controller-leaderapisix-ingress-controller-leaderprovider.sync_period1h1m1sserver_addr:9092enable_serverfalseThe template fallback for
sync_periodis a hidden third value that is used when the Helm value is absent or empty.The cross-product API7/APISIX comparison and default-alignment decisions are tracked in api7/api7-ingress-controller#462. This issue is limited to the upstream APISIX chart and controller contract.
Expected behavior
values.yaml, template fallbacks, and controller defaults should agree unless a chart-specific override is intentional and documented.Proposed acceptance criteria
lease_duration,renew_deadline, andretry_period.config.leaderElection.*value changes the loaded controller configuration.provider.syncPeriodvalue and template fallback with the controller default, or document why the Helm-installed behavior intentionally differs.leader_election_idoverride; include upgrade guidance if it changes.enableServerandserverAddrshould be exposed consistently.config.yamlthrough the controller parser so unknown or ineffective keys are detected.Evidence