使用 Sealed Secrets 加密 Kubernetes Secrets

如何在 Git 中存储 Secrets 资源

前面我们和大家提到过 GitOps 的实践,我们知道 GitOps 是提倡通过 Git 来管理所有的配置,通过声明式代码来对环境配置和基础设施进行版本管理。

在 Kubernetes 中我们知道可以使用资源清单文件来管理集群中的一资源对象,但是讲 Kubernetes 的 Secrets 数据存储在 Git 仓库中还是非常不妥的,毕竟也是非常不安全的。

Kubernetes Secrets 是用来帮助我们存储敏感信息的资源对象,比如密码、密钥、证书、OAuth Token、SSH KEY 等等。管理员可以通过创建 Secrets 对象,然后开发人员就可以在资源清单文件中非常方便的引用 Secrets 对象,而不用直接将这些敏感信息硬编码。

虽然这看上去非常方便,但是有 Secrets 的问题是它们只是简单的将这些敏感信息做了一次 base64 编码而已,任何人都可以非常容易对其进行解密获得原始的数据。所以我们说 Secrets 清单文件不能直接存储在 Git 源码仓库中,但是如果每次都去手工创建的话,这又使得我们的 GitOps 不是很流畅了。

为此 Bitnami Labs 创建了一个名为 Sealed Secrets 的开源工具来解决这个问题。

[阅读全文]