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认证及分级授权的主要内容,如果未能解决你的问题,请参考以下文章