安装 Kubernetes Dashboard
Kubernetes Dashboard是 Kubernetes 集群通用的、基于 Web 的 UI。它允许用户管理集群中运行的应用程序并对其进行故障排除,以及管理集群本身。
安装
添加 kubernetes-dashboard 仓库
helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/
生成 values.yaml
helm show values kubernetes-dashboard/kubernetes-dashboard > values.yaml
修改 values.yaml
# kubernetes-dashboard/values.yaml
metricsScraper:
## Wether to enable dashboard-metrics-scraper
enabled: true
如果想查看将要部署的资源清单,可以执行以下命令
helm template kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard -n kubernetes-dashboard -f values.yaml > kubernetes-dashboard.yaml
安装 kubernetes-dashboard
helm install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard -n kubernetes-dashboard --create-namespace -f values.yaml
等待安装完成
kubectl get pods -n kubernetes-dashboard -w
# NAME READY STATUS RESTARTS AGE
# kubernetes-dashboard-795569787f-s2h8f 2/2 Running 0 11s
通过 Ingress 访问
我们可以通过给 Dashboard 配置 Ingress,通过域名的方式来访问。
创建 ingress 清单文件
# ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: dashboard-ingress
namespace: kubernetes-dashboard
annotations:
cert-manager.io/cluster-issuer: letsencrypt-dns01 # 配置自动生成 https 证书
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/backend-protocol: HTTPS
nginx.ingress.kubernetes.io/ssl-redirect: 'true' # 强制跳转 https
nginx.ingress.kubernetes.io/secure-backends: 'true'
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
tls:
- hosts:
- 'k8s.todoit.tech'
secretName: dashboard-letsencrypt-tls
rules:
- host: k8s.todoit.tech
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: kubernetes-dashboard
port:
number: 443
kubectl apply -f ingress.yaml
Host 映射
等待 HTTPS 证书签发完成
kubectl get certificate -n kubernetes-dashboard -w
# NAME READY SECRET AGE
# dashboard-letsencrypt-tls False dashboard-letsencrypt-tls 65s
# dashboard-letsencrypt-tls True dashboard-letsencrypt-tls 2m32s
创建 Admin 用户
Kubernetes Dashboard 需要较大的权限才能够访问所有资源,所以我们可以创建一个 admin-user 的 ServiceAccount 来获取对应的 token。
# admin-user.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
---
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
kubectl apply -f admin-user.yaml
获得访问 Token
在浏览器输入 k8s.todoit.tech 即可访问 Kubernetes Dashboard。
运行如下命令
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
拷贝 token,填充到刚才打开的页面,即可进入仪表板。现在好好探索一番吧。
修改 Token 有效时间
Dashboard Token 的默认有效时间是 15 分钟,到期后会自动退出登陆,不方便学习探索。
修改配置如下,将 token 有效时间设置为 12 小时。
# kubernetes-dashboard/values.yaml
extraArgs:
- --token-ttl=43200 # 增加这一行,设置 token 过期时间为12小时
更新部署
helm upgrade kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard -n kubernetes-dashboard -f values.yaml
参考