4

我目前通过 helm 图表在我的集群中安装了 Flux 和 helm 操作符。通量部署正在监视一个 git repo,其中我有一个 .flux.yaml,我通过通量部署git-path标志传递文件夹上下文。这用于运行 kustomize 以修补我要用于部署的值文件。其中一些环境具有通过 sos 加密的文件。

我已经配置了启用了 sops 的 Flux。sops/helm secrets 正在使用 aws kms 密钥,因此在本地,我承担了一个角色,我已授予该角色使用指定的 kms arn 进行加密/解密的权限。我遇到的问题是在 helm 部署之前解密这些秘密。我目前最终得到了最终 kubernetes 资源中的加密值。似乎找不到任何关于配置 aws 访问/秘密密钥以供通量方面的 sops 使用的其他文档,也找不到任何关于 helm 操作员可能通过 helm secrets 执行此操作的文档。任何提示将非常感谢!

4

1 回答 1

3

事实证明,解密秘密没有问题。Flux pod 使用节点角色运行 sops(我已使用必要的 kms 密钥授予对 decypt 的访问权限),并成功解密了秘密。我通过执行到 pod 并尝试sops -d包含我的秘密的文件来测试这一点。

问题最终是我实际上并没有将解密的文件传递给我的 helmrelease。我最终通过使用以下 .flux.yaml 完成了这项工作:

version: 1
patchUpdated:
  generators:
    - command: sops -d --output secrets.yaml secrets.enc.yaml && kustomize build .
    - command: rm secrets.yaml
  patchFile: ../base/flux-patch.yaml

我最初将我的秘密文件格式化为 helm 值文件,但改为更新它以便能够使用解密的值修补基本 helmrelease 文件值部分。这导致 helmrelease 使用所有解密的值。第二个命令删除解密后的 secrets.yaml 文件,这样它就不会最终被提交回 repo。

请记住,这会导致集群中的 helmrelease 包含您的所有机密,因此您需要相应地管理对 helmrelease 对象的访问。

于 2020-01-31T20:08:23.973 回答