Можно ли установить GID / UID для хранилища файлов в GKE? - PullRequest
1 голос
/ 13 марта 2020

Я хочу использовать FileStore в GKE, используя PV C и PV, основанные на этом официальном do c: https://cloud.google.com/filestore/docs/accessing-fileshares

Мое приложение не работает как root, поэтому я хотел бы установить, какой GID / UID используется для монтирования тома в контейнерах.

Я знаю о некоторых альтернативах, используя InitContainer или отдельное промежуточное ПО NFS, но хотел бы избежать другой движущейся части .

1 Ответ

2 голосов
/ 16 марта 2020

Kuberentes в настоящее время не предоставляет функциональные возможности для установки прав на монтирование тома / владельца с использованием спецификации модуля. Все поля и их описание можно найти в kubernetes api reference .

Наиболее часто используемый метод, который вы можете найти в inte rnet, использует initContiners. На самом деле не существует другого лучшего способа сделать это.

Вы также упоминали, что хотели бы избегать использования chown в каждом развертывании. Вы можете избежать этого, используя оператор if в bash, как в следующем примере, так что chown выполняется только при необходимости:

---
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  volumes:
    - name: my-pv-storage
      persistentVolumeClaim:
        claimName: my-pv-claim
  initContainers:
    - name: init-myservice
      image: busybox:1.28
      command: ['sh', '-c', 'OWNER=`stat -c "%U:%G" /mnt/data` && if [ $OWNER == "root:root" ]; then chown -R 1000:3000 /mnt/data; fi']
      volumeMounts:
        - mountPath: "/mnt/data"
          name: my-pv-storage
  containers:
    - name: my-pv-container
      image: my-image
      volumeMounts:
        - mountPath: "/mnt/data"
          name: my-pv-storage
      securityContext:
        runAsUser: 1000
        runAsGroup: 3000

Дайте мне знать, что это было полезно.

...