我正在尝试将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