我有以下Helm模板定义:
{{- define "api.test-drive" -}}
{{- if not .Values.global.testDrive }}
{{- printf "%s" .Values.default.TEST_DRIVE | quote -}}
{{- else -}}
{{- printf "%s" .Values.global.testDrive | title | quote -}}
{{- end -}}
{{- end -}}在configmap模板中使用以下内容:
TEST_DRIVE: {{ include "api.test-drive" . }}以及global.testDrive: true的全局值。但是,当Helm执行此插入到configmap时,它将其存储为:
TEST_DRIVE:
----
%!S(Bool=True)不应该将global.testDrive从bool true转换为string,然后应用title和quote函数吗?目前还不清楚这里发生了什么。
发布于 2021-10-04 21:38:14
Go text/template printf模板函数直接传递给fmt.Printf(),但是fmt包定义的格式字符串与C的printf(3)函数略有不同。特别是,%s格式修饰符只为字符串类型的参数定义,并且您已经传递给它一个bool类型的参数;%!s(...)输出意味着处理%s参数时出错(参见格式错误)。
如果您想在这里使用printf,%v将将任意值转换为具有默认语法的字符串。
{{- printf "%v" .Values.global.testDrive | title | quote -}}
{{/* ^^ */}}Helm包括辅助对象,在这里可能更方便。
{{- .Values.global.testDrive | toString | title | quote -}}(在大多数情况下,...but 在引擎盖下面做的都是printf "%v"。)
https://stackoverflow.com/questions/69440600
复制相似问题