-
Notifications
You must be signed in to change notification settings - Fork 148
Closed
Labels
bugSomething isn't workingSomething isn't workingkubernetesItems related to KubernetesItems related to Kubernetesoperator
Description
Type: Regression
Introduced: November 10, 2025
Description
Environment variables defined in spec.podTemplateSpec.spec.containers[0].env are not transferred to the runconfig.json file or the resulting pods.
Root Cause
File: cmd/thv-operator/controllers/mcpserver_runconfig.go:86
func (r *MCPServerReconciler) createRunConfigFromMCPServer(m *mcpv1alpha1.MCPServer) (*runner.RunConfig, error) {
// ...
envVars := convertEnvVarsFromMCPServer(m.Spec.Env) // Only reads top-level Env!
// PodTemplateSpec.spec.containers[0].env is never read
// ...
}The function only reads m.Spec.Env (top-level field) and completely ignores environment variables nested in spec.podTemplateSpec.
Steps to Reproduce
- Create an MCPServer with environment variables in podTemplateSpec:
apiVersion: toolhive.stacklok.dev/v1alpha1
kind: MCPServer
metadata:
name: test-server
spec:
image: my-image:latest
podTemplateSpec:
spec:
containers:
- name: mcp
env:
- name: MY_CUSTOM_VAR
value: "test-value"- Check the runconfig ConfigMap:
kubectl get configmap test-server-runconfig -o jsonpath='{.data.runconfig\.json}' | jq '.env_vars'- Check the actual pod environment:
kubectl get pod test-server-0 -o jsonpath='{.spec.containers[0].env}' | jqExpected Behavior
Environment variables from spec.podTemplateSpec.spec.containers[0].env should be:
- Included in the runconfig.json file
- Present in the deployed container
Actual Behavior
Environment variables from podTemplateSpec are silently ignored. Only spec.env (top-level) variables are transferred.
Impact
- Breaks existing deployments: Configurations that worked before Nov 10, 2025 no longer work
- Silent failure: No warning or error is generated; variables are simply missing
- Workaround exists: Move env vars to top-level
spec.env(but this breaks existing configurations)
Timeline
- Before Nov 10, 2025: ✅ Working - Operator converted podTemplateSpec to CLI flags
- After Nov 10, 2025: ❌ Broken - Operator only reads top-level fields for runconfig.json
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't workingkubernetesItems related to KubernetesItems related to Kubernetesoperator