【问题标题】:helm configmap include client script in values.yamlhelm configmap 在 values.yaml 中包含客户端脚本
【发布时间】:2019-09-15 23:32:41
【问题描述】:

我必须将客户端脚本文件包含为 configmap 并挂载到 pod 如何在 values.yaml 中为以下结构创建 configmap

app:
  server:
    client-cli1.sh: |
      #!/bin/bash
      echo "Hello World"
    client-cli2.sh: |
      #!/bin/bash
      echo "Hello World"

这是配置映射文件

apiVersion: v1
kind: ConfigMap
metadata:
  name: cli-config
data: 
{{ range  $key, $val:= .Values.app.server }}
  {{ $key }}: |
    {{ $val  }}
{{ end }}

我收到错误“将 YAML 转换为 JSON 时出错:yaml:第 14 行:找不到预期的 ':'” 注意:不能改变结构也不能使用 File 函数,因为构建发生在其他地方,只会提供 values.ymal。

如何解析这个。

【问题讨论】:

    标签: kubernetes kubernetes-helm


    【解决方案1】:

    试试这个:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: cli-config
    data: 
    {{ toYaml .Values.app.server | indent 2 }}
    

    【讨论】:

      【解决方案2】:

      您可以使用 helm template 和相同的 -f--set 标志来查看模板的输出。这是调试此类问题的关键,您可以在继续阅读之前尝试此操作以了解问题所在以及是否已修复。

      Kubernetes 使用的 YAML 文件对缩进非常敏感。 Helm 的 Go 文本/模板引擎并不特别了解 YAML 结构。您可能会看到脚本第二行的echo 根本没有缩进,这违反了 YAML 的缩进规则。

      对此有两个答案:

      1. 使用indent 模板函数来缩进您要注入的整个正文。请注意,这包括第一行,因此您不需要在 YAML 模板中缩进该行。

        data: 
        {{ range  $key, $val:= .Values.app.server }}
          {{ $key }}: |
        {{ $val | indent 4 }}
        {{ end }}
        
      2. Helm 有several undocumented extensions。特别是,您可以使用toJson 将字符串转换为 JSON 字符串,包括转义换行符等细节。 YAML 1.2 旨在成为 JSON 的超集,因此应该可以:

        data: 
        {{ range  $key, $val:= .Values.app.server }}
          {{ $key }}: {{ $val | toJson }}
        {{ end }}
        

        就此而言,您可以使用toYaml 让 Helm 为您完成繁重的工作:

        data:
        {{ .Values.app.server | toYaml | indent 2 }}
        

      检查helm template 以确保这些输出符合您的预期。第一个选项将生成更具可读性的 ConfigMap YAML;第二个更简洁的模板;但两者应该是等价的。

      【讨论】:

      • 当我运行第一行时,并没有只添加 echo 语句。是因为 #considered 作为 values.yaml 中的注释吗?
      • In a YAML block scalar, "内容可以安全地以制表符或“#”字符开头。"
      猜你喜欢
      • 2021-12-18
      • 2020-10-07
      • 2022-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-24
      • 2021-06-17
      相关资源
      最近更新 更多