首页 > 解决方案 > 如何自动化 helm 包 -- 在 bash 中以非交互方式签名

问题描述

我在没有期望的机器上编写 bash 脚本。该脚本自动构建 helm (v2.9.1) 图表。

我必须在脚本中运行它的部分

helm package --sign --key 'mykey' --keyring 'path/to/keyring' -d chartdir chart

并且因为 helm 提示输入我为使用出处文件而创建的 gpg 密钥的密码(要求),所以我无法围绕密码的请求编写脚本,我想单独提示,因为脚本是 CI 的一部分/CD 构建链。

我试过使用

yes $promptedPassPhrase | helm package --sign...

我得到了

xrealloc: cannot allocate 18446744071562067968 bytes (237568 bytes allocated)

我也试过普通的

echo $promptedPassPhrase | helm package --sign...

我得到了

Error: inappropriate ioctl for device

我也试过script,得到了同样的回应。由于我对服务器没有期望,因此我无法expect绕过它,所以我对如何自动化 helm package 命令感到困惑,并且不会使用没有密码的密钥,因为这是不好的做法。

标签: bashgnupgkubernetes-helm

解决方案


我不知道这种情况持续了多长时间,也不知道它适用于哪些版本,但这个文档页面说:

如果您的 PGP 私钥有密码,[...] 您可以将HELM_KEY_PASSPHRASE环境变量设置为该密码,以防您不希望被提示输入密码。

这对我有用v2.13.1。看起来它是在2018 年 10 月添加的,所以我的猜测是它首先在v2.12.0-rc.1中可用。

尽管这并不能直接回答 OP 的问题(因为他们询问了关于v2.9.1),但它有望帮助任何最终来到这里的人,因为他们(像我第一次一样)错过了文档中的那一行。


推荐阅读