Как я могу разрешить переадресацию портов для определенного развертывания в Kubernetes? - PullRequest
0 голосов
/ 19 июня 2019

Я пытаюсь разрешить некоторым пользователям в моей организации перенаправлять порты в наше производственное пространство имен в Kubernetes.Однако я не хочу, чтобы они могли перенаправлять порты всем службам.Я хочу ограничить доступ только к определенным услугам.Возможно ли это?

kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: allow-port-forward-for-deployment-a
rules:
- apiGroups: [""]
  resources: ["pods/portforward"]
  verbs: ["get", "list", "create"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: allow-port-forward-for-deployment-a
  namespace: production
subjects:
- kind: User
  name: "xyz@org.com"
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: allow-port-forward-for-deployment-a
  apiGroup: rbac.authorization.k8s.io

Вышеуказанная настройка разрешает все службы, но я этого не хочу.

Ответы [ 2 ]

2 голосов
/ 20 июня 2019

Предполагая, что пользователи уже имеют доступ к вашему кластеру kubernetes и соответствующему namespace.Они могут просто перенаправить локальный порт на pod (ресурсный) порт.

Как вы можете это сделать?kubectl port-forward <POD_NAME> <LOCAL_PORT>:<POD_PORT>

См. Документацию

Цитирование из документа - kubectl port-forward позволяет использовать имя ресурса, например имя pod,чтобы выбрать соответствующий pod - port forward, начиная с Kubernetes v1.10.

См. эту статью, если хотите, это хорошо объясняет, когда вам понадобится RBAC vs kubectl port-forward RBAC мог бы быть полезен только тогда, когда вы хотели person или group of people только до port-forward для любых служб в соответствующем namespace в вашем kubernetes кластере.

0 голосов
/ 19 июня 2019

Я верю, что ты не можешь. Согласно документам

Ресурсы могут также называться по имени для определенных запросов через список resourceNames. Если указано, запросы могут быть ограничены отдельные экземпляры ресурса. Ограничить предмет только «Получить» и «обновить» один файл конфигурации, вы должны написать:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: default
  name: configmap-updater
rules:
- apiGroups: [""]
  resources: ["configmaps"]
  resourceNames: ["my-configmap"]
  verbs: ["update", "get"]

Обратите внимание, что создавать запросы не может быть ограничено resourceName, так как имя объекта неизвестно во время авторизации. Другое исключение - deletecollection.

Поскольку вы хотите дать пользователю разрешения на создавать прямые порты, я не думаю, что вы можете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...