在运维和开发的过程中,使用token值访问k8s apiserver 更为方便快捷。具体操作如下:
1. 创建开发者用户账号为dev的用户,可以使用以下命令
kubectl create serviceaccount dev
2.创建用户访问规则
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: dev
rules:
- apiGroups:
- ""
resources:
- pods
- pods/attach
- pods/exec
- pods/log
- pods/status
- configmaps
- services
verbs:
- get
- list
- watch
- create
- describe
- apiGroups:
- extensions
- apps
resources:
- deployments
verbs:
- get
- list
- watch
- describe
3. 绑定用户角色
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: dev
namespace: default
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: devuser
subjects:
- kind: ServiceAccount
name: dev
namespace: default
4.可使用下列命令获取token 值
TOKEN=$(kubectl describe secrets $(kubectl get secrets -n default |grep dev |cut -f1 -d ' ') -n default |grep -E '^token' |cut -f2 -d':'|tr -d '\t'|tr -d ' ')
5. 获取apiserver 地址
APISERVER=$(kubectl config view |grep server|cut -f 2- -d ":" | tr -d " ")
6. 通过curl 命令访问k8s apiserver
curl -H "Authorization: Bearer $TOKEN" $APISERVER/api --insecure