有没有办法找到与serviceAccount相关的RoleBinding / ClusterRoleBinding?

时间:2017-09-29 05:43:49

标签: kubernetes

在kubernetes中,有没有办法在不遍历所有绑定的情况下找到与serviceAccount相关的RoleBinding/ClusterRoleBinding

当尝试解决Pod用于请求APIServer的身份验证相关问题时,这非常有用。

2 个答案:

答案 0 :(得分:1)

如前所述,使用kubectl并没有简单的方法,但是在技术上受支持。您可以传递“自定义列”来控制结果STDOUT生成您感兴趣的信息。然后,可以指定-A参数来搜索所有名称空间,也可以使用-n specificNamespace参数。最后,您可以根据需要grep命令的结果STDOUT进行相应的过滤。

例如,如果我从kubernetes-dashboard获取所有绑定,则可以运行以下命令:

$> kubectl get rolebindings,clusterrolebindings \
      -n kubernetes-dashboard \
      -o custom-columns='KIND:kind,NAMESPACE:metadata.namespace,NAME:metadata.name,SERVICE_ACCOUNTS:subjects[?(@.kind=="ServiceAccount")].name' | wc -l
64

如您所见,我将其通过wc进行了管道传输,因为返回了60多个结果,因此很难在StackOverflow上发布。但是,如果改用grep,则可以轻松检索更细粒度的结果。例如,此经过调整的命令显示tj ServiceAccount资源有一个CRB。

$> kubectl get rolebindings,clusterrolebindings \
     -n kubernetes-dashboard \
     -o custom-columns='KIND:kind,NAMESPACE:metadata.namespace,NAME:metadata.name,SERVICE_ACCOUNTS:subjects[?(@.kind=="ServiceAccount")].name' | grep tj
ClusterRoleBinding   <none>                 tj                                                     tj

然后您可以设置外壳程序别名来简化此操作:

$> alias getbindings="kubectl get rolebindings,clusterrolebindings   -n kubernetes-dashboard    -o custom-columns='KIND:kind,NAMESPACE:metadata.namespace,NAME:metadata.name,SERVICE_ACCOUNTS:subjects[?(@.kind==\"ServiceAccount\")].name' | grep"
$> getbindings tj
ClusterRoleBinding   <none>                 tj                                                     tj

或者,您甚至可以将其变成一个接受两个参数的函数,一个命名空间和一个ServiceAccount。然后可以有效地为您提出的功能请求创建自己的解决方案。例如:

$> tail -n 6 ~/.bashrc
function get_bindings(){

    kubectl get rolebindings,clusterrolebindings \
      -n $1 \
      -o custom-columns='KIND:kind,NAMESPACE:metadata.namespace,NAME:metadata.name,SERVICE_ACCOUNTS:subjects[?(@.kind=="ServiceAccount")].name' | grep $2
}
$> get_bindings "kubernetes-dashboard" "tj"
ClusterRoleBinding   <none>                 tj                                                     tj

希望这会有所帮助。

答案 1 :(得分:0)

目前没有这样的功能。也许您可以提交feature request