最新一直在使用 Kubernetes 机密。 现在我们也有了 ConfigMap。
首选的前进方式是什么 - 秘密或配置映射?
附注经过几次迭代后,我们稳定在以下规则:
configMaps 是针对每个解决方案域的(可以在域内的微服务之间共享,但最终是单一用途的配置条目)
秘密在解决方案域之间共享,通常代表第三方系统或数据库
我是这两个功能的作者。这个想法是你应该:
将来,秘密可能会有一些区别,例如轮换或支持使用 HSM 来支持秘密 API 等。一般来说,我们喜欢基于意图的 API,并且秘密数据与普通数据的意图肯定是不同的旧配置。
实施中的一个显着差异是
kubectl apply -f
:
Kubernetes 秘密 用于以加密形式存储信息。因此,即使进行任何未经授权的访问,攻击者也无法执行任何操作,因为他需要解密密钥。它们用于存储敏感信息。
Kubernetes 配置映射 用于在键值存储中存储非机密信息。 Pod 可以使用它们 cli、env 变量。
ConfigMaps 和 Secrets 都将数据存储为键值对。主要区别在于,Secrets 以 base64 格式存储数据,而 ConfigMaps 以纯文本存储数据。
如果您有一些秘密数据,例如 API 秘密、sa 帐户等,那么您应该始终选择 Secrets 而不是 Configs。
如果您想使用环境变量进行一些应用程序配置,而您不想保密/隐藏这些环境变量,例如应用程序主题、基础平台 url 等,那么您可以使用 ConfigMaps