2017-04-03 10 views
1

科目に割り当て見(クラスター)の役割は、適用されたクラスタの役割を施し、これに例えば:kubectlと私は見てkubectlを使用することができます

kubectl get clusterrolebindings system:node --all-namespaces -o json                                          
{ 
    "apiVersion": "rbac.authorization.k8s.io/v1beta1", 
    "kind": "ClusterRoleBinding", 
    .... 
    .... 
    "subjects": [ 
     { 
      "apiGroup": "rbac.authorization.k8s.io", 
      "kind": "Group", 
      "name": "system:nodes" 
     } 
    ] 
} 

私は、他の方法で回避例えば、この情報を取得したいと思います:「システム:ノード」の件名に適用されるすべてのポリシーをリストしたいと思います。

どうすればいいですか?

答えて

5

リバースインデックスのAPIはありません。バインディングを検索し、期待される件名を含むものをフィルタリングすることができます。たとえば、bash、jq、およびkubectlを使用する場合:

# $1 is kind (User, Group, ServiceAccount) 
# $2 is name ("system:nodes", etc) 
# $3 is namespace (optional, only applies to kind=ServiceAccount) 
function getRoles() { 
    local kind="${1}" 
    local name="${2}" 
    local namespace="${3:-}" 

    kubectl get clusterrolebinding -o json | jq -r " 
     .items[] 
     | 
     select(
     .subjects[]? 
     | 
     select(
      .kind == \"${kind}\" 
      and 
      .name == \"${name}\" 
      and 
      (if .namespace then .namespace else \"\" end) == \"${namespace}\" 
     ) 
    ) 
     | 
     (.roleRef.kind + \"/\" + .roleRef.name) 
    " 
} 

$ getRoles Group system:authenticated 
ClusterRole/system:basic-user 
ClusterRole/system:discovery 
関連する問題