头图

在Kubernetes中创建普通用户并访问Dashboard的详细步骤 🛠️🔐

Kubernetes中,为普通用户创建访问Dashboard的权限涉及多个步骤,包括创建用户证书、配置文件、授权访问权限等。本文将详细介绍每一步骤,确保您能够安全、有效地配置用户访问Dashboard。

目录

  1. 创建用户证书和私钥
  2. 创建Kubernetes配置文件
  3. 授权用户访问Dashboard
  4. 创建RoleBinding或ClusterRoleBinding
  5. 获取Dashboard的Token
  6. 访问Dashboard
  7. 注意事项
  8. 总结
  9. 关键点概览

创建用户证书和私钥 🔑

首先,需要为普通用户创建证书私钥,以便用户通过证书进行身份验证。

步骤1:生成私钥

使用openssl生成用户的私钥:

openssl genrsa -out user.key 2048

解释:上述命令生成一个2048位的RSA私钥,保存为user.key文件。

步骤2:创建证书签名请求(CSR)

openssl req -new -key user.key -out user.csr -subj "/CN=regular-user/O=developers"

解释:此命令基于私钥user.key创建一个CSR文件user.csr,其中CN代表用户名,O代表组织(组)。

步骤3:使用Kubernetes的证书颁发机构(CA)签署CSR

假设Kubernetes CA的证书和私钥分别位于/etc/kubernetes/pki/ca.crt/etc/kubernetes/pki/ca.key

openssl x509 -req -in user.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out user.crt -days 365

解释:该命令使用CA签署CSR,生成用户的证书user.crt,有效期为365天。

创建Kubernetes配置文件 📝

接下来,需要为用户创建一个Kubeconfig文件,包含集群信息、证书和上下文配置。

步骤1:设置集群信息

kubectl config set-cluster kubernetes-dashboard \
  --server=https://<kubernetes-master>:6443 \
  --certificate-authority=/etc/kubernetes/pki/ca.crt \
  --kubeconfig=user.kubeconfig

解释:此命令定义一个名为kubernetes-dashboard的集群,指定Kubernetes API服务器地址和CA证书,保存到user.kubeconfig文件中。

步骤2:设置用户凭证

kubectl config set-credentials regular-user \
  --client-certificate=user.crt \
  --client-key=user.key \
  --kubeconfig=user.kubeconfig

解释:将用户的证书user.crt和私钥user.key配置到user.kubeconfig中,用户名为regular-user

步骤3:设置上下文

kubectl config set-context regular-user@kubernetes-dashboard \
  --cluster=kubernetes-dashboard \
  --user=regular-user \
  --kubeconfig=user.kubeconfig

解释:创建一个上下文regular-user@kubernetes-dashboard,关联到之前配置的集群和用户。

步骤4:选择上下文

kubectl config use-context regular-user@kubernetes-dashboard --kubeconfig=user.kubeconfig

解释:将当前上下文设置为regular-user@kubernetes-dashboard,确保后续操作使用该配置。

授权用户访问Dashboard 🛡️

为确保用户能够访问Dashboard,需要定义角色(Role)集群角色(ClusterRole),并授予相应权限。

创建ClusterRole

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: dashboard-access
rules:
- apiGroups: ["*"]
  resources: ["*"]
  verbs: ["get", "list", "watch"]

解释:此ClusterRole名为dashboard-access,允许用户执行getlistwatch操作,适用于所有API组和资源。

创建RoleBinding或ClusterRoleBinding 🔗

将用户与上述角色绑定,确保其拥有访问权限。

创建ClusterRoleBinding

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: dashboard-access-binding
subjects:
- kind: User
  name: regular-user
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: dashboard-access
  apiGroup: rbac.authorization.k8s.io

解释:此ClusterRoleBindingregular-userdashboard-access角色绑定,授予其相应权限。

应用配置

将上述YAML内容保存为dashboard-access.yaml,然后应用到集群中:

kubectl apply -f dashboard-access.yaml

解释:通过kubectl apply命令将权限配置应用到Kubernetes集群。

获取Dashboard的Token 🗝️

用户需要一个访问令牌来登录Dashboard。

创建ServiceAccount

apiVersion: v1
kind: ServiceAccount
metadata:
  name: dashboard-user
  namespace: kubernetes-dashboard

解释:创建一个名为dashboard-user的ServiceAccount,位于kubernetes-dashboard命名空间。

创建RoleBinding

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: dashboard-user-binding
subjects:
- kind: ServiceAccount
  name: dashboard-user
  namespace: kubernetes-dashboard
roleRef:
  kind: ClusterRole
  name: dashboard-access
  apiGroup: rbac.authorization.k8s.io

解释:将dashboard-user ServiceAccount与dashboard-access角色绑定。

应用配置

将上述YAML内容保存为dashboard-user.yaml,然后应用:

kubectl apply -f dashboard-user.yaml

获取Token

kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep dashboard-user | awk '{print $1}')

解释:该命令提取并显示dashboard-user ServiceAccount的Token,用于登录Dashboard。

访问Dashboard 🌐

  1. 启动Dashboard服务

    确保Dashboard已部署并运行:

    kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml
  2. 访问Dashboard

    使用kubectl proxy启动代理:

    kubectl proxy

    然后在浏览器中访问:

    http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
  3. 登录Dashboard

    在登录页面选择Token方式,输入之前获取的Token,完成登录。

注意事项 ⚠️

  • 最小权限原则:仅授予用户所需的最小权限,避免过度授权,提升安全性。
  • Token管理:妥善保管访问Token,防止泄露,定期更换。
  • 版本兼容:不同版本的Dashboard可能有不同的配置要求,建议参考官方文档。
  • 权限审计:定期审查用户权限,确保符合组织安全策略。

总结 📌

通过以上步骤,您可以在Kubernetes中为普通用户创建证书和私钥,配置Kubeconfig文件,授权访问Dashboard,并获取访问Token,实现安全、有效的Dashboard访问。关键在于合理配置权限,确保用户仅能访问必要的资源,从而保障集群的安全性和稳定性。


创建普通用户并访问Dashboard的关键步骤概览

步骤描述
创建用户证书和私钥使用openssl生成用户的证书和私钥,确保身份验证安全
创建Kubernetes配置文件配置Kubeconfig文件,包含集群信息和用户凭证
授权用户访问Dashboard定义ClusterRole,指定用户可执行的操作和访问的资源
创建RoleBinding将用户与角色绑定,授予其访问权限
获取Dashboard Token创建ServiceAccount并获取其Token,用于登录Dashboard
访问Dashboard使用Token通过浏览器安全登录Kubernetes Dashboard
注意事项遵循最小权限原则,妥善管理Token,确保配置安全

通过系统化的配置流程,您能够为普通用户安全地配置Kubernetes Dashboard访问权限,提升集群管理的效率与安全性。


蓝易云
25 声望3 粉丝