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.

Revisions

  1. europ created this gist Dec 16, 2021.
    63 changes: 63 additions & 0 deletions README.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,63 @@
    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.
    ```
    12 changes: 12 additions & 0 deletions print.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,12 @@
    #!/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