Я сделал так:
- Я создал сервисный аккаунт
cat <<EOF | kubectl create -f -
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: myname
...
Я генерирую токен из секрета, созданного в учетной записи службы:
token=$(kubectl get secrets myname-xxxx-xxxx -o jsonpath={.data.token} | base64 --decode)
Я установил учетные данные для serviceAccount myname
создал: kubectl config set-credentials myname --token=$token
Я создал контекст kubectl config set-context myname-context --cluster=my-cluster --user=myname
затем я создал коп ie из ~ / .kube / config и удалить записи cluster-admin (разрешая только пользователю myname)
Я привязал пользователя к определенному пространству имен c с правами редактирования clusterRole:
cat <<EOF | kubectl create -f -
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: dev-access
namespace: my-ns
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: edit
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: myname
EOF
Я отправил отредактированный
~/.kube/config
человеку, который хочет получить доступ к кластеру, теперь он может перечислить поды, но не c в них:
Ошибка
(Forbidden): pods "pod-xxxxx-xxxx" is forbidden: User "system:serviceaccount:default:myname" cannot create resource "pods/exec" in API group "" in the namespace "my-ns"
Я хочу сделать это с не главной машины, на которую скопирован мастер ~/.kube/config
.
Спасибо