Skip to content

fix(operator): backport frontend command argument fix to release/1.6.0 - #16814

Merged
nv-nmailhot merged 1 commit into
release/1.6.0from
codex/dyn-4945-cherry-pick-release-1.6.0
Oct 19, 2026
Merged

nv-nmailhot merged 1 commit into
release/1.6.0from
codex/dyn-4945-cherry-pick-release-1.6.0

Conversation

@julienmancuso

Copy link
Copy Markdown
Contributor

Refs DYN-4945.

Summary

Cherry-pick #16488 onto release/1.6.0 from commit a923032e21b79f85fcc628627a39526531a742e0.

Clear generated frontend arguments when a user supplies a command, preventing duplicate -m dynamo.frontend arguments and frontend crash loops. Apply the same behavior to frontend sidecars while preserving legacy EPP launch arguments. Includes regression tests and the API reference update. The cherry-pick applied without conflicts.

Validation

  • go test ./internal/dynamo/... -count=1 passed from deploy/operator on the release branch.
  • Docs lint passed for the changed DCD reference page (zero errors; five existing navigation warnings elsewhere).
  • git diff origin/release/1.6.0 --check passed.

โ€ฆ16488)

Signed-off-by: svc-glamr@nvidia.com <svc-glamr@nvidia.com>
Signed-off-by: GLAMR <svc-glamr@nvidia.com>
(cherry picked from commit a923032)
Signed-off-by: Julien Mancuso <jmancuso@nvidia.com>
@julienmancuso
julienmancuso requested review from a team as code owners October 19, 2026 18:50
@julienmancuso julienmancuso added Dynamo 1.6.0 cherry-pick:requested Fix requested for the release branch in code freeze labels Oct 19, 2026
@copy-pr-bot

copy-pr-bot Bot commented Oct 19, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@github-actions github-actions Bot added fix documentation Improvements or additions to documentation deployment::k8s Relates to dynamo deployment in kubernetes labels Oct 19, 2026
container.Args = nil
}

// Merge authored fields and environment variables into the component defaults.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

This comment only narrates the immediately following mergo.Merge and MergeEnvs operations; it records no non-obvious constraint and is redundant with the code.

๐Ÿค– AI Fix

Remove this comment.

<ParamField path="podTemplate" type="core/v1.PodTemplateSpec">
Complete Pod template shared by all roles of the component. It is mutually exclusive with `roles[*].podTemplate`. Every component must include `spec.podTemplate.spec.containers[name=main]` with a non-empty `image`. By default the operator injects command, environment, port, probe, resource, and volume-mount defaults into `spec.podTemplate.spec.containers[name=main]`, merging your overrides by name. Declaring `spec.podTemplate.spec.initContainers[name=runtime]` activates [Dynamo Sidecar Mode](#dynamo-sidecar-mode). Existing standard-mode components created without `spec.podTemplate.spec.containers[name=main].image` may retain that omission on unrelated updates. For DGD components whose runtime image has no parseable semantic-version tag, set `runtimeVersionOverride`. Other containers are user-managed and must specify their required fields, including `image`; `frontendSidecar` can explicitly select a regular container for frontend defaults. Replaces the ten separate per-component fields (`resources`, `envs`, `livenessProbe`, and so on) that existed in `v1alpha1`.

For `type: frontend`, a non-empty `main.command` replaces the default frontend invocation. Only the supplied `main.args` are passed to that command; omitted or empty `args` produce no arguments. The same rule applies to the container selected by `frontendSidecar`. Other component types retain their generated arguments when an authored command omits `args` or sets `args: []`, including legacy Go EPP components with `eppConfig`.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

The promise that omitted or empty args produce no arguments is incompatible with Kubernetes container semantics: when Args is empty, the runtime falls back to the image's CMD. Since the new merge logic sets Args to nil, a custom frontend image with a non-empty CMD will still pass those image arguments to the authored command, potentially recreating an invalid argv. State this fallback explicitly instead of promising an argument-free invocation.

๐Ÿค– AI Fix

Revise the command-ownership contract to say that omitted or empty args fall back to the container image's CMD, and require explicit non-empty args when callers must override that image default.

@nv-nmailhot
nv-nmailhot merged commit 90f1f3c into release/1.6.0 Oct 19, 2026
24 of 25 checks passed
@nv-nmailhot
nv-nmailhot deleted the codex/dyn-4945-cherry-pick-release-1.6.0 branch October 19, 2026 23:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cherry-pick:requested Fix requested for the release branch in code freeze deployment::k8s Relates to dynamo deployment in kubernetes documentation Improvements or additions to documentation Dynamo 1.6.0 fix size/L

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants