Kubernetes JSON configMap 未安装

Kubernetes JSON configMap not mounted

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

我的想法是我将在 /config 目录中有一个文件 development.json,配置包将从那里获取它。这一切都适用于本地主机。配置文件的名称与 NODE_ENV 变量相同,我也在 deployment.yaml

中设置

我正在使用默认命名空间

这是configMap的开头(我可以看到它是在google 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

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

为此使用 subpath

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

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

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