Skip to content

Instantly share code, notes, and snippets.

@anjmao
Forked from saumas/create.sh
Created April 15, 2022 12:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anjmao/6c396d79273407be5e8116db7987fd34 to your computer and use it in GitHub Desktop.
Save anjmao/6c396d79273407be5e8116db7987fd34 to your computer and use it in GitHub Desktop.
Create an admin kubeconfig
#!/usr/bin/env bash
set -ex
kubectl create serviceaccount admin
kubectl create clusterrolebinding admin --clusterrole=cluster-admin --serviceaccount=default:admin
SECRET_NAME=$(kubectl get sa admin -o=jsonpath='{.secrets[0].name}')
TOKEN=$(kubectl get secret "${SECRET_NAME}" -ojsonpath='{.data.token}' | base64 -d)
CA=$(kubectl get secret "${SECRET_NAME}" -ojsonpath='{.data.ca\.crt}')
CURRENT_CONTEXT=$(kubectl config current-context)
CURRENT_CLUSTER=$(kubectl config view --raw -o=go-template='{{range .contexts}}{{if eq .name "'''"${CURRENT_CONTEXT}"'''"}}{{ index .context "cluster" }}{{end}}{{end}}')
CLUSTER_SERVER=$(kubectl config view --raw -o=go-template='{{range .clusters}}{{if eq .name "'''"${CURRENT_CLUSTER}"'''"}}{{ .cluster.server }}{{end}}{{ end }}')
cat << EOF > admin.yaml
apiVersion: v1
kind: Config
current-context: ${CURRENT_CONTEXT}
contexts:
- name: ${CURRENT_CONTEXT}
context:
cluster: ${CURRENT_CONTEXT}
user: admin
namespace: default
clusters:
- name: ${CURRENT_CONTEXT}
cluster:
certificate-authority-data: ${CA}
server: ${CLUSTER_SERVER}
users:
- name: admin
user:
token: ${TOKEN}
EOF
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment