如何让Kustomize的configMapGenerator生成无引号的整数值?
解决Kustomize生成ConfigMap时数值带引号的问题
你的kustomization.yaml配置如下:
kind: Kustomization configMapGenerator: - name: app-cm literals: - foo=bar - var1=1
执行kustomize build .后,生成的ConfigMap里var1的值被加上了双引号:
apiVersion: v1 data: foo: bar var1: "1" kind: ConfigMap metadata: name: app-cm-ghtd2cb8m9
想要让var1的值不带引号,有两种可行的方法:
方法一:使用files字段加载配置文件
- 先创建一个配置文件(比如
configs/app.conf),内容如下:
foo=bar var1=1
- 修改kustomization.yaml,用
files字段替代literals:
kind: Kustomization configMapGenerator: - name: app-cm files: - configs/app.conf
方法二:使用envs字段加载.env文件
- 创建一个
.env文件,内容如下:
foo=bar var1=1
- 修改kustomization.yaml,用
envs字段替代literals:
kind: Kustomization configMapGenerator: - name: app-cm envs: - .env
补充说明
其实在Kubernetes的ConfigMap中,data字段的所有值本质都是字符串,YAML里的"1"和1在实际解析时没有区别。Kustomize给纯数值加引号是为了明确标记它是字符串类型,避免YAML解析器将其识别为数值。如果只是为了输出格式的美观,用上面两种方法就能实现不带引号的效果。
内容的提问来源于stack exchange,提问作者Dim Dim
相关产品推荐
相关产品推荐

