在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感谢您提供了如此翔实的答案