本主題說明如何將 Grafana 部署到工作負載叢集。以下程序適用於 vSphere、Amazon Web Services (AWS) 和 Azure 部署。
Grafana 是開放原始碼軟體,可讓您視覺化和分析 Prometheus 在叢集上收集的度量資料。Tanzu Kubernetes Grid 包含可在工作負載叢集上部署的 Grafana 套件。
重要Tanzu Kubernetes Grid 中對 IPv6 位址的支援有限;請參閱在 IPv6 上部署叢集 (僅限 vSphere)。如果不是部署到純 IPv6 網路環境,則必須在以下步驟中提供 IPv4 位址。
若要準備叢集,請執行下列動作:
針對要在其中部署 Grafana 的工作負載叢集,取得其管理員認證。例如:
tanzu cluster kubeconfig get my-cluster --admin
將 kubectl 的內容設定為叢集。例如:
kubectl config use-context my-cluster-admin@my-cluster
對 Grafana 啟用入口:依預設,Grafana 已啟用入口。您需要安裝下列套件:
若要部署 Grafana,請執行以下命令:
如果叢集沒有安裝 Grafana 套件的套件存放庫,例如 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:v2023.10.16
。若要從 Tanzu CLI 取得此值,請參閱列出套件存放庫,或在 Tanzu Mission Control 中查看叢集 (Cluster) 窗格中的附加元件 (Addons) > 存放庫 (Repositories) 清單。確認工作負載叢集中有 Grafana 套件可用:
tanzu package available list -A
擷取可用套件的版本:
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 9.5.1+vmware.2-tkg.3 2021-05-19T18:00:00Z tanzu-package-repo-global
為 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 套件組態參數。
編輯 grafana-data-values.yaml
,並將 secret.admin_password
取代為 Base64 編碼密碼。若要產生 Base64 編碼的密碼,請執行:
echo -n 'mypassword' | base64
您也可以使用 https://www.base64encode.org/ 上的 Base64 編碼工具將密碼編碼。例如,使用任一方法,mypassword
將產生編碼密碼 bXlwYXNzd29yZA==
。
vSphere with Tanzu:如果您要將 Grafana 部署到使用 vSphere with Tanzu 主管所建立的工作負載叢集,請在 grafana-data-values.yaml
檔案中,為 grafana.pvc.storageClassName
設定一個為非空值:
grafana:
pvc:
storageClassName: STORAGE-CLASS
其中,STORAGE-CLASS
是叢集儲存區類別的名稱,一如 kubectl get storageclass
所傳回的名稱。
(選用) 修改 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 套件組態參數。
對 grafana-data-values.yaml
檔案進行任何必要的變更後,移除其中的所有註解:
yq -i eval '... comments=""' grafana-data-values.yaml
部署套件:
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-packages
或 tanzu-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 9.5.1+vmware.2-tkg.3 --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 套件。例如:
tanzu package installed list -A
/ Retrieving installed packages...
NAME PACKAGE-NAME PACKAGE-VERSION STATUS NAMESPACE
cert-manager cert-manager.tanzu.vmware.com 1.11.1+vmware.1-tkg.1 Reconcile succeeded my-packages
contour contour.tanzu.vmware.com 1.24.4+vmware.1-tkg.1 Reconcile succeeded my-packages
grafana grafana.tanzu.vmware.com 9.5.1+vmware.2-tkg.3 Reconcile succeeded tkg-system
prometheus prometheus.tanzu.vmware.com 2.43.0+vmware.1-tkg.1 Reconcile succeeded tkg-system
antrea antrea.tanzu.vmware.com Reconcile succeeded tkg-system
[...]
grafana
套件和 grafana
應用程式會安裝在您執行 tanzu package install
命令時所指定的命名空間中。
確認 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
是安裝套件的命名空間。
列出叢集中正在執行的所有網繭,以確認新服務正在執行:
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 套件的組態參數:
若要擷取套件結構描述:
tanzu package available get grafana.tanzu.vmware.com/9.5.1+vmware.2-tkg.3 -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 的服務類型。支援的值:ClusterIP 、NodePort 、LoadBalancer 。(若為 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 | 定義持續性磁碟區宣告的存取模式。支援的值:ReadWriteOnce 、ReadOnlyMany 、ReadWriteMany 。 |
字串 | 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-data-values.yaml
檔案中的 Grafana 組態。
更新已安裝的套件:
tanzu package installed update grafana \
--version 9.5.1+vmware.2-tkg.3 \
--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 套件,請執行:
tanzu package installed delete grafana --namespace my-packages
如需有關刪除的資訊,請參閱刪除套件。
部署 Grafana 後,grafana 套件會建立具有 grafana.system.tanzu
完整網域名稱 (FQDN) 的 Contour HTTPProxy 物件。
若要使用此 FQDN 存取 Grafana 儀表板:
在本機 /etc/hosts
檔案中建立項目,以將 IP 位址指向此 FQDN:
tanzu-system-ingress
命名空間中的 Envoy 服務。導覽至 https://grafana.system.tanzu
。
由於站台使用自我簽署憑證,您可能需要瀏覽特定於瀏覽器的安全性警告,然後才能存取儀表板。