Kubernetes JSON configMap не смонтирован

Я пытаюсь сопоставить configMap в формате JSON с моим изображением докера в Kubernetes. Я использую пакет config npm для получения конфигураций.

Идея состоит в том, что у меня будет файл development.json в каталоге /config, оттуда его подхватит пакет конфигурации. Все это работает на локальном хосте. Имя файла конфигурации совпадает с именем переменной NODE_ENV, которую я также устанавливаю в файле deployment.yaml.

Я использую пространство имен по умолчанию

Это начало configMap (я вижу, что он создан в google kubernetes)

Я запускаю ls — это каталог конфигурации, чтобы увидеть, был ли смонтирован файл 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
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
1
0
28
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Обычно, когда configmap не удается смонтировать, pod даже не запускается. Так что тот факт, что он запустился, показывает, что он смонтировался.

В любом случае ваш volumeMounts выглядит проблематично.

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

Это привело к тому, что полная карта конфигурации была смонтирована в папку с именем development.json, в то время как на самом деле вы хотите смонтировать только один файл.

Используйте для этого подпуть.

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

Тем не менее, если ваша папка config внутри контейнера в противном случае пуста, вы также можете удалить подпуть и смонтировать configmap в каталог / config, поскольку он не переопределит ничего важного.

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

Я пробовал, то же самое. Файл development.json отсутствует в каталоге /config. Каталог /config не пуст, но я читал, что если вы сделаете это без subPath, весь каталог /config в контейнере докера будет заменен смонтированными данными. Это то, чего я хочу достичь.

jani_r 09.04.2022 10:11

Если вы хотите добиться этого, используйте второй представленный вариант. Кроме этого, можете ли вы запустить модуль и выполнить команду ls в /config, чтобы отобразить его содержимое? Вы можете добавить это к своему вопросу, возможно. Также покажите полную команду, которую вы используете, чтобы получить вывод ls.

The Fool 09.04.2022 10:15

@jani_r, вы уверены, что не путаете абсолютный и относительный пути? это относительно args: ["config", "-la"] . Должно быть args: ["/config", "-la"], если ваш рабочий каталог не является корнем контейнера.

The Fool 09.04.2022 10:19

Другие вопросы по теме