Установка разрешений тома в многопользовательском кластере Kubernetes

Ситуация:
- пользователи A, B, C, D
- группа 1: пользователь A, пользователь B
- группа 2: пользователь C, пользователь D

Желательно:
- у каждого пользователя есть личный том
- у каждой команды есть общий том --> пользователи в команде могут видеть общий том
- некоторые пользователи, в зависимости от разрешения, могут видеть оба общие тома

Искал уже довольно давно, не нашел решения в Документах.

Идеи:
- Используйте пространства имен! проблема --> больше не может видеть общий том другого пространства имен


person trdavidson    schedule 27.01.2019    source источник


Ответы (1)


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

Затем вы можете использовать Role< /a> для каждого тома и соответствующим образом назначьте пользователям. (Роли указаны в пространстве имен). Примерная роль:

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  namespace: team1
  name: volume-access
rules:
- apiGroups: [""]
  resources: ["persistentvolume", "persistentvolumeclaims"]
  resourceNames: ["my-volume"]
  verbs: ["update", "get", "list", "patch", "watch"]

Тогда ваша привязка будет выглядеть примерно так:

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: pv-binding
  namespace: team1
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: volume-access
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: User
  name: usera
- apiGroup: rbac.authorization.k8s.io
  kind: User
  name: userb

Вышеупомянутое будет общим для пользователя A и пользователя B. Вы можете создать отдельные роли для частного тома.

person Rico    schedule 28.01.2019
comment
спасибо за быстрый ответ. Это выглядит очень чистым. Вопрос: как это учитывает спецификацию для просмотра тома другой команды, т. е. том команды по умолчанию, доступный только для членов команды, но разрешенный для участников из белого списка. Насколько я понимаю, оказавшись в пространстве имен, пользователи других пространств имен не могут получить доступ к этим ресурсам. - person trdavidson; 28.01.2019
comment
Только если вы используете Role, но если вы используете ClusterRole, вы можете перемещаться по пространствам имен. - person Rico; 28.01.2019
comment
привет @Rico, публикую это здесь, так как это кажется нерешенной проблемой в этой теме с официальным разработчиком Microsoft Kubernetes: github.com/Azure/AKS/issues/525 в основном: попытка создать постоянный том между узлами, как описано выше, сталкивается с некоторыми проблемами при использовании Azure в качестве облачного поставщика управляемого кластера. При запросе общего хранилища в форме azurefile pvc застревает в состоянии «Ожидание» на неопределенный срок. Любая идея о том, что может быть проблемой здесь? любые мысли приветствуются! - person trdavidson; 30.01.2019
comment
Да, это займется поддержкой Azure, это связано с их API и тем, как с ним взаимодействует K8s Kubernetes. - person Rico; 30.01.2019
comment
Хорошо, мы решили эту проблему: по-видимому, это ошибка в текущем API, где, если имя ресурса составляет 24 символа, pvc не выделяется. В конце концов, Azure def очень помог решить эту проблему. - person trdavidson; 05.02.2019