Невозможно записать файл.Том монтируется как root - PullRequest
1 голос
/ 29 марта 2019

Я раскручиваю Pod (приходит с пользователем без прав root), который должен записывать данные в том.Том взят из PVC.

Определение pod простое

kind: Pod
apiVersion: v1
metadata:
  name: task-pv-pod
spec:
  volumes:
    - name: task-pv-storage
      persistentVolumeClaim:
       claimName: test-pvc
  containers:
    - name: task-pv-container
      image: jnlp/jenkins-slave:latest
      command: ["/bin/bash"]
      args: ["-c", "sleep 500"]
      ports:
        - containerPort: 80
          name: "http-server"
      volumeMounts:
        - mountPath: "/usr/share/nginx/html"
          name: task-pv-storage

Когда я exec в Pod и пытаюсь записать в /usr/share/nginx/html

Iget

jenkins@task-pv-pod:/usr/share/nginx/html$ touch test
touch: cannot touch ‘test’: Permission denied

Глядя на разрешения каталога

jenkins@task-pv-pod:~$ ls -ld /usr/share/nginx/html
drwxr-xr-x 3 root root 4096 Mar 29 15:52 /usr/share/nginx/html

Понятно, что ТОЛЬКО пользователь root может писать в /usr/share/nginx/html, но это не то, что я хочу.

Есть ли способ изменить разрешения для подключенных томов?

Ответы [ 2 ]

1 голос
/ 30 марта 2019

Контекст безопасности определяет привилегии и настройки контроля доступа для Блока или Контейнера. Просто попробуйте securityContext :

kind: Pod
apiVersion: v1
metadata:
  name: task-pv-pod
spec:
  securityContext:
    fsGroup: $jenkins_uid
  volumes:
    - name: task-pv-storage
      persistentVolumeClaim:
       claimName: test-pvc
...
1 голос
/ 29 марта 2019

Вы можете использовать initContainer для монтирования тома и изменения разрешений.InitContainer будет запущен до запуска основного контейнера (ов).Обычный шаблон для этого использования - иметь образ busybox (~ 22 МБ) для монтирования тома и запуска chown или chmod в каталоге.Когда основной контейнер вашего модуля запускается, том (ы) будут иметь правильные права владения / доступа.

В качестве альтернативы, вы можете рассмотреть возможность использования initContainer для вставки правильных файлов, как показано в этом примере .

Надеюсь, это поможет!

...