istio/istio · error

converting values: %v

Error message

converting values: %v

What it means

commonutil.ToRenderValues failed while coalescing the component chart's default values with the user's vals map to build Helm's render values. Coalescing errors when user values conflict in type with chart defaults at the same path, typically a scalar overwriting a map node or the reverse.

Source

Thrown at operator/pkg/helm/helm.go:93

		Namespace: namespace,
	}

	caps := *common.DefaultCapabilities

	// overwrite helm default capabilities
	operatorVersion, _ := common.ParseKubeVersion("1." + strconv.Itoa(k8sversion.MinK8SVersion) + ".0")
	caps.KubeVersion = *operatorVersion

	if version != nil {
		caps.KubeVersion = common.KubeVersion{
			Version: version.GitVersion,
			Major:   version.Major,
			Minor:   version.Minor,
		}
	}
	helmVals, err := commonutil.ToRenderValues(chrt, vals, options, &caps)
	if err != nil {
		return nil, nil, fmt.Errorf("converting values: %v", err)
	}

	files, err := engine.Render(chrt, helmVals)
	if err != nil {
		return nil, nil, err
	}

	crdFiles := chrt.CRDObjects()
	if chrt.Metadata.Name == "base" {
		enableIstioConfigCRDs, ok := values.GetPathAs[bool](vals, "base.enableIstioConfigCRDs")
		if ok && !enableIstioConfigCRDs {
			crdFiles = []chartv2.CRD{}
		}
	}

	var warnings Warnings
	// Create sorted array of keys to iterate over, to stabilize the order of the rendered templates
	keys := make([]string, 0, len(files))

View on GitHub (pinned to 8dc789c5cf)

Solutions

  1. Find the conflicting path from the wrapped error and match the chart's structure
  2. Set leaf keys, e.g. --set spec.values.global.mtls.enabled=true instead of --set spec.values.global.mtls
  3. Diff your values tree against charts/<component>/values.yaml
  4. Remove values that duplicate entire map nodes and keep only overridden leaves

Example fix

# before
--set spec.values.global.mtls
# after
--set spec.values.global.mtls.enabled=true
Defensive patterns

Strategy: validation

Validate before calling

// Pre-flight: ensure user values coalesce with chart defaults
if _, err := commonutil.ToRenderValues(chrt, vals, options, &caps); err != nil {
	return fmt.Errorf("values conflict with chart defaults: %w", err)
}

Prevention

When it happens

Trigger: Setting a parent key that the chart defines as a map to a scalar, for example --set spec.values.global.mtls where the default is the map mtls.enabled, or YAML values writing gateways: false where the chart expects an object.

Common situations: Flattening or nesting mistakes in values files; --set applied to a parent instead of a leaf key; merging profiles with conflicting shapes.

Related errors


AI-assisted analysis of istio/istio@8dc789c5cf (2026-08-15). Data as JSON: /api/errors/1ef6d6756b449332. Report an issue: GitHub.