請按照下列指示,在使用適用於 vSphere 7.x 的 TKr 佈建的 TKG 叢集上安裝 Grafana。

必要條件

請參閱在適用於 vSphere 7.x 的 TKr 上安裝標準套件的工作流程

安裝 Grafana

安裝 Grafana。
  1. 列出存放庫中可用的 Grafana 版本。
    kubectl get packages -n tkg-system | grep grafana
  2. 建立 Grafana 命名空間。
    kubectl create ns tanzu-system-dashboards
  3. 為命名空間建立 PSA 標籤。
    kubectl label namespace tanzu-system-dashboards pod-security.kubernetes.io/enforce=privileged
  4. 或者,使用檔案 ns-grafana-dashboard.yaml 以宣告方式建立 Grafana 命名空間和標籤。
    apiVersion: 
    v1kind: Namespace
    metadata:  
      name: grafana-dashboard
    ---
    apiVersion: v1
    kind: Namespace
    metadata:  
      name: tanzu-system-dashboards  
      labels:
        pod-security.kubernetes.io/enforce: privileged
  5. 建立 grafana-data-values.yaml

    請參閱Grafana 套件參考

  6. 使用 grafana-data-values.yaml 檔案作為輸入,建立密碼。
    kubectl create secret generic grafana-data-values --from-file=values.yaml=grafana-data-values.yaml -n tkg-system
    secret/grafana-data-values created
  7. 驗證密碼。
    kubectl get secrets -A
    kubectl describe secret grafana-data-values -n tkg-system
  8. 如有必要,請為您的環境自訂 grafana-data-values

    請參閱Grafana 套件參考

    如果您更新資料值,請使用下列命令更新密碼。
    kubectl create secret generic grafana-data-values --from-file=values.yaml=grafana-data-values.yaml -n tkg-system -o yaml --dry-run=client | kubectl replace -f-
    secret/grafana-data-values replaced
  9. 建立 grafana.yaml 規格。

    請參閱在適用於 vSphere 7.x 的 TKr 上安裝 Grafana

  10. 安裝 Grafana。
    kubectl apply -f grafana.yaml
    serviceaccount/grafana-sa created
    clusterrolebinding.rbac.authorization.k8s.io/grafana-role-binding created
    packageinstall.packaging.carvel.dev/grafana created
  11. 確認 Grafana 套件的安裝。
    kubectl get pkgi -A | grep grafana
  12. 確認 Grafana 物件。
    kubectl get all -n tanzu-system-dashboards

使用 Envoy LoadBalancer 存取 Grafana 儀表板

如果部署了類型為 LoadBalancer 的必要 Contour Envoy 服務,並且您在 Grafana 組態檔中指定了這一點,請取得負載平衡器的外部 IP 位址,並為 Grafana FQDN 建立 DNS 記錄。
  1. 取得類型為 LoadBalancer 的 Envoy 服務的 External-IP 位址。
    kubectl get service envoy -n tanzu-system-ingress
    您應該會看到傳回的 External-IP 位址,例如:
    NAME    TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)                      AGE
    envoy   LoadBalancer   10.99.25.220   10.195.141.17   80:30437/TCP,443:30589/TCP   3h27m
    或者,也可以使用下列命令取得 External-IP 位址。
    kubectl get svc envoy -n tanzu-system-ingress -o jsonpath='{.status.loadBalancer.ingress[0]}'
  2. 若要驗證 Grafana 延伸的安裝,請使用對應至負載平衡器的 External-IP 位址的 Grafana FQDN 來更新本機 /etc/hosts 檔案,例如:
    127.0.0.1 localhost
    127.0.1.1 ubuntu
    #TKG Grafana Extension with Envoy Load Balancer
    10.195.141.17 grafana.system.tanzu
    
  3. 導覽到 https://grafana.system.tanzu,存取 Grafana 儀表板。

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

  4. 若要進行生產存取,請在 DNS 伺服器上建立兩條 CNAME 記錄,以將 Envoy 服務負載平衡器 External-IP 位址對應到 Grafana 儀表板。

使用 Envoy NodePort 存取 Grafana 儀表板

如果部署了類型為 NodePort 的必要 Contour Envoy 服務,並且在 Grafana 組態檔中指定了這一點,請取得 worker 節點的虛擬機器 IP 位址,並為 Grafana FQDN 建立 DNS 記錄。
  1. 將內容切換至佈建叢集所在的 vSphere 命名空間
    kubectl config use-context VSPHERE-NAMESPACE
  2. 列出叢集中的節點。
    kubectl get virtualmachines
  3. 使用下列命令選擇其中一個 worker 節點並加以說明。
    kubectl describe virtualmachines tkgs-cluster-X-workers-9twdr-59bc54dc97-kt4cm
  4. 找到虛擬機器的 IP 位址,例如 Vm Ip: 10.115.22.43
  5. 若要驗證 Grafana 延伸的安裝,請使用對應至 worker 節點 IP 位址的 Grafana FQDN 來更新本機 /etc/hosts 檔案,例如:
    127.0.0.1 localhost
    127.0.1.1 ubuntu
    # TKG Grafana with Envoy NodePort
    10.115.22.43 grafana.system.tanzu
    
  6. 導覽到 https://grafana.system.tanzu,存取 Grafana 儀表板。

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

grafana-data-values.yaml

請參閱以下範例 grafana-data-values.yaml 檔案。
namespace: tanzu-system-dashboards
grafana:
  pspNames: "vmware-system-restricted"
  deployment:
    replicas: 1
    updateStrategy: Recreate
  pvc:
    accessMode: ReadWriteOnce
    storage: 2Gi
    storageClassName: wcpglobalstorageprofile
  secret:
    admin_user: YWRtaW4=
    admin_password: YWRtaW4=
    type: Opaque
  service:
    port: 80
    targetPort: 3000
    type: LoadBalancer
ingress:
  enabled: true
  prefix: /
  servicePort: 80
  virtual_host_fqdn: grafana.system.tanzu

grafana.yaml

請參閱以下範例 grafana.yaml 規格。根據需要更新套件版本。
apiVersion: v1
kind: ServiceAccount
metadata:
  name: grafana-sa
  namespace: tkg-system
  annotations:
    pod-security.kubernetes.io/enforce: "privileged"
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: grafana-role-binding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: grafana-sa
    namespace: tkg-system
---
apiVersion: packaging.carvel.dev/v1alpha1
kind: PackageInstall
metadata:
  name: grafana
  namespace: tkg-system
spec:
  serviceAccountName: grafana-sa
  packageRef:
    refName: grafana.tanzu.vmware.com
    versionSelection:
      constraints: 10.0.1+vmware.1-tkg.2 #PKG-VERSION
  values:
  - secretRef:
      name: grafana-data-values