Summary
deploy/helm/semantic-router/values.yaml has an observability: block indented as a child of resources: in two of its multi-document YAML sections (at lines 3876 and 9294). When Helm merges these documents into the final .Values.resources, the rendered Deployment spec carries .spec.template.spec.containers[name="semantic-router"].resources.observability, which the apps/v1 Deployment schema rejects with field not declared in schema. This blocks helm install and helm upgrade of the chart from rendering cleanly on any cluster that enforces the schema (kind, GKE, EKS - i.e., everywhere).
Reproduction
helm dependency build deploy/helm/semantic-router/
helm template vsr deploy/helm/semantic-router/ \
-n vllm-semantic-router-system | \
yq '.spec.template.spec.containers[] | select(.name=="semantic-router") | .resources'
The output includes an observability: key under the resources block:
limits:
cpu: "2"
memory: 10Gi
observability:
tracing:
enabled: false
exporter:
endpoint: jaeger:4317
insecure: true
type: otlp
provider: opentelemetry
resource:
deployment_environment: development
service_name: vllm-semantic-router
service_version: v0.1.0
sampling:
rate: 1
type: always_on
requests:
cpu: "1"
memory: 6Gi
Attempting helm install or helm upgrade against a real cluster fails:
Error: failed to create typed patch object (vllm-semantic-router-system/semantic-router;
apps/v1, Kind=Deployment): .spec.template.spec.containers[name="semantic-router"].resources.observability:
field not declared in schema
Root cause
The chart's values.yaml is a multi-document YAML file (----separated sections). Two of those sections have observability: indented at the same level as limits: and requests:, making it a child of resources::
Line 3876-3897 of deploy/helm/semantic-router/values.yaml:
resources:
limits:
memory: 10Gi
cpu: '2'
requests:
memory: 6Gi
cpu: '1'
observability: # <-- misindented under resources
tracing:
enabled: false
provider: opentelemetry
exporter:
type: otlp
endpoint: jaeger:4317
insecure: true
sampling:
type: always_on
rate: 1.0
resource:
service_name: vllm-semantic-router
service_version: v0.1.0
deployment_environment: development
The same pattern repeats at line 9294. Both are likely copy-paste errors from a refactor that intended observability: to be a top-level key alongside resources:, config:, etc. (an observability block does exist at top-level at line 602 of the same file and is correctly used by other templates).
Suggested fix
Move both observability: blocks at lines 3876 and 9294 out of resources: to top-level, OR merge their content into the existing top-level observability: at line 602 if that's the intended target. The misindented blocks set tracing.enabled: false anyway, so deleting them entirely (relying on the top-level block) is also a valid fix.
Workaround in flight
The multimodal-routing e2e profile shipping in #1881 sets resources.observability: null in its profile-level values overlay to mask the misindented chart-default content at the right path. That workaround is documented inline in the profile values with a pointer at this issue for retirement once the chart is fixed.
Related
Summary
deploy/helm/semantic-router/values.yamlhas anobservability:block indented as a child ofresources:in two of its multi-document YAML sections (at lines 3876 and 9294). When Helm merges these documents into the final.Values.resources, the rendered Deployment spec carries.spec.template.spec.containers[name="semantic-router"].resources.observability, which the apps/v1 Deployment schema rejects withfield not declared in schema. This blockshelm installandhelm upgradeof the chart from rendering cleanly on any cluster that enforces the schema (kind, GKE, EKS - i.e., everywhere).Reproduction
The output includes an
observability:key under the resources block:Attempting
helm installorhelm upgradeagainst a real cluster fails:Root cause
The chart's
values.yamlis a multi-document YAML file (----separated sections). Two of those sections haveobservability:indented at the same level aslimits:andrequests:, making it a child ofresources::Line 3876-3897 of
deploy/helm/semantic-router/values.yaml:The same pattern repeats at line 9294. Both are likely copy-paste errors from a refactor that intended
observability:to be a top-level key alongsideresources:,config:, etc. (anobservabilityblock does exist at top-level at line 602 of the same file and is correctly used by other templates).Suggested fix
Move both
observability:blocks at lines 3876 and 9294 out ofresources:to top-level, OR merge their content into the existing top-levelobservability:at line 602 if that's the intended target. The misindented blocks settracing.enabled: falseanyway, so deleting them entirely (relying on the top-level block) is also a valid fix.Workaround in flight
The
multimodal-routinge2e profile shipping in #1881 setsresources.observability: nullin its profile-level values overlay to mask the misindented chart-default content at the right path. That workaround is documented inline in the profile values with a pointer at this issue for retirement once the chart is fixed.Related