Сценарий Bash, смонтированный как configmap с разрешениями 777, не может быть запущен - PullRequest
0 голосов
/ 10 сентября 2018

Это может быть просто, но я не могу понять, почему скрипт bash, смонтированный как configmap, не может быть запущен от имени пользователя root:

root@myPodId:/opt/nodejs-app# ls -alh /path/fileName 
lrwxrwxrwx 1 root root 18 Sep 10 09:33 /path/fileName  -> ..data/fileName

root@myPodId:/opt/nodejs-app# whoami
root

root@myPodId:/opt/nodejs-app# /bin/bash -c /path/fileName
/bin/bash: /path/fileName: Permission denied

Я предполагаю, но я думаю, что, как и в случае с Docker, корень в контейнере не является действительным корнем и работает больше как учетная запись псевдокорня.

Если это так, и файл не может быть запущен таким образом, как бы вы включили сценарий без необходимости повторного создания контейнера Docker при каждом изменении сценария?

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Не удивительно, что вы не можете запустить скрипт, который смонтирован как ConfigMap. Название самого ресурса (ConfigMap) должно было заставить вас не использовать его. В качестве обходного пути вы можете поместить свой скрипт в некоторое git-репо, затем смонтировать EmptyDir в InitContainer, который клонирует репозиторий с помощью git, а затем смонтировать EmptyDir в контейнер Pod. InitContainer будет загружать последнюю версию каждый раз при создании контейнера

0 голосов
/ 10 сентября 2018

Хорошо, поэтому у меня нет ссылок на документацию, однако файлы конфигурации определенно смонтированы в файловой системе ReadOnly. Я пришел к выводу, что содержимое файла нужно поместить в другой файл в месте, где локальный корень может написать /usr/local в моем случае, и таким образом можно запустить файл.

Если кто-нибудь придумает более умное решение, я отмечу его как правильный ответ.

...