Skip to content

refactor: update helm config to new format - #388

Merged
jtechapps merged 5 commits into
llm-d:mainfrom
evacchi:refactor-config-helm
Aug 10, 2026
Merged

refactor: update helm config to new format#388
jtechapps merged 5 commits into
llm-d:mainfrom
evacchi:refactor-config-helm

Conversation

@evacchi

@evacchi evacchi commented Aug 3, 2026

Copy link
Copy Markdown
Collaborator

What does this PR do?

Updates helm charts and docs to follow the config changes in #378. Stacked, pending merge there, and also cross-testing on llm-d-batch-gateway. Relevant commit is just 2b579b0

Why is this change needed?

#378 harmonizes configuration style for llm-d-async, this propagates the change to the Helm charts. The old Helm format still works, and also the old flags work for the time being. In v+2 we will remove the deprecated formats.

How was this tested?

  • Unit tests added/updated
  • Integration/e2e tests added/updated
  • Manual testing performed

Checklist

  • Commits are signed off (git commit -s) per DCO
  • Code follows project contributing guidelines
  • Tests pass locally (make test)
  • Linters pass (make lint)
  • Documentation updated (if applicable)

Related Issues

Follow up to #378, closes #284

Release note

Breaking: The Helm chart now configures the processor through the unified transport
surface. Select the backend with `ap.transport`
(`redis-pubsub` | `redis-sortedset` | `gcp-pubsub`) and configure it with a
single `ap.transportConfig` document (mirroring `--transport` /
`--transport-config`). Redis/Valkey credentials still come from `ap.redis.url`
or `ap.redis.secretName` (injected as `REDIS_URL`); leave `url` out of
`ap.transportConfig` to use them.

The deprecated per-backend values (`ap.messageQueueImpl`, the `ap.redis.*` /
`ap.gcpPubSub.*` request/queue fields, and `ap.otel.redisTracing`) still work —
the chart translates them into the transport config — and the install notes
print a migration warning when they are used. Either way the chart now emits
only `--transport` / `--transport-config`, so a default install no longer logs
per-flag deprecation warnings from the processor.

Deprecation Window: 2 versions from now.

@evacchi
evacchi force-pushed the refactor-config-helm branch from bbdaf4a to b3e3a9d Compare August 3, 2026 13:29
@evacchi
evacchi force-pushed the refactor-config-helm branch from b3e3a9d to 5e54186 Compare August 3, 2026 13:36
@evacchi
evacchi force-pushed the refactor-config-helm branch from 7ef4c84 to 41d81b3 Compare August 4, 2026 06:19
@evacchi
evacchi marked this pull request as ready for review August 4, 2026 06:20
Copilot AI lite review requested due to automatic review settings August 4, 2026 06:20

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the llm-d-async Helm chart, E2E fixtures, and docs to align with the unified transport configuration surface introduced in #378, so the chart emits only --transport / --transport-config (while still translating deprecated per-backend values for compatibility).

Changes:

  • Refactors the Helm chart to select/configure backends via ap.transport + ap.transportConfig, and synthesizes transport config from deprecated values when used.
  • Updates Helm unit tests and E2E values/manifest fixtures to the new transport config format.
  • Updates documentation and adds a Redis config-loading regression test; adds a release note entry.

Reviewed changes

Copilot reviewed 31 out of 31 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
test/e2e/yaml/llm-d-async-quota.yaml Switches E2E manifest args to --transport / inline --transport-config.
test/e2e/yaml/llm-d-async-composite.yaml Switches E2E manifest args to unified transport config (including poll interval).
test/e2e/helm/tier-priority.yaml Updates Helm E2E values to ap.transport / ap.transportConfig format.
test/e2e/helm/short-drain.yaml Updates Helm E2E values to unified transport surface.
test/e2e/helm/saturation.yaml Updates Helm E2E values to unified transport surface; keeps metrics/redis blocks.
test/e2e/helm/redis-gate.yaml Updates Helm E2E values to unified transport surface for a Redis gate case.
test/e2e/helm/quota.yaml Updates Helm E2E values to unified transport surface for quota gating.
test/e2e/helm/prometheus-query.yaml Updates Helm E2E values to unified transport surface for prometheus-query gating.
test/e2e/helm/multitenant.yaml Updates multitenant Helm E2E values to unified transport config.
test/e2e/helm/mt-merge.yaml Updates mt-merge Helm E2E values to unified transport config.
test/e2e/helm/integration.yaml Updates integration Helm E2E values to unified transport config.
test/e2e/helm/endpoint-scrape.yaml Updates endpoint-scrape Helm E2E values to unified transport config.
test/e2e/helm/composite.yaml Updates composite gating Helm E2E values to unified transport config.
test/e2e/helm/budget.yaml Updates budget gate Helm E2E values to unified transport config.
test/e2e/helm/benchmark.yaml Updates benchmark Helm E2E values to unified transport config.
test/e2e/helm/benchmark-pool-gate.yaml Updates benchmark pool gating Helm E2E values to unified transport config.
release-notes.d/unreleased/388.md Adds release note describing the Helm chart transport-config migration and deprecations.
pkg/redis/options_test.go Adds regression test ensuring REDIS_URL is a default (doesn’t override explicit config URL).
docs/guides/e2e-deploy/llm-d-async-values.yaml Updates the guide’s example values to the unified transport surface (including urlSecret).
docs/guides/e2e-deploy.md Updates narrative instructions to match new Helm values and secret handling.
charts/llm-d-async/values.yaml Documents new ap.transport/ap.transportConfig and marks legacy blocks deprecated.
charts/llm-d-async/tests/validation_test.yaml Adds Helm unittest coverage for new fail-fast transport validation.
charts/llm-d-async/tests/redis_secret_test.yaml Adds Helm unittest coverage for transportConfig/legacy Redis Secret creation behavior.
charts/llm-d-async/tests/observability_test.yaml Updates test defaults to satisfy new fail-fast validation via minimal transport config.
charts/llm-d-async/tests/deprecated_transport_test.yaml Adds Helm unittest coverage ensuring legacy values translate to unified transport args (no retired flags).
charts/llm-d-async/tests/deployment_test.yaml Updates and expands deployment unit tests around unified transport args and REDIS_URL injection.
charts/llm-d-async/templates/redis-secret.yaml Refactors Redis Secret creation to support new transportConfig.urlSecret.url path.
charts/llm-d-async/templates/NOTES.txt Adds install notes describing unified transport surface and migration warnings for deprecated values.
charts/llm-d-async/templates/ap-deployments.yaml Implements fail-fast validation + emits unified --transport / --transport-config args only.
charts/llm-d-async/templates/ap-configmap.yaml Removes Pub/Sub topics config file rendering (topics now inline in transport config).
charts/llm-d-async/templates/_helpers.tpl Adds transport selection + legacy synthesis helpers and URL-secret resolution helpers.
Suppressed comments (1)

charts/llm-d-async/templates/_helpers.tpl:188

  • In llm-d-async.redisSecretKey, if a user sets ap.transportConfig.urlSecret.name with an explicitly empty key (key: ""), the helper renders an empty secretKeyRef.key, producing an invalid Deployment. Treat empty as "url" (same as the "omitted" behavior).
{{- if and .Values.ap.transport (dig "urlSecret" "url" "" $ts) -}}
url
{{- else if and .Values.ap.transport (dig "urlSecret" "name" "" $ts) -}}
{{- dig "urlSecret" "key" "url" $ts -}}
{{- else if .Values.ap.redis.url -}}

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +5 to +8
{{- $newURL := "" -}}
{{- if .Values.ap.transport -}}{{- $newURL = dig "urlSecret" "url" "" (.Values.ap.transportConfig | default dict) -}}{{- end -}}
{{- $url := $newURL | default .Values.ap.redis.url -}}
{{- if $url }}
Comment on lines +154 to 158
{{- define "llm-d-async.usingDeprecatedRedisConn" -}}
{{- if or .Values.ap.redis.url .Values.ap.redis.secretName -}}
true
{{- end -}}
{{- $out | toJson -}}
{{- end }}
jtechapps
jtechapps previously approved these changes Aug 4, 2026
Signed-off-by: Edoardo Vacchi <evacchi@users.noreply.github.com>
Signed-off-by: Edoardo Vacchi <evacchi@users.noreply.github.com>
Signed-off-by: Edoardo Vacchi <evacchi@users.noreply.github.com>
Signed-off-by: Edoardo Vacchi <evacchi@users.noreply.github.com>
Signed-off-by: Edoardo Vacchi <evacchi@users.noreply.github.com>
@evacchi

evacchi commented Aug 10, 2026

Copy link
Copy Markdown
Collaborator Author

rebased/force-pushed

@jtechapps
jtechapps merged commit d049d5e into llm-d:main Aug 10, 2026
8 checks passed
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.

[Feature]: unify config across backends

3 participants