Last active
July 26, 2023 21:43
-
-
Save fire-ant/4b143cc522614f8958c3903fa7151e8d to your computer and use it in GitHub Desktop.
merged cluster kubeconfigs
This file contains hidden or 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
| # #!/bin/bash | |
| # hacky way of retrieving and merging vluster kubeconfigs by passing a vlaid k8s namespace as the first argument to the script | |
| # storage | |
| mkdir -p .kc | |
| rm -f .kc/config | |
| # check $1 is set | |
| [ -z "$1" ] && echo "Usage: $0 <namespace>" && exit 1 | |
| # grab all the vluster kubeconfigs | |
| get_kubeconfigs() { | |
| kubectl get secrets -o json -n $1 | jq -r '.items[] | select(.metadata.name | test("-kubeconfig")).metadata.name' | |
| } | |
| # set to var | |
| kc=$(get_kubeconfigs $1) | |
| rename() { | |
| echo $1 | sed 's/-.*//g' | |
| } | |
| # convert to kubeconfigs and rename contexts and cluster names | |
| for i in $kc; do | |
| name=$(rename $i) | |
| echo "retrieving kubeconfig for $i.." | |
| kubectl get secret $i -o json -n $1 | jq -r '.data.value' | base64 -d >> .kc/$name-config | |
| kubectl config rename-context my-vcluster $i --kubeconfig=.kc/$name-config | |
| VAL=$name yq -i e '.clusters[].name |= strenv(VAL)' .kc/$name-config | |
| done | |
| # merge kubeconfigs | |
| export KUBECONFIG=$(find .kc/ -type f | tr '\n' ':') | |
| echo $KUBECONFIG | |
| kubectl config view --flatten >> .kc/config | |
| for i in $kc; do | |
| name=$(rename $i) | |
| rm .kc/$name-config | |
| done | |
| echo "merged kubeconfig is now in .kc/config" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment