创建对指定namespace有所有权限的kube-config(在已有的namespace中创建)
#!/bin/bashBASEDIR="$(dirname "$0")"folder="$BASEDIR/kube_config"echo -e "All namespaces is here: \n$(kubectl get ns|awk 'NR!=1{print $1}')"echo "endpoint server if local network you can use $(kubectl cluster-info |awk '/Kubernetes/{print $NF}')"namespace=$1endpoint=$(echo "$2" | sed -e 's,https\?://,,g')if [[ -z "$endpoint" || -z "$namespace" ]]; thenecho "Use "$(basename "$0")" NAMESPACE ENDPOINT";exit 1;fiecho "---apiVersion: v1kind: ServiceAccountmetadata:name: $namespace-usernamespace: $namespace---kind: RoleapiVersion: rbac.authorization.k8s.io/v1beta1metadata:name: $namespace-user-full-accessnamespace: $namespacerules:- apiGroups: ['', 'extensions', 'apps', 'metrics.k8s.io']resources: ['*']verbs: ['*']- apiGroups: ['batch']resources:- jobs- cronjobsverbs: ['*']---kind: RoleBindingapiVersion: rbac.authorization.k8s.io/v1beta1metadata:name: $namespace-user-viewnamespace: $namespacesubjects:- kind: ServiceAccountname: $namespace-usernamespace: $namespaceroleRef:apiGroup: rbac.authorization.k8s.iokind: Rolename: $namespace-user-full-access" | kubectl apply -f -mkdir -p $foldertokenName=$(kubectl get sa $namespace-user -n $namespace -o "jsonpath={.secrets[0].name}")token=$(kubectl get secret $tokenName -n $namespace -o "jsonpath={.data.token}" | base64 --decode)certificate=$(kubectl get secret $tokenName -n $namespace -o "jsonpath={.data['ca\.crt']}")echo "apiVersion: v1kind: Configpreferences: {}clusters:- cluster:certificate-authority-data: $certificateserver: https://$endpointname: $namespace-clusterusers:- name: $namespace-useruser:as-user-extra: {}client-key-data: $certificatetoken: $tokencontexts:- context:cluster: $namespace-clusternamespace: $namespaceuser: $namespace-username: $namespacecurrent-context: $namespace" > $folder/$namespace.kube.conf
