kubernetes-dashboard有两种认证方式,一个token认证,另一个是Kubeconfig文件的认证。这个时候的认证不是UserAccount而是获取kubernetes集群资源信息的serviceAccount。
token 认证
# 创建一个dashboard的私钥
cd /etc/kubernetes/pki/
(umask 077; openssl genrsa -out dashboard.key 2048)
# 生成一个证书签署请求
openssl req -new -key dashboard.key -out dashboard.csr -subj "/O=klvchen/CN=dashboard"
# 通过ca.key和ca.crt签署证书
openssl x509 -req -in dashboard.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out dashboard.crt -days 365
# 通过签署证书创建一个sercert
kubectl create secret generic dashboard-cert -n kube-system --from-file=dashboard.crt=./dashboard.crt --from-file=dashboard.key=./dashboard.key
# 创建一个专用的 serviceaccount 帐号 dashboard-admin
kubectl create serviceaccount dashboard-admin -n kube-system
# 绑定角色 cluster-admin
kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
# 查看 dashboard-admin 的 Tokens
kubectl describe serviceaccount dashboard-admin -n kube-system
# 根据上面显示为 dashboard-admin-token-wrfng
kubectl get secret -n kube-system
kubectl describe secret dashboard-admin-token-wrfng -n kube-system
# 获取 token 值,用来在填写网页登录认证信息
# 创建 dashboard 所需要的资源
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.8.3/src/deploy/recommended/kubernetes-dashboard.yaml
kubectl get pods -n kube-system
kubectl get svc -n kube-system
# 修改 svc 的的网络类型
kubectl patch svc kubernetes-dashboard -p '{"spec":{"type":"NodePort"}}' -n kube-system
kubectl get svc -n kube-system
# 获取 NodePort 映射的外网端口,这里是 43666