您好,登录后才能下订单哦!
Kubernetes 是一个开源的容器编排平台,广泛应用于云原生应用的部署和管理。Kubernetes Dashboard 是 Kubernetes 的官方 Web UI,提供了对集群资源的可视化管理和操作。为了确保 Kubernetes Dashboard 的安全性,通常需要配置 Token 登录方式。本文将详细介绍如何部署 Kubernetes Dashboard 并配置 Token 登录方式。
Kubernetes Dashboard 是一个基于 Web 的用户界面,允许用户通过图形化界面管理 Kubernetes 集群中的资源。它提供了对 Pod、Service、Deployment 等资源的查看、创建、删除和更新操作。通过 Kubernetes Dashboard,用户可以更方便地管理和监控集群状态。
kubectl 是 Kubernetes 的命令行工具,用于与 Kubernetes 集群进行交互。在部署 Kubernetes Dashboard 之前,首先需要安装 kubectl。
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/windows/amd64/kubectl.exe"
Minikube 是一个用于在本地运行 Kubernetes 集群的工具。它可以在单节点上运行 Kubernetes,适合开发和测试环境。
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
brew install minikube
choco install minikube
在安装好 kubectl 和 Minikube 之后,可以开始部署 Kubernetes Dashboard。
minikube start
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
kubectl proxy
在浏览器中访问 http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/,即可看到 Kubernetes Dashboard 的登录页面。
为了使用 Token 登录 Kubernetes Dashboard,首先需要创建一个 Service Account。
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
将上述内容保存为 admin-user.yaml,然后执行以下命令创建 Service Account:
kubectl apply -f admin-user.yaml
接下来,需要将 Service Account 绑定到 cluster-admin ClusterRole,以赋予其管理员权限。
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kubernetes-dashboard
将上述内容保存为 cluster-role-binding.yaml,然后执行以下命令创建 ClusterRoleBinding:
kubectl apply -f cluster-role-binding.yaml
创建好 Service Account 并绑定 ClusterRole 之后,可以获取该 Service Account 的 Token。
kubectl -n kubernetes-dashboard create token admin-user
执行上述命令后,将输出一个 Token,该 Token 将用于登录 Kubernetes Dashboard。
打开 Kubernetes Dashboard 的登录页面,选择 “Token” 登录方式,将获取到的 Token 粘贴到输入框中,点击 “Sign In” 即可登录。
为了确保 Kubernetes Dashboard 的安全性,建议配置 HTTPS 访问。
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout dashboard.key -out dashboard.crt -subj "/CN=dashboard.example.com"
kubectl create secret tls dashboard-tls --key dashboard.key --cert dashboard.crt -n kubernetes-dashboard
编辑 Kubernetes Dashboard 的 Deployment,添加以下内容:
spec:
template:
spec:
containers:
- name: kubernetes-dashboard
args:
- --tls-cert-file=/tls.crt
- --tls-key-file=/tls.key
volumeMounts:
- mountPath: /tls.crt
name: tls-cert
subPath: tls.crt
- mountPath: /tls.key
name: tls-key
subPath: tls.key
volumes:
- name: tls-cert
secret:
secretName: dashboard-tls
items:
- key: tls.crt
path: tls.crt
- name: tls-key
secret:
secretName: dashboard-tls
items:
- key: tls.key
path: tls.key
保存并应用更新:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
为了进一步限制 Kubernetes Dashboard 的访问,可以通过配置网络策略或使用 Ingress 控制器来实现。
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-dashboard-access
namespace: kubernetes-dashboard
spec:
podSelector:
matchLabels:
k8s-app: kubernetes-dashboard
ingress:
- from:
- namespaceSelector:
matchLabels:
name: allowed-namespace
将上述内容保存为 network-policy.yaml,然后执行以下命令创建网络策略:
kubectl apply -f network-policy.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: dashboard-ingress
namespace: kubernetes-dashboard
annotations:
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
spec:
tls:
- hosts:
- dashboard.example.com
secretName: dashboard-tls
rules:
- host: dashboard.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: kubernetes-dashboard
port:
number: 443
将上述内容保存为 ingress.yaml,然后执行以下命令创建 Ingress:
kubectl apply -f ingress.yaml
如果 Token 无效或过期,可以重新生成 Token 并尝试登录。
kubectl -n kubernetes-dashboard create token admin-user
如果无法访问 Kubernetes Dashboard,请检查 kubectl proxy 是否正常运行,并确保网络策略或 Ingress 配置正确。
如果 HTTPS 配置失败,请检查证书和密钥是否正确生成,并确保 Kubernetes Secret 和 Deployment 配置正确。
通过本文的介绍,您已经了解了如何部署 Kubernetes Dashboard 并配置 Token 登录方式。为了确保 Kubernetes Dashboard 的安全性,建议配置 HTTPS 访问并限制访问权限。希望本文对您有所帮助,祝您在 Kubernetes 的世界中玩得愉快!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。