Kubernetes JSON configMap not mounted



我正在尝试将JSON格式的configMap映射到Kubernetes中的docker映像我正在使用config-npm包来获取配置。

这个想法是,我将在/config目录中有一个文件development.json,配置包将从中获取它。这一切都在localhost中工作。配置文件的名称与NODE_ENV变量相同,我也在deployment.yaml 中设置了该变量

我使用默认名称空间

这是configMap的开始(我可以看到它是在谷歌kubernetes中创建的(

我正在运行ls是config目录,以查看development.json文件是否已安装,但尚未安装。我希望/config被替换,并且只包含development.json文件

我也尝试过使用subPath参数,但结果相同

我做错了什么?我应该在事件中看到configMap已挂载。除了当我删除configMap并尝试进行装载时,没有任何日志记录,所以我认为装载正在进行

apiVersion: v1
kind: ConfigMap
metadata:
name: config-development
namespace: default
data:
development.json: |
{
"production": false,

这是支架:

volumes:
- name: config-volume
configMap:
name: config-development
containers:
- name: salesforce-compare-api
image: XXXX
command: ["ls"]
args: ["config", "-la"]
imagePullPolicy: Always
env:
- name: NODE_ENV
value: "development"
volumeMounts:
- name: config-volume
mountPath: /config/development.json

通常,当无法安装configmap时,pod甚至不会启动。因此,它开始的事实表明,它已经安装好了。

无论如何,您的volumeMounts看起来都有问题。

volumeMounts:
- name: config-volume
mountPath: /config/development.json

这导致完整的configmap被挂载到名为development.json的文件夹中,而实际上您只想挂载一个文件。

为此使用子路径。

volumeMounts:
- name: config-volume
mountPath: /config/development.json
subPath: development.json

也就是说,如果容器中的config文件夹是空的,那么也可以删除子路径并将configmap装载到/config目录,因为它不会覆盖任何重要的内容。

volumeMounts:
- name: config-volume
mountPath: /config

最新更新