kubernetes - 如何将单个不同的 Secret 安装到 StatefulSet 管理的每个 Pod 中?

标签 kubernetes statefulset kubernetes-statefulset

我有 3 个不同的 Kubernetes Secret,我想将每个 Secret 挂载到自己的 Pod 中,由具有 3 个副本的 StatefulSet 管理。

是否可以配置 StatefulSet,使每个 Secret 都挂载到自己的 Pod 中?

最佳答案

不是真的。 StatefulSet(以及与此相关的任何工作负载 Controller )仅允许单个 Pod 定义模板(它可以有多个容器)。问题在于 StatefulSet 被设计为具有 N 个副本,因此您可以拥有 N 个 secret 。它必须是一个 SecretStatefulSet:一个不同的 Controller 。

一些解决方案:

  • 您可以定义一个 Kubernetes secret其中包含所有 pod 所需的所有 secret 。缺点是您必须在 Pod 之间共享 secret 。例如:

    apiVersion: v1
    kind: Secret
    metadata:
      name: mysecret
    type: Opaque
    data:
      pod1: xxx
      pod2: xxx
      pod3: xxx
      ...
      podN: xxx
    
  • 使用类似 Hashicorp's Vault 的内容并使用 pod1pod2pod3、...podN 等 key 远程存储您的 secret 。您还可以使用HSM 。在我看来,这似乎是更可靠的解决方案,但实现起来可能需要更长的时间。

在所有情况下,您都必须确保 Secret 数量与 StatefulSet 中的 Pod 数量相匹配。

关于kubernetes - 如何将单个不同的 Secret 安装到 StatefulSet 管理的每个 Pod 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54876279/

相关文章:

c# - 在本地计算机或 kubernetes 上使用 docker 运行时无法访问 asp .net 核心应用程序

kubernetes - 如何查找 Pod 崩溃的原因?

kubernetes - 在 Kubernetes 上部署可扩展的应用程序,这要求每个副本 Pod 具有不同的参数

postgresql - Helm/Kubernetes - 状态集和权限

kubernetes - Kubernetes中的Redis部署

kubernetes - 为什么虚拟机实例上的 Kubernetes 集群 Google Cloud 无法将主机与 NodePort 连接?

kubernetes - kubectl - 未知授权机构签署的错误 x509 证书

kubernetes - 向 statefulSet 添加额外的 volumeClaimTemplate

kubernetes - 重启Kubernetes集群后RabbitMQ无法启动

kubernetes - StatefulSet 重新创建 pod,为什么?