Helm模板TLS字符串格式密钥无法生成正确YAML文件求助
解决Helm模板生成TLS证书YAML格式问题
问题原因
直接在模板中插入多行字符串{{ .Values.SERVER_KEY }}会导致YAML格式错误,因为没有使用YAML块标量符号|保留换行,且缺少匹配层级的正确缩进。
解决方案
修改Route.yml模板中的tls.key字段写法,结合YAML块标量与Helm的indent函数:
修改后的Route.yml模板
apiVersion: route.openshift.io/v1 kind: Route metadata: labels: type: sharded name: hello-openshift-edge namespace: hello-openshift spec: subdomain: hello-openshift tls: termination: edge key: | {{ .Values.SERVER_KEY | indent 6 }} to: kind: Service name: hello-openshift
关键说明
|是YAML块标量符号,用于完整保留字符串中的换行符indent 6表示将.Values.SERVER_KEY的每一行内容缩进6个空格,匹配YAML层级:key字段已缩进4个空格,后续内容需再缩进2个,总计6个空格以保证格式合法- 若证书字符串首尾存在多余空行,可添加
trim函数清理:{{ .Values.SERVER_KEY | trim | indent 6 }}
验证生成结果
模板渲染后会生成符合预期的YAML格式:
spec: subdomain: hello-openshift tls: termination: edge key: | -----BEGIN CERTIFICATE----- sadasdasdadasdadad asdsadsadasdsad -----END CERTIFICATE-----
补充说明
!Sub是AWS CloudFormation专属语法,Helm模板不支持该指令,因此无法生效。
内容的提问来源于stack exchange,提问作者Bhushan Phalak
相关产品推荐
相关产品推荐

