许多kubernetes秘密与一个k8s秘密中的许多密钥

时间:2020-02-17 16:16:47

标签: kubernetes

想象一下一个复杂的部署,它具有许多需要连接到许多事物的依赖关系,而秘密仅在这个复杂的部署中使用当前的名称空间。

您建议您有很多秘密吗?

  • certificates.yaml
  • redis-password.yaml
  • gcp-credentials.yaml
  • 等...

或通过许多密钥进行部署的一个秘密:

apiVersion: v1
kind: Secret
metadata:
  name: all-the-secrets
data:
  redis-password: asdfa
  certificate-key: asdfadf
  certificatee-crt: adfadf
  ...

这些秘密将用作环境变量:

name: redis-password
valueFrom:
  secretKeyRef:
    name: secret-name
    key: key-name

为什么一个比另一个更好?

Ps。它们将全部用kubeseal加密

3 个答案:

答案 0 :(得分:2)

对于您的Pod,无论是秘密还是一个秘密,都没有区别。每当有变化时,您的广告连播就需要知道这一点。建议是,如果您的文件是独立的,则将它们分开,以免再次更改同一秘密,即使单个文件发生了更改。这只会帮助您管理机密。如果您想为不同的机密使用不同的RBAC,这也将有所帮助。 如果您不打算更改它们,那么一个秘密也是可以的。

答案 1 :(得分:1)

您应该只将敏感数据公开给使用该数据的容器。许多较小的秘密可以在管理许多不同对象的过程中进行权衡,但是它们具有重要的优势-隔离和分离关注点。

如果您选中docs,则仅将机密发送到需要Pod的节点。话虽这么说,对所有敏感数据都使用一个秘密会破坏目的,因为它将被部署在可能的所有节点上,并且所有数据都暴露给所有Pod,即使特定Pod不使用的数据也将可见。

答案 2 :(得分:1)

对于需要许多秘密的复杂部署,请检查cert-manager on kubernetes。证书管理员可以为多个应用程序创建和管理每个应用程序的证书,密钥和机密,这些机密可以安装在Pod中。

证书管理器还与各种来源相关联,例如Let's Encrypt,HashiCorp Vault,Venafi,一个简单的签名密钥对或自签名。更多信息位于: