何时在 Kubernetes 中使用 Secrets 而不是 ConfigMap?

问题描述 投票:0回答:4

最新一直在使用 Kubernetes 机密。 现在我们也有了 ConfigMap。

首选的前进方式是什么 - 秘密或配置映射?

附注经过几次迭代后,我们稳定在以下规则:

  • configMaps 是针对每个解决方案域的(可以在域内的微服务之间共享,但最终是单一用途的配置条目)

  • 秘密在解决方案域之间共享,通常代表第三方系统或数据库

kubernetes
4个回答
185
投票

我是这两个功能的作者。这个想法是你应该:

  1. Secrets 用于实际上是秘密的事物,例如 API 密钥、凭证等
  2. 使用 ConfigMaps 获取非机密配置数据

将来,秘密可能会有一些区别,例如轮换或支持使用 HSM 来支持秘密 API 等。一般来说,我们喜欢基于意图的 API,并且秘密数据与普通数据的意图肯定是不同的旧配置。


11
投票

实施中的一个显着差异是

kubectl apply -f

  • 如果数据未更改,则 ConfigMap 为“未更改”。
  • 秘密始终是“配置的” - 即使文件没有更改

-2
投票

Kubernetes 秘密 用于以加密形式存储信息。因此,即使进行任何未经授权的访问,攻击者也无法执行任何操作,因为他需要解密密钥。它们用于存储敏感信息。

Kubernetes 配置映射 用于在键值存储中存储非机密信息。 Pod 可以使用它们 cli、env 变量。


-8
投票

ConfigMaps 和 Secrets 都将数据存储为键值对。主要区别在于,Secrets 以 base64 格式存储数据,而 ConfigMaps 以纯文本存储数据

如果您有一些秘密数据,例如 API 秘密、sa 帐户等,那么您应该始终选择 Secrets 而不是 Configs。

如果您想使用环境变量进行一些应用程序配置,而您不想保密/隐藏这些环境变量,例如应用程序主题、基础平台 url 等,那么您可以使用 ConfigMaps

© www.soinside.com 2019 - 2024. All rights reserved.