kuberneters dashboard认证及分级授权

Posted alamisu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kuberneters dashboard认证及分级授权相关的知识,希望对你有一定的参考价值。

1、部署dashboard

2、将service改为NodePort

3、认证

  • dashboard是运行在kube-system下的一个pod中,用户通过浏览器登陆时所使用的证书里面提供的账号必须是一个serviceaccount
  • token
    • 创建serviceaccount,根据其管理目标,绑使用rolebinding或者clusterrolebinding绑定至合理的role或者clusterrole;可以使用自建的role/rolebinding/clusterrole/clusterrolebinding
    • 绑定完成之后会自动生成一个认证信息,获取到此serviceaccount的secret,查看secret的详细信息,其中就有生成的token
  • kueconfig:通过json文件输出获取token、base64解码后并封装到kubeconfig文件中
    • 创建serviceaccount,根据其管理目标,绑使用rolebinding或者clusterrolebinding绑定至合理的role或者clusterrole;可以使用自建的role/rolebinding/clusterrole/clusterrolebinding
    • kubectl get secret  -n NAMESPACE
    • KUBE_TOKEN=$(kubectl get secret SERVICE_ACCOUNT_SECRET_NAME -n NAMESPACE -o jsonpath=.data.token | base64 -d)
    • 生成kubeconfig文件
      • kubectl config set-cluster
      • kubectl config set-credentials NAME  --token=KUBE_TOKEN
      • kubectl config set-context
      • kubectl config set use-context

4、kubernetes集群管理方式

  • 命令式   create, run , expose, delete , edit ...
  • 命令式配置文件   create -f  /PATH/TO/RESOURCE_FILE,   delete -f     ,    replace -f   ...
  • 声明式配置文件   apply -f  /PATH/TO/RESOURCE_FILE,   patch,  

 

自签证书给dashboard使用(可选如果要使用自己创建的证书认证就需要运行):

# cd /etc/kubernetes/pki/ # (umask 077;openssl genrsa -out dashboard.key 2048) # umask 077为了安全 # 创建key 
# openssl req -new -key dashboard.key -out dashboard.csr -subj "/CN=dashboard" # CN的值就是用户账号的名字,如果需要使用域名访问,这里需要和域名保持一致 # 证书签证请求
# openssl x509 -days 1000 -req -in dashboard.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out dashboard.crt # -CA 用哪个证书签 -CAkey用哪个key -CAcreateserial用CA自己的认证符号信息
# kubectl create secret generic dashboard.cert -n kube-system --from-file=dashboard.crt=./dashboard.crt --from-file=dashboard.key=./dashboard.key  # 把生成的dashboard证书放入secret中供dashboard使用

 

 

 安装Dashboard:

# dashboard gtihub 源: https://github.com/kubernetes/dashboard
# kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml 查看svc: # kubectl get svc -n kube-system 打补丁暴露端口使得可以外部访问: # kubectl patch svc kubernetes-dashboard -p "spec":"type":"NodePort" -n kube-system 技术图片 然后访问dashboard url: https://nodeip:port    # nodeip为任一节点的ip地址,port为dashboard pod暴露出来的port端口

 

使用token认证登陆:

创建 kube-system namespace下的serviceaccount
# kubectl create serviceaccount dashboard-admin -n kube-system

将serviceaccount使用clusterrolebinding绑定到clusterrole角色
# kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin   #将会生成一个dashboard-admin-token-xxx
# kubectl describe secret dashboard-admin-token-tfndl -n kube-system   #可以看到token信息;可以使用该token来登陆dashboard,copy之后在dashboard登陆界面选择token,然后粘贴进去即可

  

使用token登陆管理指定namespace下的资源:

创建 develop namespace下的serviceaccount
# kubectl create serviceaccount dashboard-develop -n develop
将serviceaccount使用rolebinding绑定到clusterrole角色
# kubectl create rolebinding dashboard-develop-admin --clusterrole=admin --serviceaccount=develop:dashboard-develop -n develop #将会生成一个dashboard-develop-token-xxx 
# kubectl describe secret dashboard-develop-token-69dx9 -n develop #可以看到token信息;可以使用该token来登陆dashboard,copy之后在dashboard登陆界面选择token,然后粘贴进去即可

 

使用kubeconf文件认证登陆:

生成kubeconfig文件: 把ServiceAccount的token封装为kubeconfig文件
# cd /etc/kubernetes/pki/
# kubectl config set-cluster kubernets --certificate-authority=./ca.crt --server="https://10.100.0.128:6443" --embed-certs=true --kubeconfig=/root/dashboard.conf   # --server 集群信息
# develop_tocken=$(kubectl get secret dashboard-develop-token-69dx9 -n develop -o jsonpath=.data.token | base64 -d) # 获取token并解密
# kubectl config set-credentials dashboard-deveop-admin --token=$develop_tocken --kubeconfig=/root/dashboard.conf #将token写入conf文件
# kubectl config set-context develop-admin@kubernetes --cluster=kuberbetes --user=develop-admin --kubeconfig=/root/dashboard.conf #创建用户
切换use-context
# kubectl config use-context develop-admin@kubernetes --kubeconfig=/root/dashboard.conf
最后就可以在浏览器登陆界面选择生成好的kubeconfig文件来登陆

 

以上是关于kuberneters dashboard认证及分级授权的主要内容,如果未能解决你的问题,请参考以下文章

kuberneters dashboard认证及分级授权

kubernetes dashboard 认证及分级授权

kubernetes搭建dashboard

k8s之dashboard认证资源需求资源限制及HeapSter

k8s在dashboard实现静态文件认证

每天5分钟玩转Kubernetes | Dashboard配置登录权限