kubernetes系列(十七) - 通過helm安裝dashboard詳細教程

寶樹吶發表於2020-07-16

這篇博文介紹的是安裝Dashboard V2.0.3, 並將其對映到具體的域名上。先上一個成果圖,如果安裝過程中有遇到什麼問題,可以評論聯絡我

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

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節點上

然後訪問剛剛配置檔案配置的域名應該能夠訪問到如下介面


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

  1. 根據如下的登陸

  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檢視到資源

相關文章