[kubernetes]step9-使用Helm部署 dashboard并设置普通用户登陆权限

使用Helm部署 dashboard并设置普通用户登陆权限

近期发现dashboard2.0好像并不能完全使用这个方法创建

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下面的podsdeployments进行管理

第一步新建一个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规则:管理podsdeployments的权限。

然后我们创建一个角色绑定,将上面的角色role-dev绑定到devServiceAccount上:(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这个ServiceAccounttoken就可以登录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

# 这里的scret参数需要替换成上面获取到的登陆的token值
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
生成的/tmp/dashbord-dev.conf即可用于登录dashboard

生成测试的conf 进行登陆测试

dashboard权限可参考

https://blog.csdn.net/yjh314/article/details/80942232?utm_source=blogxgwz2

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爷来辣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值