【问题标题】:How can I pass a pointer to a file in helm upgrade command?如何在 helm upgrade 命令中传递指向文件的指针?
【发布时间】:2020-06-11 15:26:11
【问题描述】:

我有一个信任库文件(二进制文件),需要在 helm 升级期间提供。对于每个目标环境(dev、qa、staging 或 prod),此文件都不同。所以我只能在部署时提供这个文件。 helm upgrade --set-file 不接受二进制文件。这似乎是我在这里发现的问题:https://github.com/helm/helm/issues/3276。此信任库文件存储在 Jenkins 凭据存储中。

【问题讨论】:

  • 这是一个不同的问题 IMO,因为我上面的问题是关于在 helm upgrade 命令中使用 --set-file 标志。
  • 您可以在尝试使用该文件升级时提供日志吗?为此,请使用 --debug --verify 标志。
  • 我不记得该错误,但它类似于无效的格式/字符,因为它确实希望只包含 base64 字符串。
  • 你能用我给你看的标志重新运行命令吗?还是这个问题不再有效?

标签: jenkins kubernetes kubernetes-helm


【解决方案1】:

因为命令本身如下所述:

--set-file stringArray     set values from respective files specified via the command line (can specify multiple or separate values with commas: key1=path1,key2=path2)

了解The Format and Limitations of --set也很重要。

您看到的错误:Error: failed parsing --set-file data... 表示您尝试使用的文件不符合要求。请参见下面的示例:

--set-file key=filepath--set 的另一个变体。它读取 文件并将其内容用作值。它的一个示例用例是 将多行文本注入值而不处理缩进 在 YAML 中。假设你想创建一个具有一定价值的旅项目 包含 5 行 JavaScript 代码,您可以编写一个 values.yaml 喜欢:

defaultScript: |
  const { events, Job } = require("brigadier")
  function run(e, project) {
    console.log("hello default script")
  }
  events.on("run", run)

嵌入在 YAML 中,这使您更难使用 IDE 支持编写代码的功能和测试框架等。 相反,您可以将--set-file defaultScript=brigade.jsbrigade.js 包含:

const { events, Job } = require("brigadier")
function run(e, project) {
  console.log("hello default script")
}
events.on("run", run)

我希望它有所帮助。

【讨论】:

  • --set-file 选项不能只是一些任意文件是有道理的。
猜你喜欢
  • 2013-05-06
  • 2011-04-20
  • 2015-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-30
  • 2018-04-15
  • 2020-08-16
相关资源
最近更新 更多