Skip to content

Instantly share code, notes, and snippets.

@crazygit
Created July 16, 2019 07:01
Show Gist options
  • Save crazygit/8bed50bb80986ba51a92d0a5eeaeb026 to your computer and use it in GitHub Desktop.
Save crazygit/8bed50bb80986ba51a92d0a5eeaeb026 to your computer and use it in GitHub Desktop.
Create kubeconfig for service account in kubernetes
service_account_name="jenkins" # service account name, for example: jenkins
namespace="default" # service account namespace, for example: default
cluster_name="kubernetes"
server="https://kubernetes.default.svc.cluster.local"
ca_file="ca.crt"
kube_config_file="$service_account_name.conf"
token_name=$(kubectl get serviceaccount $service_account_name -n $namespace -o jsonpath="{.secrets[0].name}")
token=$(kubectl get secret $token_name -n $namespace -o jsonpath="{.data.token}" | base64 -D)
kubectl get secret $token_name -n $namespace -o jsonpath="{.data.ca\.crt}" | base64 -D > $ca_file
kubectl config set-cluster $cluster_name --kubeconfig=$kube_config_file --server=$server --certificate-authority=$ca_file --embed-certs=true
kubectl config set-credentials $service_account_name --kubeconfig=$kube_config_file --token=$token
kubectl config set-context $service_account_name@$cluster_name --kubeconfig=$kube_config_file --cluster=$cluster_name --user=$service_account_name
kubectl config use-context --kubeconfig=$kube_config_file $service_account_name@$cluster_name
cat $kube_config_file
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment