секретные элементы kubernetes не смонтированы как путь к файлу

У меня такой ямл:

        volumeMounts:
        - name: app-secret
          mountPath: /app
          readOnly: true
      volumes:
      - name: app-secret
        secret:
          secretName: app-secret
          items:
          - key: app-secret.json
            path: appsettings.secret.json

Я полагаю, что секрет установлен на /app/appsettings.secret.json, но это не так. Я не знаю, где он установлен, и контейнер выходит из строя, и у меня нет возможности kubectl exec войти в контейнер, чтобы проверить, где установлен секрет. Я предполагаю, что он стирает содержимое /app. Любые советы и понимание приветствуются.


person Kok How Teh    schedule 19.07.2019    source источник
comment
проблема может быть в вашем containers[] разделе. Если нет, опишите свой модуль с помощью $ kubectl describe cmd.   -  person Shudipta Sharma    schedule 19.07.2019
comment
Приложение также запускается из папки / app? Потому что я думаю, что secret-mount заменит любое содержимое / app из вашего образа контейнера. Может быть, попробуйте смонтировать как / config или подобное.   -  person Hitobat    schedule 19.07.2019


Ответы (3)


Это работает:

 volumeMounts:
        - name: app-secret
          mountPath: /app/appsettings.secret.json
          subPath: appsettings.secret.json
          readOnly: true
      volumes:
      - name: app-secret
        secret:
          secretName: app-secret
          items:
          - key: app-secret.json
            path: appsettings.secret.json
person Kok How Teh    schedule 20.07.2019
comment
Поддерживает ли это добавление нескольких файлов? - person Astronaut; 09.12.2019
comment
Если вы создали одноэлементный секрет с kubectl create secret genetic --from-file ./something.ext, тогда key под items будет something.ext. Это прекрасно работает! - person rileymcdowell; 04.03.2021

Возможно ли для вас поделиться полным yaml, чтобы увидеть, есть ли у него другие проблемы, и из-за этого он вылетает?

Я пробовал это в своей среде, и он отлично работает, см. Прикрепленное изображение.

протестировано на моем env - см. следующий рисунок:

введите описание изображения здесь

person Salman Memon    schedule 19.07.2019
comment
Он перезаписывает содержимое папки / app? Я предполагаю, что это происходит, что приводит к сбою моего приложения, потому что / app является корнем приложения. - person Kok How Teh; 19.07.2019

Да, ваше предположение верно. Монтирование в корневую папку будет. Вот почему мы обычно монтируем секреты в другой папке, например /senstivie. Я никогда не пробовал @KOk, но выглядит интересно - интересно будет узнать, сработало ли это!

В любом случае, если вы хотите увидеть реальный рабочий пример - это определение монтирования тома, и это Dockerfile для проекта OSS, который я создал (Kamus, решение для шифрования секретов). Это похоже на ваш вариант использования - ядро ​​dotnet с appsettings.secrets.json. Пожалуйста, дайте мне знать, если это не помогло.

person Omer Levi Hevroni    schedule 21.07.2019