kubernetes系列(十七) - 通过helm安装dashboard详细教程

这篇博文介绍的是安装Dashboard V2.0.3, 并将其映射到具体的域名上。先上一个成果图,如果安装过程中有遇到什么问题,可以评论联系我

kubernetes系列(十七) - 通过helm安装dashboard详细教程

1. 前提条件

本次安装基于Helmchart包安装的,且向外暴露服务的方式为Ingress,所以有以下前提:

  • 已安装好Helm

如未安装helm,可以参照:kubernetes系列(十六) - Helm安装和入门

  • 集群已经以DaemonSet方式安装好了Ingress-nginx

如未安装,安装教程可以参照下篇文章的第四小节部分kubernetes系列(十) - 通过Ingress实现七层代理

  • 一个已经备案过的域名,和具体的域名配套的https证书

因为使用的是ingress,所以必须要域名,且dashboard需要https才能外网访问,证书可以在阿里云之类的购买一年期的免费赠书


2. 配置https证书为secret

  1. 上传域名的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

kubernetes系列(十七) - 通过helm安装dashboard详细教程

3.2 配置dashboard的chart包配置

注意:以下创建的new-values.yaml是基于values.yaml修改的,即意味着如果需要跟自定义的配置,可以自己参照values.yaml修改配置文件

  1. 新建一个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节点上

然后访问刚刚配置文件配置的域名应该能够访问到如下界面

kubernetes系列(十七) - 通过helm安装dashboard详细教程


4. 查看token并使用token登陆

这里我们需要查看token

  1. 查看内容含有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
  1. describe一下获取token值
kubectl describe secret kubernetes-dashboard-token-vgp9w -n kube-system
  1. 复制这一串token

kubernetes系列(十七) - 通过helm安装dashboard详细教程

  1. 根据如下的登陆
    kubernetes系列(十七) - 通过helm安装dashboard详细教程

  2. 登陆成功


5. 给dashboard的serviceaccont授权

此时我们刚进去界面,发现什么资源都显示不了,是因为dashboard默认的serviceaccount并没有权限,所以我们需要给予它授权。

  • 注意:我这里直接赋予的是admin权限,如果需要更加细颗粒度的授权,请参照官方的说明

https://github.com/kubernetes/dashboard/blob/master/docs/user/access-control/README.md

  1. 创建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
  1. 应用资源文件dashboard-admin.yaml
kubectl apply -f dashboard-admin.yaml
  1. 授权成功,可以通过dashboard查看到资源

kubernetes系列(十七) - 通过helm安装dashboard详细教程

上一篇:QT图表chart-饼状图


下一篇:个人技术总结-Android hellocharts折线图