Разрешить Kubernetes список пользователей / получить пространства имен - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть следующий манифест пользователя, и я бы хотел, чтобы myapp-user получил список всех пространств имен в кластере. Из того, что я посмотрел, я должен создать ClusterRole, но не могу найти достаточно подробностей об этом. Есть ли где-нибудь список всех apiGroups и соответствующих ресурсов и глаголов?

apiVersion: v1
kind: ServiceAccount
metadata:
  name: myapp-user
  namespace: myapp

---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: myapp-user-role
  namespace: myapp
rules:
- apiGroups: ["", "extensions", "apps"]
  resources: ["*"]
  verbs: ["*"]
- apiGroups: ["batch"]
  resources:
  - jobs
  - cronjobs
  verbs: ["*"]
- apiGroups: ["networking.k8s.io"]
  resources:
  - ingress
  verbs: ["*"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: myapp-user
  namespace: myapp
subjects:
- kind: ServiceAccount
  name: myapp-suer
  namespace: myapp
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: myapp-user-role

Я думаю, что добавление этого в role.rules может помочь, но, к сожалению, не

- apiGroups: [""]
  resources: ["namespaces"]
  verbs: ["GET"]

Ответы [ 3 ]

0 голосов
/ 03 апреля 2020

Вы можете перечислить все типы ресурсов, которые поддерживает ваш кластер, с помощью этой команды:

❯❯❯ kubectl api-resources
NAME                              SHORTNAMES   APIGROUP                           NAMESPACED   KIND
bindings                                                                          true         Binding
componentstatuses                 cs                                              false        ComponentStatus
configmaps                        cm                                              true         ConfigMap
endpoints                         ep                                              true         Endpoints
events                            ev                                              true         Event
limitranges                       limits                                          true         LimitRange
namespaces                        ns                                              false        Namespace
nodes                             no                                              false        Node
persistentvolumeclaims            pvc                                             true         PersistentVolumeClaim
persistentvolumes                 pv                                              false        PersistentVolume

Чтобы увидеть все действия / глаголы, поддерживаемые на этих ресурсах, вам нужно найти справочную документацию kubernetes для версии относящиеся к вам, например, для CronJobs https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#cronjob -v1beta1-партия

0 голосов
/ 03 апреля 2020

Благодаря ответам @ abhishek-jaisingh и @ arghya-sadhu я смог выяснить это и переписать команды как манифест.

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: myapp-user-cr
rules:
- apiGroups: [""]
  resources: ["namespaces"]
  verbs: ["get", "list"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: myapp-user-crb
  namespace: myapp
subjects:
- kind: ServiceAccount
  name: myapp-user
  namespace: myapp
roleRef:
  kind: ClusterRole
  name: myapp-user-cr
  apiGroup: rbac.authorization.k8s.io
0 голосов
/ 03 апреля 2020

Вы можете получить ресурсы API через

kubectl api-resources

NAME                              SHORTNAMES   APIGROUP                       NAMESPACED   KIND
bindings                                                                      true         Binding
componentstatuses                 cs                                          false        ComponentStatus
configmaps                        cm                                          true         ConfigMap
endpoints                         ep                                          true         Endpoints
events                            ev                                          true         Event
limitranges                       limits                                      true         LimitRange
namespaces                        ns                                          false        Namespace
nodes                             no                                          false        Node
persistentvolumeclaims            pvc                                         true         PersistentVolumeClaim
persistentvolumes                 pv                                          false        PersistentVolume

И для создания clusterrole и clusterolebinding ниже должны работать команды.

kubectl create clusterrole cr --verb=get,list --resource=namespaces

kubectl create clusterrolebinding crb --clusterrole=cr --serviceaccount=default:default

А затем проверить это

kubectl auth can-i get ns --as=system:serviceaccount:default:default
kubectl auth can-i list ns --as=system:serviceaccount:default:default
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...