Kubernetes Dashboard 用户名密码方式登录

**Author:**rab


前言

为了 K8s 集群安全,默认情况下 Dashboard 以 Token 的形式登录的,那如果我们想以用户名/密码的方式登录该怎么操作呢?其实只需要我们创建用户并进行 ClusterRoleBinding 绑定即可,接下来是具体的操作流程。

1、创建用户名/密码

sh 复制代码
cat << EOF | sudo tee /etc/kubernetes/pki/basic_auth_file
admin,zhurs@123,1
EOF

# 说明
# 用户名:admin
# 密码:zhurs@123
# 用户ID:1

2、修改 kube-apiserver 配置文件

sh 复制代码
# 先提前做个备份
cp /etc/kubernetes/manifests/kube-apiserver.yaml /etc/kubernetes/manifests/kube-apiserver.yaml.back

# 修改配置文件
vim /etc/kubernetes/manifests/kube-apiserver.yaml
yaml 复制代码
...
...
spec:
  containers:
  - command:
    - kube-apiserver
    - --advertise-address=192.168.56.160
    - --allow-privileged=true
    - --authorization-mode=Node,RBAC
    - --client-ca-file=/etc/kubernetes/pki/ca.crt
    - --enable-admission-plugins=NodeRestriction
    - --enable-bootstrap-token-auth=true
    - --etcd-cafile=/etc/kubernetes/pki/etcd/ca.crt
    - --etcd-certfile=/etc/kubernetes/pki/apiserver-etcd-client.crt
    - --etcd-keyfile=/etc/kubernetes/pki/apiserver-etcd-client.key
    - --etcd-servers=https://127.0.0.1:2379
    - --kubelet-client-certificate=/etc/kubernetes/pki/apiserver-kubelet-client.crt
    - --kubelet-client-key=/etc/kubernetes/pki/apiserver-kubelet-client.key
    - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
    - --proxy-client-cert-file=/etc/kubernetes/pki/front-proxy-client.crt
    - --proxy-client-key-file=/etc/kubernetes/pki/front-proxy-client.key
    - --requestheader-allowed-names=front-proxy-client
    - --requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.crt
    - --requestheader-extra-headers-prefix=X-Remote-Extra-
    - --requestheader-group-headers=X-Remote-Group
    - --requestheader-username-headers=X-Remote-User
    - --secure-port=6443
    - --service-account-issuer=https://kubernetes.default.svc.cluster.local
    - --service-account-key-file=/etc/kubernetes/pki/sa.pub
    - --service-account-signing-key-file=/etc/kubernetes/pki/sa.key
    - --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     # 新增
...
...

:wq 保存退出后 kube-apiserver 会自动重启(大约 10s 左右,无需 kubectl apply ...)。

3、查看 kube-apiserver 是否重启

sh 复制代码
kubectl get pod -n kube-system

4、集群角色绑定

sh 复制代码
kubectl create clusterrolebinding DashBoardLogin --clusterrole=cluster-admin --user=admin

# 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、查看集群角色绑定情况

sh 复制代码
kubectl get clusterrolebinding DashBoardLogin

6、修改 kubernetes-dashboard 认证方式

sh 复制代码
# 先提前做个备份
cp /opt/yaml/dashboard-2.7.0/aio/deploy/recommended.yaml /opt/yaml/dashboard-2.7.0/aio/deploy/recommended.yaml.back

# 修改配置文件
vim /opt/yaml/dashboard-2.7.0/aio/deploy/recommended.yaml
yaml 复制代码
...
args:
  - --auto-generate-certificates
  - --namespace=kubernetes-dashboard
  - --token-ttl=21600
  - --authentication-mode=basic
...

7、启动 Dashboard

sh 复制代码
kubectl apply -f recommended.yaml

# 注意你的recommended.yaml文件路径(我的就在当前目录下)

8、Dashboard 访问验证

使用用户名/密码的方式看是否可访问。

admin/zhurs@123

但是,我们一般不建议这样操作,大家在测试环境玩玩就行!

---END

相关推荐
阿里云云原生19 小时前
零配置部署顶级模型!函数计算一键解锁 Qwen3.5
云原生
AI攻城狮1 天前
Kimi Bot + OpenClaw 完整配置指南:5 步实现本地 AI Agent 集成
人工智能·云原生·aigc
AI攻城狮2 天前
RAG Chunking 为什么这么难?5 大挑战 + 最佳实践指南
人工智能·云原生·aigc
可观测性用观测云3 天前
云原生网关 Ingress-Nginx 链路追踪实战:OpenTelemetry 采集与观测云集成方案
nginx·kubernetes
哈里谢顿4 天前
Kubernetes Operator核心概念、实现原理和实战开发
云原生
阿里云云原生4 天前
你的 OpenClaw 真的在受控运行吗?
云原生
阿里云云原生4 天前
5 分钟零代码改造,让 Go 应用自动获得全链路可观测能力
云原生·go
Shanyoufusu124 天前
RKE2 单节点集群安装 Rancher+ 私有镜像仓库搭建 完整教程
云原生
阿里云云原生4 天前
Dify 官方上架 Higress 插件,轻松接入 AI 网关访问模型服务
云原生
AI攻城狮4 天前
OpenClaw Session 管理完全指南:Context 压缩、重置与持久化
人工智能·云原生·aigc