3

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

我的一个 pod 需要一个带有 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

4

1 回答 1

1

tl;博士; 您不能执行ConfigMap,它只是一个静态清单。请改用init 容器

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

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

鉴于您的描述,听起来您最好的选择是使用init 容器来检索凭据并将它们写入共享的emptyDir 卷,该卷与将使用凭据的应用程序一起安装到容器中。

于 2018-12-08T14:27:52.183 回答