kubernetes - dashboard 配置用户名密码方式登录
前言:为了 k8s 集群安全,默认情况下 dashboard 以 token的形式登录的,那如果我们想以用户名/密码的方式登录该怎么操作呢?其实只需要我们创建用户并进行 clusterrolebinding绑定即可,接下来是具体的操作流程。
k8s的dashboard默认是通过token去登录的,有时候也会不太方便,我们也可以通过账号密码的形式去登录dashboard,不过账号密码登录dashboard的方式仅在k8s v1.19以前的版本支持。
相关环境:
以下操作需要在master节点进行操作
1、创建用户密码存放文件
cat << eof | sudo tee /etc/kubernetes/pki/basic_auth_file admin,admin,1 eof # 说明: # 用户名:admin # 密码:admin # 用户id:1 或脚本 echo "admin,admin,1" > /etc/kubernetes/pki/basic_auth_file
2、修改 kube-apiserver 配置文件
# 先提前做个备份 cp /etc/kubernetes/manifests/kube-apiserver.yaml /etc/kubernetes/manifests/kube-apiserver.yaml.back
# 修改配置文件,配置增加密码文件路径 vim /etc/kubernetes/manifests/kube-apiserver.yaml --------------------------------------------------------------- apiversion: v1 kind: pod metadata: creationtimestamp: null labels: component: kube-apiserver tier: control-plane name: kube-apiserver namespace: kube-system ······ - --secure-port=6443 - --service-account-key-file=/etc/kubernetes/pki/sa.pub - --service-cluster-ip-range=10.96.0.0/12 - --tls-cert-file=/etc/kubernetes/pki/apiserver.crt - --tls-private-key-file=/etc/kubernetes/pki/apiserver.key - --basic-auth-file=/etc/kubernetes/pki/basic_auth_file #增加这一行 ····· # 保存退出后 kube-apiserver 会自动重启(大约10s左右,无需 kubectl apply -f ***)
3、查看 kube-apiserver 是否重启
kubectl get pod -n kube-system
4、将admin用户与集群角色权限进行绑定
[root@k8s-master ~]# kubectl create clusterrolebinding dashboardlogin --clusterrole=cluster-admin --user=admin clusterrolebinding.rbac.authorization.k8s.io/dashboardlogin created # dashboardlogin:自定义集群角色绑定name # 将admin用户绑定到集群角色cluster-admin # cluster-admin是一个内置的clusterrole(集群角色),它具有最高级别的权限 # cluster-admin允许持有该角色的用户或服务账户对整个kubernetes集群进行广泛的控制
具体来说,cluster-admin clusterrole 具有以下特征和权限:
全局权限:cluster-admin 具有对整个集群的权限,而不仅仅限于某个命名空间。这意味着拥有 cluster-admin角色的用户可以管理整个集群的资源,包括节点、命名空间、服务、pod 等。
权限广泛:cluster-admin 具有广泛的权限,包括创建、删除和修改各种资源,以及查看集群中的所有资源的权限。这包括对configmaps、secrets、deployments、services等的完全控制权。
角色的高度特权:由于cluster-admin 角色的特权级别非常高,因此授予它的用户或服务账户将具有执行集群中任何操作的能力,包括破坏性操作。因此,应小心授予cluster-admin权限,确保只授予受信任的用户或服务账户。
通常情况下,cluster-admin 角色应该被保留用于紧急情况、集群管理和维护操作。该权限不应该随意授予普通用户,以防止误操作或滥用权限。对于普通应用程序和开发人员,通常会创建更严格的rbac 角色,以限制其对资源的访问权限,从而提高集群的安全性。
5、查看集群角色绑定情况
[root@k8s-master ~]# kubectl get clusterrolebinding dashboardlogin name role age dashboardlogin clusterrole/cluster-admin 8s
6、修改 kubernetes-dashboard 认证方式
# 先提前做个备份 cp /root/recommended.yaml /root/recommended.yaml.back
# 修改配置文件支持用户密码登录 [root@k8s-master ~]# vim recommended.yaml --- ...... args: - --auto-generate-certificates - --namespace=kubernetes-dashboard - --token-ttl=21600 #新增内容1 - --authentication-mode=basic #新增内容2 ...... ---
7、启动 dashboard
kubectl apply -f recommended.yaml
8、dashboard 访问验证
# 已经可以通过用户名密码的方式登录dashboard了 admin/admin
在kubernetes dashboard中,默认情况下,账户和密码的方式已经被废弃,取而代之的是使用token进行登录。
到此这篇关于kubernetes dashboard 配置用户名密码方式登录的文章就介绍到这了,更多相关kubernetes dashboard用户名密码方式登录内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论