请参阅以下说明,在使用适用于 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 配置文件中指明了这一点,请获取工作节点的虚拟机 IP 地址,并为 Grafana FQDN 创建 DNS 记录。
  1. 将上下文切换到置备了集群的 vSphere 命名空间
    kubectl config use-context VSPHERE-NAMESPACE
  2. 列出集群中的节点。
    kubectl get virtualmachines
  3. 选择其中一个工作节点,然后使用以下命令对其进行描述。
    kubectl describe virtualmachines tkgs-cluster-X-workers-9twdr-59bc54dc97-kt4cm
  4. 找到虚拟机的 IP 地址,例如 Vm Ip: 10.115.22.43
  5. 要验证 Grafana 扩展的安装,请使用映射到工作节点 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