Мне нужно создать учетные записи ServiceAccounts, которые могут получить доступ к кластеру GKE.Внутренне я делаю это с помощью следующих команд:
kubectl create serviceaccount onboarding --namespace kube-system
kubectl apply -f onboarding.clusterrole.yaml
kubectl create clusterrolebinding onboarding --clusterrole=onboarding --serviceaccount=kube-system:onboarding
Где содержимое файла onboarding.clusterrole.yaml
выглядит примерно так:
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: onboarding
rules:
- apiGroups:
- '*'
resources:
- 'namespace,role,rolebinding,resourcequota'
verbs:
- '*'
Ресурс ServiceAccount создается, как ожидается, иClusterRole и ClusterRoleBinding также выглядят правильно, но когда я пытаюсь получить доступ к API с помощью этой новой роли, я получаю ошибку аутентификации.
curl -k -X GET -H "Authorization: Bearer [REDACTED]" https://36.195.83.167/api/v1/namespaces
{
"kind": "Status",
"apiVersion": "v1",
"metadata": {
},
"status": "Failure",
"message": "namespaces is forbidden: User \"system:serviceaccount:kube-system:onboarding\" cannot list namespaces at the cluster scope: Unknown user \"system:serviceaccount:kube-system:onboarding\"",
"reason": "Forbidden",
"details": {
"kind": "namespaces"
},
"code": 403
В ответе предлагается неизвестный пользователь, но я подтвердил, что ServiceAccount существует ив Темах ClusterRoleBinding.Можно ли таким образом определить ServiceAccount для GKE?
Я успешно использую точный процесс на кластерах kubernetes, которые мы запускаем в наших центрах обработки данных.