helm repo update
helm fetch stable/kubernetes-dashboard
tar zxvf kubernetes-dashboard-1.10.1.tgz
cd kubernetes-dashboard
创建kubernetes-dashboard.yaml:
image:
repository: k8s.gcr.io/kubernetes-dashboard-amd64
tag: v1.10.1
ingress:
enabled: true
hosts:
- k8s.aircourses.com
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
tls:
# https证书的secret需要先自行创建好
- secretName: aircourses
hosts:
- k8s.aircourses.com
rbac:
clusterAdminRole: true
helm install stable/kubernetes-dashboard -n kubernetes-dashboard --namespace kube-system -f kubernetes-dashboard.yaml
kubectl edit svc kubernetes-dashboard -n kube-system
# 修改 ClusterIP 为 NodePort
建议使用火狐打开
# 获取secret名称
kubectl -n kube-system get secret | grep kubernetes-dashboard-token
# 根据获得的secret名称获取token
kubectl describe secret kubernetes-dashboard-token-xxx -n kube-system
限制dashboard 用户权限
有了上面的理论基础,我们就可以来新建一个用户,为该用户指定特定的访问权限了,比如我们的需求是:
新增一个新的用户dev
该用户只能对命名空间kube-system
下面的pods
和deployments
进行管理
第一步新建一个ServiceAccount
:
kubectl delete sa dev -n default
kubectl create sa dev -n default
#kubectl delete sa dev -n default
然后我们新建一个角色role-dev:(role.yaml)
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
namespace: default
name: role-dev
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
- apiGroups: ["extensions", "apps"]
resources: ["deployments"]
verbs: ["get", "watch", "list"]
- apiGroups: [""]
resources: ["pods/exec"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
- apiGroups: [""]
resources: ["pods/log"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
注意上面的rules
规则:管理pods
和deployments
的权限。
然后我们创建一个角色绑定,将上面的角色role-dev
绑定到dev的ServiceAccount
上:(role-bind.yaml)
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: role-bind-dev
namespace: default
subjects:
- kind: ServiceAccount
name: dev
namespace: default
roleRef:
kind: Role
name: role-dev
apiGroup: rbac.authorization.k8s.io
分别执行上面两个yaml
文件:
kubectl create -f role.yaml
kubectl create -f role-bind.yaml
接下来该怎么做?和前面一样的,我们只需要拿到dev
这个ServiceAccount
的token
就可以登录Dashboard
了:
kubectl get secret -n default |grep dev-token
kubectl describe secret -n default dev-token-bnwn4
token_name=`kubectl get secret -n default |grep dev-token |awk '{print $1}'`
secret=`kubectl describe secret -n default $token_name|grep "token:" |awk -F":" '{print $NF}'`
echo $secret
# 会生成一串很长的字符串
然后在dashboard
登录页面上直接使用上面得到的token
字符串即可登录,登录过后能看到下面的页面。
不同的密钥 登陆的界面
普通用户登陆的时候只能显示 自己的namespace 不是开通的所有权限 所以会有警告
开发只要满足 删除pod 更新pod 进入容器 日志功能 应该足够了
自带的日志。可能没有直接进去直观,或者使用kibana 展示。
1、获取dev的tocken
kubectl get secret -n default |grep dev-token
token_name=`kubectl get secret -n default |grep dev-token |awk '{print $1}'`
secret=`kubectl describe secret -n default $token_name|grep "token:" |awk -F":" '{print $NF}'`
echo $secret
# 会生成一串很长的字符串 在dashboard后台使用tocken(令牌)方式登录即可
2、生成kubeconfig文件
kubectl config set-cluster kubernetes --server=120.26.145.93:6443 --kubeconfig=/tmp/dashbord-dev.conf
kubectl config set-credentials dashboard-dev --token="$secret“ --kubeconfig=/tmp/dashbord-dev.conf
kubectl config set-context dashboard-dev@kubernetes --cluster=kubernetes --user=dashboard-dev --kubeconfig=/tmp/dashbord-dev.conf
# 网上大多数教程 这一步都是错的。。。。
# kubectl config user-context dashboard-admin@kubernets --kubeconfig=/root/dashbord-admin.conf
kubectl config use-context dashboard-dev@kubernetes --kubeconfig=/tmp/dashbord-dev.conf
生成的dashbord-admin.conf即可用于登录dashboard
生成测试的conf 进行登陆测试
、
dashboard权限可参考
https://blog.csdn.net/yjh314/article/details/80942232?utm_source=blogxgwz2