如何从 Kubernetes ConfigMap 中执行 shell 命令?

How to execute shell commands from within a Kubernetes ConfigMap?

我正在使用 Helm 图表创建应用程序并将其部署到我的 K8s 集群中。

我的一个 pods 需要一个带有 SDK 密钥的配置文件才能正常启动和运行。此 SDK 密钥被视为机密并存储在 AWS Secret Manager 中。我的 Docker 图片中没有包含秘密数据。我希望能够在运行时挂载这个配置文件。在这种情况下,ConfigMap 似乎是一个不错的选择,除了我无法弄清楚如何在图表安装期间从 Secrets Manager 获取 SDK 密钥。我的 ConfigMap 的一部分如下所示:

   data:
      app.conf: |
      [sdkkey] # I want to be able to retrieve sdk from aws secrets manager

我正在寻找编写 shell 命令以使用 AWS CLI 获取机密的方法,但还没有找到从 ConfigMap 中执行 shell 命令的方法。

有什么想法或替代解决方案吗?

干杯 K

tl;dr; 您不能改为执行 ConfigMap, it is just a static manifest. Use an init container

ConfigMaps 是一个静态清单,可以从 Kubernetes API 读取或在运行时作为文件或环境变量注入到容器中。无法执行 ConfigMap。

此外,ConfigMaps 不应该用于机密数据,Kubernetes 有一个名为 Secrets 的特定资源可用于机密数据。它可以以类似于 ConfigMap 的方式使用,包括作为卷安装或作为容器中的环境变量公开。

根据您的描述,听起来您最好的选择是将 init container to retrieve the credentials and write them to a shared emptyDir Volume 与将使用凭据的应用程序一起安装到容器中。