kubernetes 秘密项目未挂载为文件路径

kubernetes secret items not mounted as file path

我有以下 yaml:

        volumeMounts:
        - name: app-secret
          mountPath: /app
          readOnly: true
      volumes:
      - name: app-secret
        secret:
          secretName: app-secret
          items:
          - key: app-secret.json
            path: appsettings.secret.json

我希望秘密安装在 /app/appsettings.secret.json 上,但事实并非如此。我不知道它安装在哪里,容器崩溃了,我没有机会 kubectl exec 进入容器来检查秘密安装的位置。我的猜测是它擦除了 /app 的内容。感谢任何建议和见解。

您是否可以共享完整的 yaml 以查看它是否有其他问题并因此导致崩溃?

我已经在我的环境中试过了,效果很好,请看附件。

在我的环境中测试 - 见下图:

这个有效:

 volumeMounts:
        - name: app-secret
          mountPath: /app/appsettings.secret.json
          subPath: appsettings.secret.json
          readOnly: true
      volumes:
      - name: app-secret
        secret:
          secretName: app-secret
          items:
          - key: app-secret.json
            path: appsettings.secret.json

是的,你的假设是正确的。挂载到根目录下,这就是为什么我们通常将密文挂载在不同的文件夹下,比如 /senstivie。我从未尝试过 @KOk,但它看起来很有趣 - 如果它有效,我会很感兴趣!

无论如何,如果您想查看一个真实的工作示例 - 这是我构建的 OSS 项目的 volume mount definition and this is the Dockerfile(Kamus,一个秘密加密解决方案)。它类似于您的用例 - dotnet 核心,带有 appsettings.secrets.json。如果没有帮助,请告诉我。