本文发布于Cylon的收藏册,转载请著名原文链接~


基于web的UI前端,认证是由Kubernetes完成的。登陆dashboard的密码是k8s的账号和密码,和dashboard自身没有关系。dashboard自身不做认证。

kubectl patch svc kubernetes-dashboard -p'{"spec":{"type":"NodePort"}}'-n kube-system

如使用域名访问,CN一定要与域名保持一致。

(umask 077; openssl genrsa -out dashboard.key 2048)
openssl req -new -key dashboard.key -out dashboard.csr -subj "/O=test/CN=dashboard"
openssl req -in dashboard.csr -noout -text
openssl x509 -req -in dashboard.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out dashboard.crt -days 3650

Certificate Attributes

要想穿透集群边界,从集群外访问集群内部某一服务或Pod上的容器的应用,有两种方式 nodePort、NodeBlanc 或ingress

kubectl create secret generic \
dashboard-cert \
-n kube-system \
--from-file=dashboard.crt=./dashboard.crt \
--from-file=dashboard.key=./dashboard.key

dashboard运行在Pod中时,当用户通过浏览器来进行登陆时,所提供的认证证书必须时serviceaccount,

kubectl create serviceaccount dashboard-admin -n kube-system

通过rolebindding吧对应的dashboard-admin和集群管理员建立起绑定关系,否则无法透过rbac的权限检查。

指明serviceaccount时,必须指明是哪个名称空间的的哪个账号,格式:namespace:serviceaccount

kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin

使serviceaccount用户,能够有权限访问整个集群级别的资源。

查询dashboard-admin的secret,这个是自动生成的。

kubectl get secret $(kubectl get secret -n kube-system|grep dashboard-admin-token|awk '{print $1}') -n kube-system -o jsonpath={.data.token}|base64 -d

kubectl config set-credentials 命令,用户的认证方式,既可以使用证书方式,也可以使用token认证。

在apply之前先将证书做成secret,apply操作会将其加载成为apply操作对外提供https服务时使用的证书。此操作作为serviceaccount认证是没有关系的,只不过是被dashboard用来做https证书的。如果不提供证书,dashboard会自动生成新的证书。

kubernetes dashboard延长自动超时注销

方法1:部署清单时,修改yaml文件,添加 container.Args 增加 --token-ttl=43200 其中43200是设置自动超时的秒数。也可以设置 token-ttl=0 以完全禁用超时。

方法2:操作已经部署的配置,kubectl edit deployment -n kube-system kubernetes-dashboard,新增上面参数到 args

本文发布于Cylon的收藏册,转载请著名原文链接~

链接:https://www.oomkill.com/2018/09/k8s-dashboard/

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」 许可协议进行许可。