在工作負載叢集上部署 Grafana

本主題說明如何將 Grafana 部署到工作負載叢集。以下程序適用於 vSphere、Amazon Web Services (AWS) 和 Azure 部署。

Grafana

Grafana 是開放原始碼軟體,可讓您視覺化和分析 Prometheus 在叢集上收集的度量資料。Tanzu Kubernetes Grid 包含可在工作負載叢集上部署的 Grafana 套件。

必要條件

重要

Tanzu Kubernetes Grid 中對 IPv6 位址的支援有限;請參閱在 IPv6 上部署叢集 (僅限 vSphere)。如果不是部署到純 IPv6 網路環境,則必須在以下步驟中提供 IPv4 位址。

準備工作負載叢集以部署 Grafana

若要準備叢集,請執行下列動作:

  1. 針對要在其中部署 Grafana 的工作負載叢集,取得其管理員認證。例如:

    tanzu cluster kubeconfig get my-cluster --admin
    
  2. 將 kubectl 的內容設定為叢集。例如:

    kubectl config use-context my-cluster-admin@my-cluster
    
  3. 對 Grafana 啟用入口:依預設,Grafana 已啟用入口。您需要安裝下列套件:

繼續在工作負載叢集上部署 Grafana

將 Grafana 部署到工作負載叢集

若要部署 Grafana,請執行以下命令:

  1. 如果叢集沒有安裝 Grafana 套件的套件存放庫,例如 tanzu-standard 存放庫,請安裝一個:

    附註

    如果要將以計劃為基礎的叢集 (舊版) 為目標,請跳過此步驟。對於以計劃為基礎的叢集,會在 tanzu-package-repo-global 命名空間中的每個叢集中,自動啟用 tanzu-standard 套件存放庫。

    tanzu package repository add PACKAGE-REPO-NAME --url PACKAGE-REPO-ENDPOINT --namespace tkg-system
    

    其中:

    • PACKAGE-REPO-NAME 是軟體套件存放庫的名稱,例如 tanzu-standard 或使用 ADDITIONAL_IMAGE_REGISTRY 變數設定的私人映像登錄名稱。
    • PACKAGE-REPO-ENDPOINT 是套件存放庫的 URL。

      • 對於此版本,tanzu-standard URL 為 projects.registry.vmware.com/tkg/packages/standard/repo:v2.2.0。若要從 Tanzu CLI 取得此值,請參閱列出套件存放庫,或在 Tanzu Mission Control 中查看叢集 (Cluster) 窗格中的附加元件 (Addons) > 存放庫 (Repositories) 清單。
  2. 確認工作負載叢集中有 Grafana 套件可用:

    tanzu package available list -A
    
  3. 擷取可用套件的版本:

    tanzu package available list grafana.tanzu.vmware.com -A
    | Retrieving package versions for grafana.tanzu.vmware.com...
     NAME                           VERSION                          RELEASED-AT           NAMESPACE
     grafana.tanzu.vmware.com       7.5.17+vmware.1-tkg.1             2021-05-19T18:00:00Z  tanzu-package-repo-global
    
  4. 為 Grafana 組態建立組態檔:

    tanzu package available get grafana.tanzu.vmware.com/PACKAGE-VERSION --default-values-file-output FILE-PATH
    
    

    其中,PACKAGE-VERSION 是您要安裝的 Grafana 套件版本,FILE-PATH 是用來儲存組態檔的位置,例如,grafana-data-values.yaml

    如需在 grafana-data-values.yaml 中使用的組態參數的相關資訊,請參閱下方的 Grafana 套件組態參數

  5. 編輯 grafana-data-values.yaml,並將 secret.admin_password 取代為 Base64 編碼密碼。若要產生 Base64 編碼的密碼,請執行:

    echo -n 'mypassword' | base64
    

    您也可以使用 https://www.base64encode.org/ 上的 Base64 編碼工具將密碼編碼。例如,使用任一方法,mypassword 將產生編碼密碼 bXlwYXNzd29yZA==

  6. vSphere with Tanzu:如果您要將 Grafana 部署到使用 vSphere with Tanzu 主管所建立的工作負載叢集,請在 grafana-data-values.yaml 檔案中,為 grafana.pvc.storageClassName 設定一個為非空值:

    grafana:
    pvc:
      storageClassName: STORAGE-CLASS
    

    其中,STORAGE-CLASS 是叢集儲存區類別的名稱,一如 kubectl get storageclass 所傳回的名稱。

  7. (選用) 修改 grafana-data-values.yaml 中的 Grafana 資料來源組態。Grafana 將 Prometheus 設定為預設資料來源。如果您已自訂 Prometheus 部署命名空間,但該命名空間未部署在預設命名空間 (tanzu-system-monitoring),您需要在 grafana-data-values.yaml 中變更 Grafana 資料來源組態。若要變更資料來源組態,請將下方區段複製到顯示的位置,並視需要進行修改 url

    #! The namespace in which to deploy grafana.
    namespace: tanzu-system-dashboards
    
    grafana:
      #! The grafana configuration.
      config:
        #! Refer to https://grafana.com/docs/grafana/latest/administration/provisioning/#example-data-source-config-file
        datasource_yaml: |-
          apiVersion: 1
          datasources:
            - name: Prometheus
              type: prometheus
              url: prometheus-server.<change-to-prometheus-namespace>.svc.cluster.local
              access: proxy
              isDefault: true
    

    如需在 grafana-data-values.yaml 中使用的組態參數的相關資訊,請參閱下方的 Grafana 套件組態參數

  8. grafana-data-values.yaml 檔案進行任何必要的變更後,移除其中的所有註解:

    yq -i eval '... comments=""' grafana-data-values.yaml
    
  9. 部署套件:

    tanzu package install grafana \
    --package grafana.tanzu.vmware.com \
    --version AVAILABLE-PACKAGE-VERSION \
    --values-file grafana-data-values.yaml \
    --namespace TARGET-NAMESPACE
    

    其中:

    • TARGET-NAMESPACE 是要在其中安裝 Grafana 套件的命名空間。例如,my-packagestanzu-user-managed-packages 命名空間。

      • 如果未指定 --namespace 旗標,Tanzu CLI 會使用 default 命名空間。Grafana 網繭及與 Grafana 元件相關聯的任何其他資源會建立在您於 grafana-data-values.yaml 中所建立的命名空間中,請勿將 Grafana 套件安裝到此命名空間。
      • 指定的命名空間必須已存在,例如,從執行 kubectl create namespace my-packages
    • AVAILABLE-PACKAGE-VERSION 是上面擷取到的版本。

    例如:

    tanzu package install grafana --package grafana.tanzu.vmware.com --version 7.5.17+vmware.1-tkg.1 --values-file grafana-data-values.yaml --namespace my-packages
    
    - Installing package 'grafana.tanzu.vmware.com'
    | Getting namespace 'my-packages'
    | Getting package metadata for 'grafana.tanzu.vmware.com'
    | Creating service account 'grafana-my-packages-sa'
    | Creating cluster admin role 'grafana-my-packages-cluster-role'
    | Creating cluster role binding 'grafana-my-packages-cluster-rolebinding'
    | Creating secret 'grafana-my-packages-values'
    - Creating package resource
    \ Package install status: Reconciling
    
     Added installed package 'grafana' in namespace 'my-packages'
    
    附註

    如果安裝失敗並顯示 error: Secret in version "v1" cannot be handled as a Secret: illegal base64 data at input byte 4 (reason: BadRequest),請參閱疑難排解工作負載叢集問題中的「從預設 YAML 檔案安裝 Grafana 時未建立密鑰」

驗證 Grafana 部署

部署 Grafana 後,您可以驗證部署是否成功:

  1. 確認已安裝 Grafana 套件。例如:

    tanzu package installed list -A
    / Retrieving installed packages...
    NAME            PACKAGE-NAME                     PACKAGE-VERSION          STATUS               NAMESPACE
    cert-manager    cert-manager.tanzu.vmware.com    1.1.0+vmware.1-tkg.2     Reconcile succeeded  my-packages
    contour         contour.tanzu.vmware.com         1.17.1+vmware.1-tkg.1    Reconcile succeeded  my-packages
    grafana         grafana.tanzu.vmware.com         7.5.17+vmware.1-tkg.1     Reconcile succeeded  tkg-system
    prometheus      prometheus.tanzu.vmware.com      2.27.0+vmware.1-tkg.1    Reconcile succeeded  tkg-system
    antrea          antrea.tanzu.vmware.com                                   Reconcile succeeded  tkg-system
    [...]
    

    grafana 套件和 grafana 應用程式會安裝在您執行 tanzu package install 命令時所指定的命名空間中。

  2. 確認 grafana 應用程式協調成功:

    kubectl get apps -A
    

    例如:

    NAMESPACE     NAME                           DESCRIPTION           SINCE-DEPLOY   AGE
    my-packages   cert-manager                   Reconcile succeeded   37s            21h
    my-packages   contour                        Reconcile succeeded   33s            129m
    my-packages   grafana                        Reconcile succeeded   19s            6m56s
    my-packages   prometheus                     Reconcile succeeded   46s            21h
    tkg-system    antrea                         Reconcile succeeded   3m50s          24h
    [...]
    

    如果狀態不是 Reconcile succeeded,請檢視 grafana 應用程式的完整狀態詳細資料。檢視完整狀態可協助您對問題進行疑難排解:

    kubectl get app grafana --namespace PACKAGE-NAMESPACE -o yaml
    

    其中,PACKAGE-NAMESPACE 是安裝套件的命名空間。

  3. 列出叢集中正在執行的所有網繭,以確認新服務正在執行:

    kubectl get pods -A
    

    tanzu-system-dashboards 命名空間中,您應該會看到 grafana 服務正在網繭中執行:

    NAMESPACE               NAME                                    READY   STATUS    RESTARTS   AGE
    [...]
    tanzu-system-dashboards   grafana-6865dbb4f5-pk2qg              2/2     Running   0          7m7s
    [...]
    

Grafana 網繭及與 Grafana 元件相關聯的任何其他資源會建立在您於 grafana-data-values.yaml 所提供的命名空間中。如果使用的是預設命名空間,則會在 tanzu-system-dashboards 命名空間中建立。

Grafana 套件組態參數

您可以使用兩種方式來檢視 Grafana 套件的組態參數:

檢閱套件結構描述

若要擷取套件結構描述:

tanzu package available get grafana.tanzu.vmware.com/7.5.17+vmware.1-tkg.1 -n AVAILABLE-PACKAGE-NAMESPACE --values-schema

此命令會列出 Grafana 套件的組態參數及其預設值。您可以使用輸出來更新上述準備 Grafana 套件組態檔中所建立的 grafana-data-values.yml 檔案。

檢閱組態參數

下表列出 Grafana 套件的組態參數,並說明其預設值。

您可以在上述在工作負載叢集上部署 Grafana 中建立的 grafana-data-values.yml 檔案中,設定以下組態值。

參數 說明 類型 預設
namespace 將部署 Grafana 的命名空間。 字串 tanzu-system-dashboards
grafana.deployment.replicas Grafana 複本數目。 整數 1
grafana.deployment.containers.resources Grafana 容器資源要求和限制。 對應 {}
grafana.deployment.k8sSidecar.containers.resources k8s-sidecar 容器資源要求和限制。 對應 {}
grafana.deployment.podAnnotations Grafana 部署網繭註解。 對應 {}
grafana.deployment.podLabels Grafana 部署網繭標籤。 對應 {}
grafana.service.type 用於公開 Grafana 的服務類型。支援的值:ClusterIPNodePortLoadBalancer。(若為 vSphere,將此參數設定為 NodePort) 字串 LoadBalancer
grafana.service.port Grafana 服務連接埠。 整數 80
grafana.service.targetPort Grafana 服務目標連接埠。 整數 9093
grafana.service.labels Grafana 服務標籤。 對應 {}
grafana.service.annotations Grafana 服務註解。 對應 {}
grafana.config.grafana_ini 如需 Grafana 組態的相關資訊,請參閱 GitHub 中的 Grafana 組態預設值 組態檔 grafana.ini
grafana.config.datasource_yaml 如需資料來源組態的相關資訊,請參閱 Grafana 說明文件 字串 prometheus
grafana.config.dashboardProvider_yaml 如需儀表板提供者組態的相關資訊,請參閱 Grafana 說明文件 YAML 檔案 provider.yaml
grafana.pvc.annotations 用於持續性磁碟區宣告的儲存區類別。依預設,此為空值,且會使用預設佈建程式。 字串 null
grafana.pvc.storageClassName 用於持續性磁碟區宣告的儲存區類別。依預設,此為空值,且會使用預設佈建程式。 字串 null
grafana.pvc.accessMode 定義持續性磁碟區宣告的存取模式。支援的值:ReadWriteOnceReadOnlyManyReadWriteMany 字串 ReadWriteOnce
grafana.pvc.storage 定義持續性磁碟區宣告的儲存區大小。 字串 2Gi
grafana.secret.type 為 Grafana 儀表板定義的祕密金鑰類型。 字串 Opaque
grafana.secret.admin_user 用於存取 Grafana 儀表板的 Base64 編碼使用者名稱。預設值為 YWRtaW4=,這相當於純文字格式的 admin 字串 YWRtaW4=
grafana.secret.admin_password 用於存取 Grafana 儀表板的 Base64 編碼密碼。預設值為 YWRtaW4=,這相當於純文字格式的 admin 字串 YWRtaW4=
ingress.enabled 啟用/停用 Grafana 的入口。 布林值 true
ingress.virtual_host_fqdn 用於存取 grafana 的主機名稱。 字串 grafana.system.tanzu
ingress.prefix grafana 的路徑首碼。 字串 /
ingress.servicePort 用於 Proxy 流量的 Grafana 服務連接埠。 整數 80
ingress.tlsCertificate.tls.crt 用於輸入的選用憑證 (若您要使用自己的 TLS 憑證)。依預設,會產生自我簽署憑證。附註tls.crt 是金鑰且為非巢狀。 字串 Generated cert
ingress.tlsCertificate.tls.key 入口的可用憑證私密金鑰 (如果您要使用自己的 TLS 憑證)。附註tls.key 是金鑰且為非巢狀。 字串 Generated cert private key
ingress.tlsCertificate.ca.crt 可用的 CA 憑證。附註ca.crt 是金鑰且為非巢狀。 字串 CA certificate

更新正在執行的 Grafana 部署

若要在部署後變更 Grafana 套件的組態,請更新已部署的 Grafana 套件:

  1. 更新 grafana-data-values.yaml 檔案中的 Grafana 組態。

  2. 更新已安裝的套件:

    tanzu package installed update grafana \
    --version 7.5.17+vmware.1-tkg.1 \
    --values-file grafana-data-values.yaml \
    --namespace my-packages
    

    預期輸出:

    | Updating package 'grafana'
    - Getting package install for 'grafana'
    | Updating secret 'grafana-my-packages-values'
    | Updating package install for 'grafana'
    
     Updated package install 'grafana' in namespace 'my-packages'
    

將會使用您新增的值協調 Grafana 套件。kapp-controller 套用變更可能需要長達五分鐘的時間。

如需有關更新的資訊,請參閱更新套件

刪除 Grafana 部署

若要移除叢集上的 Grafana 套件,請執行:

tanzu package installed delete grafana --namespace my-packages

如需有關刪除的資訊,請參閱刪除套件

存取 Grafana 儀表板

部署 Grafana 後,grafana 套件會建立具有 grafana.system.tanzu 完整網域名稱 (FQDN) 的 Contour HTTPProxy 物件。

若要使用此 FQDN 存取 Grafana 儀表板:

  1. 在本機 /etc/hosts 檔案中建立項目,以將 IP 位址指向此 FQDN:

    • AWS 或 Azure:將 LoadBalancer 的 IP 位址用於 tanzu-system-ingress 命名空間中的 Envoy 服務。
    • vSphere:使用工作節點的 IP 位址。
  2. 導覽至 https://grafana.system.tanzu

由於站台使用自我簽署憑證,您可能需要瀏覽特定於瀏覽器的安全性警告,然後才能存取儀表板。

check-circle-line exclamation-circle-line close-line
Scroll to top icon