#secret #password-store #kubernetes #org #file #key #yaml

app kupepassgen

Passwordstore.org 到 k8s 机密

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 身份验证

MIT 许可证

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