使用 Helm 创建 ConfigMap 时如何指定 .Files.Get 的自定义路径

San*_*jay 5 kubernetes kubernetes-helm configmap

我正在创建一个配置图,如下所示

kubectl create configmap testconfigmap --from-file=testkey=/var/opt/testfile.txt

由于我使用 helm 图表,我想使用 YAML 文件而不是运行 kubectl 创建配置映射。我浏览了Kubernetes - 如何定义使用 yaml 中的文件构建的 ConfigMap?我们可以使用它.Files.Get来访问文件。但是 testfile.txt 需要成为 helm 的一部分。我想要有类似的东西

kind: ConfigMap
metadata:
  name: testconfigmap
data:
  fromfile: |-
{{ .Files.Get "/var/opt/testfile.txt" | indent 4 }}
Run Code Online (Sandbox Code Playgroud)

当“testfile.txt”位于主 helm 目录下时,它可以工作。所以,{{ .Files.Get "testfile.txt" | indent 4 }}有效但{{ .Files.Get "/var/opt/testfile.txt" | indent 4 }}无效。使用自定义路径时,ConfigMap 的值为空。

是否可以将文件放置在 helm 文件夹外部的自定义路径中,以便我可以在 Values.yaml 中定义路径并在 ConfigMap yaml 中读取它?

mar*_*rio 5

这是社区 Wiki 答案,因此请随意编辑它并添加您认为重要的任何其他详细信息。

\n

正如mdaniel在他的评论中已经指出的那样:

\n
\n

是否可以将文件放置在 helm\n文件夹之外的自定义路径中,否,因为helm 认为存在安全风险\xe2\x80\x93 mdaniel 2\n天前

\n
\n

您还可以将其与GitHub上的功能请求进行比较,您可以在其中找到非常相似的需求,简短描述如下

\n
\n

我有这个确切的需求。我的图表发布了从 \n/keybase 处的文件读取的秘密。该文件故意不在图表中。

\n

我相信 .Files.Get 的文件不应被假定为位于 \nchart ...

\n
\n

一条有趣的评论

\n
\n

lenalebt 于 2017 年 12 月 23 日发表评论 我很确定 . Files.Get无法任意访问文件系统是一项安全功能,因此我不认为当前的行为是错误的 - 它只是不能满足所有用例。

\n
\n

这个问题是很久以前创建的(2017 年 12 月 19 日),但最近又重新开放。甚至还有一些关于如何处理的具体建议

\n
\n

titou10titou10 在 4 月 2 日评论@misberner 你能确认\nusing--include-dir = 将允许我们使用\n.Files.Glob().AsConfig(),因此在 CM 中创建一个带有一个\n条目的 ConfigMap文件输入?

\n

@misberner 米斯伯纳于 4 月 2 日发表评论 是的,就是这个想法。从我的角度来看,一个开放的问题是指定的 --include-dir 是否引入了覆盖层,或者隐藏了之前参数和包本身中\n/下的所有内容。我对那个不是很执着,但更喜欢前者。

\n
\n

最近的评论给了一些希望,即该功能可能会在未来版本的 helm 中可用。

\n