Created
October 12, 2023 03:40
-
-
Save drGrove/fa0bc4933e23abc086946368b75e2477 to your computer and use it in GitHub Desktop.
kubectl RBAC Resource and Verb list
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
set -eou pipefail | |
list() { | |
CONTEXT="${1}" | |
APIS=$(kubectl --context "${CONTEXT}" get --raw /apis | jq -r '[.groups | .[].name] | join(" ")') | |
get "${CONTEXT}" "core" | |
for api in $APIS; do | |
get "${api}" | |
done | |
} | |
get() { | |
local api | |
api=${1:?api not provided} | |
local CONTEXT | |
CONTEXT=${2} | |
if [ "${api}" == "core" ]; then | |
kubectl --context "${CONTEXT}" get --raw /api/v1 | jq -r --arg api "${api}" '.resources | .[] | "\($api) \(.name): \(.verbs | join(" "))"' | |
else | |
version=$(kubectl --context "${CONTEXT}" get --raw "/apis/${api}" | jq -r '.preferredVersion.version') | |
kubectl --context "${CONTEXT}" get --raw "/apis/${api}/${version}" | jq -r --arg api "${api}" '.resources | .[]? | "\($api) \(.name): \(.verbs | join(" "))"' | |
fi | |
} | |
main() { | |
local VERSION | |
VERSION="1.0.0" | |
local CONTEXT | |
CONTEXT="" | |
local API | |
API="" | |
local COMMAND | |
COMMAND="" | |
while [ $# -gt 0 ]; do | |
case "$1" in | |
--context) | |
shift | |
CONTEXT="$1" | |
;; | |
--context=*) | |
CONTEXT="${1#*=}" | |
;; | |
version) | |
echo "${VERSION}" | |
exit 0 | |
;; | |
list) | |
COMMAND="list" | |
;; | |
get) | |
COMMAND="get" | |
shift | |
API="$1" | |
;; | |
esac | |
shift | |
done | |
case "${COMMAND}" in | |
list) | |
list "${CONTEXT}" | |
;; | |
get) | |
get "${API}" "${CONTEXT}" | |
;; | |
esac | |
} | |
main $@ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment