Недавно я столкнулся с той же проблемой, и для ее преодоления потребовалось много времени.
Простое создание пользователя не дает ему доступа к любым ресурсам в кластере. Для этого нам нужно определить роль, а затем привязать пользователя к этой роли.
Создать файл access.yaml (мы собираемся создать пользователя (учетную запись службы),роль и назначьте эту роль этому пользователю.)
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: eks-project-admin-user
namespace: project-ns
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: eks-project-admin-user-full-access
namespace: project-ns
rules:
- apiGroups: ["", "extensions", "apps"]
resources: ["*"]
verbs: ["*"]
- apiGroups: ["batch"]
resources:
- jobs
- cronjobs
verbs: ["*"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: eks-project-admin-user-view
namespace: project-ns
subjects:
- kind: ServiceAccount
name: eks-project-admin-user
namespace: project-ns
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: eks-project-admin-user-full-access
Примечание. Убедитесь, что вы изменили имя пользователя с «eks-project-admin-user» на свое.
Вы можетеиспользуйте этот сайт для аналогичной привязки роли для вашего пользователя (в зависимости от вашего варианта использования).
Теперь давайте создадим все это:
kubectl create -f access.yaml
Так чтоПолитика должна быть назначена этому пользователю iam, если я хочу, чтобы она работала только в кластере EKS kubernetes. Для этого вопроса попробуйте приведенную ниже политику JSON (согласно документации AWS ).
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"eks:*"
],
"Resource": "*"
}
]
}
Примечание. В поле ресурса вы также можете ограничиться определенным кластером.
Теперь проверьте изменения, используя команду
kubectl get pods -n rbac-test
Надеюсь, вы не должны получить ошибку «Несанкционированный» сейчас.