1. 前提条件
2. 配置 https 证书为 secret
3. dashboard 安装
3.1 helm 拉取 dashboard 的 chart
3.2 配置 dashboard 的 chart 包配置
3.3 helm 执行创建 dashboard 的 release
3.4 通过域名访问 dashboard
4. 查看 token 并使用 token 登陆
5. 给 dashboard 的 serviceaccont 授权
这篇博文介绍的是安装 Dashboard V2.0.3, 并将其映射到具体的域名上. 先上一个成果图, 如果安装过程中有遇到什么问题, 可以评论联系我
1. 前提条件
本次安装基于 Helm 的 chart 包安装的, 且向外暴露服务的方式为 Ingress, 所以有以下前提:
已安装好 Helm
如未安装 helm, 可以参照: kubernetes 系列 (十六) - Helm 安装和入门
集群已经以 DaemonSet 方式安装好了 Ingress-nginx
如未安装, 安装教程可以参照下篇文章的第四小节部分: kubernetes 系列 (十) - 通过 Ingress 实现七层代理
一个已经备案过的域名, 和具体的域名配套的 https 证书
因为使用的是 ingress, 所以必须要域名, 且 dashboard 需要 https 才能外网访问, 证书可以在阿里云之类的购买一年期的免费赠书
2. 配置 https 证书为 secret
上传域名的 nginx 证书到服务器上
- # 具体上传过程不赘述
- # 这里假设证书 aaa.key 和 bbb.crt 已经上传至路径 / usr/local/cert
- cd /usr/local/cert
- # 创建 secret 到 kube-system 命名空间下
- # 之后我们的 dashboard 也会创建在这个命名空间下, 需要依赖这个, 所以提前创建
- kubectl creat secret tls dashboard-tls --key aaa.key --cert bbb.crt -n kube-system
3. dashboard 安装
3.1 helm 拉取 dashboard 的 chart
- # 添加 helmhub 上的 dashboard 官方 repo 仓库
- helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/
- # 查看添加完成后的仓库
- helm repo list
- # 查询 dashboard 的 chart
- helm search repo kubernetes-dashboard
- # 新建文件夹用于保存 chart
- mkdir dashboard-chart && cd dashboard-chart
- # 拉取 chart
- helm pull kubernetes-dashboard/kubernetes-dashboard
- # 此时会有一个压缩包, 解压它
- tar -zxvf kubernetes-dashboard-2.3.0.tgz
- # 进入到解压后的文件夹
- cd kubernetes-dashboard
3.2 配置 dashboard 的 chart 包配置
注意: 以下创建的 new-values.YAML 是基于 values.YAML 修改的, 即意味着如果需要跟自定义的配置, 可以自己参照 values.YAML 修改配置文件
新建一个 new-values.YAML, 内容如下
注意: 以下的 host 需要换成自己的域名, 且 secretname 需要跟刚刚创建的 secret 对应起来
- image:
- repository: kubernetesui/dashboard
- tag: v2.0.3
- pullPolicy: IfNotPresent
- pullSecrets: []
- replicaCount: 1
- annotations: {}
- labels: {}
- extraEnv: []
- podAnnotations:
- seccomp.security.alpha.kubernetes.io/pod: 'runtime/default'
- nodeSelector: {}
- tolerations: []
- affinity: {}
- resources:
- requests:
- CPU: 100m
- memory: 200Mi
- limits:
- CPU: 2
- memory: 200Mi
- protocolHttp: false
- service:
- type: ClusterIP
- externalPort: 443
- annotations: {}
- labels: {}
- ingress:
- enabled: true
- annotations:
- nginx.ingress.kubernetes.io/secure-backends: "true"
- nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
- paths:
- - /
- customPaths: []
- hosts:
- - xxx.xxx.com # 你的域名
- tls:
- # 注意这个名字要跟前面新建的 secret 对上
- - secretName: dashboard-tls
- hosts:
- - xxx.xxx.com # 你的域名
- metriCSScraper:
- enabled: false
- image:
- repository: kubernetesui/metrics-scraper
- tag: v1.0.4
- resources: {}
- containerSecurityContext:
- allowPrivilegeEscalation: false
- readOnlyRootFilesystem: true
- runAsUser: 1001
- runAsGroup: 2001
- metrics-server:
- enabled: false
- rbac:
- create: true
- clusterRoleMetrics: true
- clusterReadOnlyRole: false
- serviceAccount:
- create: true
- name:
- livenessProbe:
- initialDelaySeconds: 30
- timeoutSeconds: 30
- podDisruptionBudget:
- enabled: false
- minAvailable:
- maxUnavailable:
- containerSecurityContext:
- allowPrivilegeEscalation: false
- readOnlyRootFilesystem: true
- runAsUser: 1001
- runAsGroup: 2001
- networkPolicy:
- enabled: false
3.3 helm 执行创建 dashboard 的 release
- # 执行路径在 new-values.YAML 目录
- helm install -f new-values.YAML --namespace kube-system kubernetes-dashboard .
3.4 通过域名访问 dashboard
注意: 云服务商的域名解析处, 需要将域名通过 A 记录解析到某个 node 节点上
然后访问刚刚配置文件配置的域名应该能够访问到如下界面
4. 查看 token 并使用 token 登陆
这里我们需要查看 token
查看内容含有 token 的 secret
- [root@k8s-master kubernetes-dashboard]# kubectl get secret -n kube-system | grep kubernetes-dashboard-token
- kubernetes-dashboard-token-vgp9w kubernetes.io/service-account-token 3 22h
describe 一下获取 token 值
kubectl describe secret kubernetes-dashboard-token-vgp9w -n kube-system
复制这一串 token
根据如下的登陆
登陆成功
5. 给 dashboard 的 serviceaccont 授权
此时我们刚进去界面, 发现什么资源都显示不了, 是因为 dashboard 默认的 serviceaccount 并没有权限, 所以我们需要给予它授权.
注意: 我这里直接赋予的是 admin 权限, 如果需要更加细颗粒度的授权, 请参照官方的说明
创建
dashboard-admin.YAML
, 内容为以下
- apiVersion: rbac.authorization.k8s.io/v1
- kind: ClusterRoleBinding
- metadata:
- name: kubernetes-dashboard
- namespace: kube-system
- roleRef:
- apiGroup: rbac.authorization.k8s.io
- kind: ClusterRole
- name: cluster-admin
- subjects:
- - kind: ServiceAccount
- name: kubernetes-dashboard
- namespace: kube-system
应用资源文件
- dashboard-admin.YAML
- kubectl apply -f dashboard-admin.YAML
授权成功, 可以通过 dashboard 查看到资源
来源: https://www.cnblogs.com/baoshu/p/13326480.html