5 个版本
0.2.1 | 2022年6月12日 |
---|---|
0.2.0 | 2022年6月11日 |
0.1.2 | 2022年5月26日 |
0.1.1 | 2022年5月21日 |
0.1.0 | 2022年5月16日 |
#797 in 身份验证
16KB
302 行
kupepassgen
将 passwordstore.org 密码转换为 kubernetes 机密的工具
用法
运行 kupepassgen secrets
,它将读取当前目录中的 kupepassgen.toml 文件,并将机密输出到 stdout。可以通过 kupepassgen > mysecrets.yaml
将其写入文件,但这不是默认行为,以防万一(这些是你知道的机密)
运行 kupepassgen --help
查看各种标志。
动机
这是一个方便地将机密提取出来用于与 kubernetes 一起使用的方法。密码存储允许您使用 git 和 gpg 来共享您的机密,同时管理机密而无需第三方服务。通过结合这两个工具,您不需要额外的提供商,并且可以使用简单且经过验证的 pass cli。
这个工具的动机关键部分是用于与 kustomize 一起使用的示例脚本。这是一个包装器,但可以用于构建部署,其中包含密码存储中的机密。密码存储甚至可以添加为 git 子仓库,这将允许在部署 git 仓库中精确跟踪机密。您需要设置一些环境变量才能使用此功能
贡献
该项目托管在 sourcehut 上,可以通过 ~btrepp/[email protected] 邮件列表接收补丁。如果报告错误或添加额外功能,它们必须附带相关的 cli 测试(见测试)。
CLI 测试将生成 gpg 密钥和密码存储配置。因此,它们应该是自包含的。
配置文件
所有配置都在 kubepassgen.toml
文件中完成,该文件可以存储多个机密,并将最终生成多个机密。
它使用 toml 格式,因为它易于阅读和解析。这也帮助从视觉上区分这个工具不是 k8s 的一部分。
不透明
[opaque.namespace.secret]
KEY="pass/path"
这将生成
apiVersion: v1
kind: Secret
type: Opaque
metadata:
name: name
namespace: namespace
data:
KEY: ...
注意:如果省略了命名空间,例如 [opaque.secret]
,则不会将其写入。如果不在乎命名空间,这很有用
Dockerconfigjson
意图是写入此内容,尽管尚未完成。
Kustomize
以下 shell 是使用 kustomize 的示例。它创建一个新的 kustomization 目录,并添加了机密。
这会将密码存储的秘密与基础进行修补,并打印到标准输出
#!/bin/sh
WORK=$(mktemp -d)
trap 'rm -rf -- "$WORK"' EXIT
BASE=$(realpath --relative-to=$WORK $PWD)
cat << EOF > $WORK/kustomization.yaml
resources:
- $BASE
patchesStrategicMerge:
- secret.yaml
EOF
kubepassgen > $WORK/secret.yaml
kustomize build $WORK
这同样以kubepassgen kustomize
的形式实现。为了方便,其行为与上述shell脚本类似
依赖项
~6–16MB
~219K SLoC