【发布时间】:2020-11-25 20:01:12
【问题描述】:
我这样做了:
- 我创建了一个服务帐号
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 -
然后我创建了 ~/.kube/config 的副本并删除了 cluster-admin 条目(只允许用户 myname)
-
我将用户角色绑定到具有编辑 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发送给想要访问集群的人,现在他可以列出 pod 但不能执行到其中:
错误
(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 复制到其中。
谢谢
【问题讨论】: