【问题标题】:Is it possible to mount secrets to pods ONLY during runtime?是否可以仅在运行时将秘密挂载到 pod?
【发布时间】:2020-11-21 06:01:46
【问题描述】:

我们的应用程序仅在运行时或创建 pod 期间需要机密信息。一旦 Pod 启动并启动,就不再需要秘密。

我尝试从环境变量中加载机密,然后通过脚本取消设置它们,但是如果您执行到容器中,则机密在每个新会话中都可用。

我目前正在研究将挂载文件作为秘密,并想知道是否有可能仅在运行时以某种方式将秘密传递给容器,并在 pod 启动并运行后将其删除?也许我可以在 pod 运行后卸载秘密?

我还应该指出,该 pod 正在一个精简版的 centos 8 映像之上运行一个应用程序。

【问题讨论】:

    标签: kubernetes kubernetes-secrets


    【解决方案1】:

    您不能在 Pod 运行时卸载 Secret。 (设计是任何对秘密的更新都会立即反映出来)

    但是,您可以做的是使用一个 initContainer,它会挂载秘密。该 initContainer 和您的主容器也都挂载了一个 emptyDir 卷,它是临时的。 Init 可以复制秘密,主容器可以读取它们然后删除它们。

    我怀疑这会对失败做出严重反应,您可能需要将 Pods restartPolicy 更改为 Never,因为如果主容器失败,initContainer 将不会再次运行,并且当它重新启动时,它现在不会有它可以使用的秘密。

    所有这些都假设您的主容器需要查看这些秘密。如果您可以在 initContainer 期间执行所需的操作,那么如果未安装它们,主容器将永远不会看到这些秘密 - 只需在 initContainer 中使用它们即可。

    https://kubernetes.io/docs/concepts/workloads/pods/init-containers/

    【讨论】:

    • 这很有趣。初始化容器似乎可以做到这一点,但如果这样做的影响是我们将失去优雅失败的能力(无论出于何种原因重新启动 pod),那么麻烦可能不值得。我可能只需要安装秘密并将其锁定。我会对此进行调查并回复我的结果
    猜你喜欢
    • 2021-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 2022-11-09
    • 1970-01-01
    相关资源
    最近更新 更多