{"record":{"id":"1ef6d6756b449332","repo":"istio/istio","slug":"converting-values-v","errorCode":null,"errorMessage":"converting values: %v","messagePattern":"converting values: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"operator/pkg/helm/helm.go","lineNumber":93,"sourceCode":"\t\tNamespace: namespace,\n\t}\n\n\tcaps := *common.DefaultCapabilities\n\n\t// overwrite helm default capabilities\n\toperatorVersion, _ := common.ParseKubeVersion(\"1.\" + strconv.Itoa(k8sversion.MinK8SVersion) + \".0\")\n\tcaps.KubeVersion = *operatorVersion\n\n\tif version != nil {\n\t\tcaps.KubeVersion = common.KubeVersion{\n\t\t\tVersion: version.GitVersion,\n\t\t\tMajor:   version.Major,\n\t\t\tMinor:   version.Minor,\n\t\t}\n\t}\n\thelmVals, err := commonutil.ToRenderValues(chrt, vals, options, &caps)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"converting values: %v\", err)\n\t}\n\n\tfiles, err := engine.Render(chrt, helmVals)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tcrdFiles := chrt.CRDObjects()\n\tif chrt.Metadata.Name == \"base\" {\n\t\tenableIstioConfigCRDs, ok := values.GetPathAs[bool](vals, \"base.enableIstioConfigCRDs\")\n\t\tif ok && !enableIstioConfigCRDs {\n\t\t\tcrdFiles = []chartv2.CRD{}\n\t\t}\n\t}\n\n\tvar warnings Warnings\n\t// Create sorted array of keys to iterate over, to stabilize the order of the rendered templates\n\tkeys := make([]string, 0, len(files))","sourceCodeStart":75,"sourceCodeEnd":111,"githubUrl":"https://github.com/istio/istio/blob/8dc789c5cf17517c64e3c36cb3288230f149dfae/operator/pkg/helm/helm.go#L75-L111","documentation":"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.","triggerScenarios":"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.","commonSituations":"Flattening or nesting mistakes in values files; --set applied to a parent instead of a leaf key; merging profiles with conflicting shapes.","solutions":["Find the conflicting path from the wrapped error and match the chart's structure","Set leaf keys, e.g. --set spec.values.global.mtls.enabled=true instead of --set spec.values.global.mtls","Diff your values tree against charts/<component>/values.yaml","Remove values that duplicate entire map nodes and keep only overridden leaves"],"exampleFix":"# before\n--set spec.values.global.mtls\n# after\n--set spec.values.global.mtls.enabled=true","handlingStrategy":"validation","validationCode":"// Pre-flight: ensure user values coalesce with chart defaults\nif _, err := commonutil.ToRenderValues(chrt, vals, options, &caps); err != nil {\n\treturn fmt.Errorf(\"values conflict with chart defaults: %w\", err)\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Set leaf keys, not map parents, with --set","Diff custom values against charts/<component>/values.yaml","Keep only overridden leaves in values files"],"tags":["helm","values","merge","istio-operator"],"backgroundTag":null,"analyzedSha":"8dc789c5cf17517c64e3c36cb3288230f149dfae","analyzedAt":"2026-08-15T15:16:55.434Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}