Разрешения на запись тома

Как я могу предоставить пользователю без полномочий root полный доступ к пути смонтированного тома в Kubernetes (pod)?

Я использую том на хосте (путь /workspace/projects) и пишу в каталог, как показано ниже.

volumeMounts:
-name: workspace
 mountPath: /workspace/projects

Поскольку я копирую содержимое репозитория git в каталог /projects, git по умолчанию устанавливает разрешение 755. Я хочу установить разрешение 775, поскольку не могу писать в каталог /project.

Не могли бы вы сообщить мне, как лучше всего это сделать? Я видел InitContainers и не уверен, есть ли лучшее решение. Буду признателен за любую помощь! Заранее спасибо!


person testbg testbg    schedule 28.04.2020    source источник
comment
Спасибо! Поскольку это должно работать для любого пользователя, как я могу передать uid вошедшего в систему / текущего пользователя, который запускает yaml? Я думаю, что могу попробовать $uid или что-то в этом роде. Пожалуйста, дайте мне знать, если есть лучшее решение. Спасибо,   -  person testbg testbg    schedule 28.04.2020


Ответы (1)


Когда вам нужно запустить процесс внутри контейнера от имени пользователя без полномочий root, и вы монтируете том в pod. Но том имеет разрешение root:root.

Предоставить доступ конкретному пользователю initContainer можно одним из способов, например следующим

initContainers:
- name: volume-mount-permission
  image: busybox
  command: ["sh", "-c", "chmod 775 /workspace/projects && chown -R <user> /workspace/projects"]
  volumeMounts:
  -name: workspace
   mountPath: /workspace/projects

Вы также можете использовать контекст безопасности. Создайте пользователя и группу, добавьте пользователя в группу в Dockerfile и установите следующее в спецификации

spec:
  securityContext:
    runAsUser: <UID>
    runAsGroup: <GID>
    fsGroup: <GID>
person hoque    schedule 28.04.2020