在Kubernetes的不同名称空间中是否可以有多个角色和一个服务帐户?

在Kubernetes的不同名称空间中是否可以有多个角色和一个服务帐户?,kubernetes,devops,rbac,Kubernetes,Devops,Rbac,可以将多个角色绑定到单个服务帐户吗?这可以有多个角色绑定/集群角色绑定,将角色链接到单个服务帐户 您应该记住权限是可添加的-您可以将另一个角色/集群角色添加到服务帐户以扩展其权限 我创建了一个简单的示例来说明它是如何工作的 首先,我创建了红色和蓝色名称空间和测试sa服务帐户: $ kubectl create namespace red namespace/red created $ kubectl create namespace blue namespace/blue created $

可以将多个角色绑定到单个服务帐户吗?

这可以有多个
角色绑定
/
集群角色绑定
,将
角色链接到单个
服务帐户

您应该记住权限是可添加的-您可以将另一个
角色
/
集群角色
添加到
服务帐户
以扩展其权限


我创建了一个简单的示例来说明它是如何工作的

首先,我创建了
红色
蓝色
名称空间
测试sa
服务帐户

$ kubectl create namespace red
namespace/red created
$ kubectl create namespace blue
namespace/blue created
$ kubectl create serviceaccount test-sa
serviceaccount/test-sa created
$ kubectl create rolebinding pod-reader-red --role=pod-reader-red --serviceaccount=default:test-sa -n red
rolebinding.rbac.authorization.k8s.io/pod-reader-red created
$ kubectl create rolebinding pod-reader-blue --role=pod-reader-blue --serviceaccount=default:test-sa -n blue
rolebinding.rbac.authorization.k8s.io/pod-reader-blue created
默认情况下,新创建的
测试sa
服务帐户
没有任何权限:

$ kubectl auth can-i get pod -n red --as=system:serviceaccount:default:test-sa
no
$ kubectl auth can-i get pod -n blue --as=system:serviceaccount:default:test-sa
no
$ kubectl auth can-i get pod -n default --as=system:serviceaccount:default:test-sa
no
接下来,我创建了两个
pod reader red
pod reader blue
角色
,它们有权在
red
blue
名称空间
中获取
pod

$ kubectl create role pod-reader-red --verb=get --resource=pods -n red
role.rbac.authorization.k8s.io/pod-reader-red created
$ kubectl create role pod-reader-blue --verb=get --resource=pods -n blue
role.rbac.authorization.k8s.io/pod-reader-blue created
然后使用
RoleBinding
我将此
角色链接到
测试sa
服务帐户

$ kubectl create namespace red
namespace/red created
$ kubectl create namespace blue
namespace/blue created
$ kubectl create serviceaccount test-sa
serviceaccount/test-sa created
$ kubectl create rolebinding pod-reader-red --role=pod-reader-red --serviceaccount=default:test-sa -n red
rolebinding.rbac.authorization.k8s.io/pod-reader-red created
$ kubectl create rolebinding pod-reader-blue --role=pod-reader-blue --serviceaccount=default:test-sa -n blue
rolebinding.rbac.authorization.k8s.io/pod-reader-blue created
最后,我们可以检查
testsa
servicecomport
是否有权使用
pod reader red
角色在
red
命名空间中获取
pod
并且
test sa
serviceCount
有权使用
pod reader blue
角色在
blue
命名空间中获取
pod

$ kubectl auth can-i get pod -n red --as=system:serviceaccount:default:test-sa
yes
$ kubectl auth can-i get pod -n blue --as=system:serviceaccount:default:test-sa
yes
$ kubectl auth can-i get pod -n default --as=system:serviceaccount:default:test-sa
no

这可能有多个
角色绑定
/
集群角色绑定
,将
角色
/
集群角色
链接到单个
服务帐户

您应该记住权限是可添加的-您可以将另一个
角色
/
集群角色
添加到
服务帐户
以扩展其权限


我创建了一个简单的示例来说明它是如何工作的

首先,我创建了
红色
蓝色
名称空间
测试sa
服务帐户

$ kubectl create namespace red
namespace/red created
$ kubectl create namespace blue
namespace/blue created
$ kubectl create serviceaccount test-sa
serviceaccount/test-sa created
$ kubectl create rolebinding pod-reader-red --role=pod-reader-red --serviceaccount=default:test-sa -n red
rolebinding.rbac.authorization.k8s.io/pod-reader-red created
$ kubectl create rolebinding pod-reader-blue --role=pod-reader-blue --serviceaccount=default:test-sa -n blue
rolebinding.rbac.authorization.k8s.io/pod-reader-blue created
默认情况下,新创建的
测试sa
服务帐户
没有任何权限:

$ kubectl auth can-i get pod -n red --as=system:serviceaccount:default:test-sa
no
$ kubectl auth can-i get pod -n blue --as=system:serviceaccount:default:test-sa
no
$ kubectl auth can-i get pod -n default --as=system:serviceaccount:default:test-sa
no
接下来,我创建了两个
pod reader red
pod reader blue
角色
,它们有权在
red
blue
名称空间
中获取
pod

$ kubectl create role pod-reader-red --verb=get --resource=pods -n red
role.rbac.authorization.k8s.io/pod-reader-red created
$ kubectl create role pod-reader-blue --verb=get --resource=pods -n blue
role.rbac.authorization.k8s.io/pod-reader-blue created
然后使用
RoleBinding
我将此
角色链接到
测试sa
服务帐户

$ kubectl create namespace red
namespace/red created
$ kubectl create namespace blue
namespace/blue created
$ kubectl create serviceaccount test-sa
serviceaccount/test-sa created
$ kubectl create rolebinding pod-reader-red --role=pod-reader-red --serviceaccount=default:test-sa -n red
rolebinding.rbac.authorization.k8s.io/pod-reader-red created
$ kubectl create rolebinding pod-reader-blue --role=pod-reader-blue --serviceaccount=default:test-sa -n blue
rolebinding.rbac.authorization.k8s.io/pod-reader-blue created
最后,我们可以检查
testsa
servicecomport
是否有权使用
pod reader red
角色在
red
命名空间中获取
pod
并且
test sa
serviceCount
有权使用
pod reader blue
角色在
blue
命名空间中获取
pod

$ kubectl auth can-i get pod -n red --as=system:serviceaccount:default:test-sa
yes
$ kubectl auth can-i get pod -n blue --as=system:serviceaccount:default:test-sa
yes
$ kubectl auth can-i get pod -n default --as=system:serviceaccount:default:test-sa
no

TL;是博士。你试过了吗?你有没有遇到过错误;是博士。你试过了吗?你遇到过错误吗?@codeogeek会这样做吗?是的@matt_j感谢您提供如此丰富的信息answer@codeogeek是吗?是的@matt_j感谢您提供了如此翔实的答案