Skip to content

Instantly share code, notes, and snippets.

@europ
Created December 16, 2021 13:02
Show Gist options
  • Select an option

  • Save europ/240a121afb2c69b59c7904c41256a20c to your computer and use it in GitHub Desktop.

Select an option

Save europ/240a121afb2c69b59c7904c41256a20c to your computer and use it in GitHub Desktop.
kubectl print resource, subresource and corresponding verbs

The script will print out resources/subresource and corresponding verbs. See example below (incomplete output).

I have reused Tannhäuser Ruan´s snippet available here: https://medium.com/@tannhauser.sphinx/bash-kubernetes-script-to-list-all-available-resources-subresources-c65a5c2c1173

Example:


===/api/v1===
bindings ["create"]
componentstatuses ["get","list"]
configmaps ["create","delete","deletecollection","get","list","patch","update","watch"]
endpoints ["create","delete","deletecollection","get","list","patch","update","watch"]
events ["create","delete","deletecollection","get","list","patch","update","watch"]
limitranges ["create","delete","deletecollection","get","list","patch","update","watch"]
namespaces ["create","delete","get","list","patch","update","watch"]
namespaces/finalize ["update"]
namespaces/status ["get","patch","update"]
nodes ["create","delete","deletecollection","get","list","patch","update","watch"]
nodes/proxy ["create","delete","get","patch","update"]
nodes/status ["get","patch","update"]
persistentvolumeclaims ["create","delete","deletecollection","get","list","patch","update","watch"]
persistentvolumeclaims/status ["get","patch","update"]
persistentvolumes ["create","delete","deletecollection","get","list","patch","update","watch"]
persistentvolumes/status ["get","patch","update"]
pods ["create","delete","deletecollection","get","list","patch","update","watch"]
pods/attach ["create","get"]
pods/binding ["create"]
pods/eviction ["create"]
pods/exec ["create","get"]
pods/log ["get"]
pods/portforward ["create","get"]
pods/proxy ["create","delete","get","patch","update"]
pods/status ["get","patch","update"]
podtemplates ["create","delete","deletecollection","get","list","patch","update","watch"]
replicationcontrollers ["create","delete","deletecollection","get","list","patch","update","watch"]
replicationcontrollers/scale ["get","patch","update"]
replicationcontrollers/status ["get","patch","update"]
resourcequotas ["create","delete","deletecollection","get","list","patch","update","watch"]
resourcequotas/status ["get","patch","update"]
secrets ["create","delete","deletecollection","get","list","patch","update","watch"]
serviceaccounts ["create","delete","deletecollection","get","list","patch","update","watch"]
serviceaccounts/token ["create"]
services ["create","delete","get","list","patch","update","watch"]
services/proxy ["create","delete","get","patch","update"]
services/status ["get","patch","update"]

===/apis/admissionregistration.k8s.io/v1===
mutatingwebhookconfigurations ["create","delete","deletecollection","get","list","patch","update","watch"]
validatingwebhookconfigurations ["create","delete","deletecollection","get","list","patch","update","watch"]

===/apis/admissionregistration.k8s.io/v1beta1===
mutatingwebhookconfigurations ["create","delete","deletecollection","get","list","patch","update","watch"]
validatingwebhookconfigurations ["create","delete","deletecollection","get","list","patch","update","watch"]

===/apis/apiextensions.k8s.io/v1===
customresourcedefinitions ["create","delete","deletecollection","get","list","patch","update","watch"]
customresourcedefinitions/status ["get","patch","update"]

...
..
.
ETC.
#!/bin/bash
list=($(kubectl get --raw / | jq -r '.paths[] | select(. | startswith("/api"))'));
for tgt in ${list[@]}; do
aruyo=$(kubectl get --raw ${tgt} | jq .resources);
if [ "x${aruyo}" != "xnull" ]; then
echo;
echo "===${tgt}===";
kubectl get --raw ${tgt} | jq -c -r ".resources[] | .name,.verbs" | sed -e ':a' -e 'N' -e '$!ba' -e 's/\n\[/ \[/g';
fi;
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment