#kubernetes #kubectl
#kubernetes #kubectl
Вопрос:
Роль namespace-limited
должна иметь полный доступ ко всем ресурсам (из указанных групп API) внутри пространства имен. Мой манифест роли выглядит следующим образом:
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: namespace-limited
namespace: restricted-xample
rules:
- apiGroups:
- core
- apps
- batch
- networking.k8s.io
resources: ["*"] # asterisk to grant access to all resources of the specified api groups
verbs: ["*"]
Я связал роль с ServiceAccount, используя привязку ролей, но, к сожалению, этот ServiceAccount не имеет доступа к Pod
, Service
, Secret
, ConfigMap
и Endpoint
ресурсам. Все эти ресурсы являются частью core
группы API. Однако все другие распространенные рабочие нагрузки работают. Почему это?
Ответ №1:
Основная группа, также называемая устаревшей группой, находится на пути REST /api/v1
и использует apiVersion: v1
Вам нужно использовать ""
для основной группы API.
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: restricted-xample
name: namespace-limited
rules:
- apiGroups: ["", "apps", "batch", "networking.k8s.io"] # "" indicates the core API group
resources: ["*"]
verbs: ["*"]
Чтобы проверить разрешение учетной записи службы, используйте следующие команды
kubectl auth can-i get pods --as=system:serviceaccount:restricted-xample:default -n restricted-xample
kubectl auth can-i get secrets --as=system:serviceaccount:restricted-xample:default -n restricted-xample
kubectl auth can-i get configmaps --as=system:serviceaccount:restricted-xample:default -n restricted-xample
kubectl auth can-i get endpoints --as=system:serviceaccount:restricted-xample:default -n restricted-xample
Комментарии:
1. О да, я тоже только что понял это, но почему это не работает, если я явно указываю основную группу?
2. Потому что это устаревший и первый API, и код по-прежнему следует за ним, чтобы не нарушать API
Ответ №2:
Просто выяснил, что это работает, когда я опускаю ключевое слово core, как в этом примере. Работает следующий манифест роли:
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: namespace-limited
namespace: restricted-xample
rules:
- apiGroups: ["", "apps", "batch", "networking.k8s.io"]
resources: ["*"]
verbs: ["*"]
Но почему это не работает, если я указываю core
группу API, для меня загадка.