Find usage of ServceAccount in Kubernates cluster

3/17/2020

I am running a Kubernates Cluster in bare metal of three nodes. I have applied a couple of yaml files of different services. Now I would like to make order in the cluster and clean some orphaned kube objects. To do that I need to understand the set of pods or other entities which use or refer a certain ServiceAccount.

For example, I can dig ClusterRoleBinding of the, say, admin-user and investigate it:

kubectl get сlusterrolebinding admin-user

But is there a good kubectl options combination to find all the usages/references of some ServiceAccount?

-- alex007
kubernetes

2 Answers

3/17/2020

You can list all resources using a service account with the following command:

kubectl get rolebinding,clusterrolebinding --all-namespaces -o jsonpath='{range .items[?(@.subjects[0].name=="YOUR_SERVICE_ACCOUNT_NAME")]}[{.roleRef.kind},{.roleRef.name}];{end}' | tr ";" "\n"

You just need to replace YOUR_SERVICE_ACCOUNT_NAME to the one you are investigating.

I tested this command on my cluster and it works.

Let me know if this solution helped you.

-- mWatney
Source: StackOverflow

3/17/2020

Take a look at this project. After installing via homebrew or krew you can use it find a service account and look at its role, scope, source. It does not tell which pods are referring to it but still a useful tool.

rbac-lookup serviceaccountname --output wide --kind serviceaccount
-- Arghya Sadhu
Source: StackOverflow