Kubernetes Secrets vs ConfigMaps

Evg*_*ich 56 kubernetes

一直在使用Kubernetes的秘密.现在我们也有ConfigMaps.

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

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

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

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

Pau*_*rie 106

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

  1. 将秘密用于实际秘密的事物,如API密钥,凭证等
  2. 将配置映射用于非秘密配置数据

在未来,可能会出现诸如轮换或支持秘密API与HSM等秘密的一些区别.通常我们喜欢基于意图的API,并且秘密数据与普通旧配置的意图明显不同.

希望有所帮助.

  • 是否可以在配置图中使用秘密?应用程序配置文件包含秘密数据和非机密数据是很常见的.例如,tomcat server.xml包含端口号(非机密)和关机密码(机密)......将它表示为单个资源会很好... (15认同)
  • 另一个问题是:如果我始终使用秘密而不是配置映射 - 这种方法的缺点/问题是什么? (8认同)
  • 一个有希望澄清的问题.因为看起来秘密仍然存储为纯文本(base64),所以如果你问我那么命名可能会有点误导.或者你能详细说明一下吗?我同意,基于意图的API是要走的路. (4认同)
  • @PaulMorie,我最后写了一个[合并的yamls实用程序](https://gitlab.com/pastdev/s2i/tree/master/clconf)来满足我的需求.因此,我们为容器提供带有所有非机密值的ConfigMap yaml,以及带有机密值的Secret yaml,然后使用它来合并它们并作为单个配置呈现.单独使用或与其他工具(如[confd](https://github.com/kelseyhightower/confd))一起工作... (3认同)
  • @TomasJansson 秘密现在支持静态加密:https://kubernetes.io/docs/tasks/administer-cluster/encrypt-data/ (2认同)
  • @PaulMorie 这个答案已经过去几年了。有没有什么发展?它们在实施方面仍然基本相同吗? (2认同)

Mic*_*ole 11

实施中的一个显着差异是kubectl apply -f

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