Consulte estas instrucciones para instalar Grafana en un clúster de TKG aprovisionado con TKr para vSphere 7.x.

Requisitos previos

Consulte Flujo de trabajo para instalar paquetes estándar en TKr para vSphere 7.x.

Instalar Grafana

Instale Grafana.
  1. Enumere las versiones de Grafana disponibles en el repositorio.
    kubectl get packages -n tkg-system | grep grafana
  2. Cree el espacio de nombres de Grafana.
    kubectl create ns tanzu-system-dashboards
  3. Cree una etiqueta de PSA para el espacio de nombres.
    kubectl label namespace tanzu-system-dashboards pod-security.kubernetes.io/enforce=privileged
  4. Como alternativa, cree de forma declarativa la etiqueta y el espacio de nombres de Grafana mediante el archivo ns-grafana-dashboard.yaml.
    apiVersion: 
    v1kind: Namespace
    metadata:  
      name: grafana-dashboard
    ---
    apiVersion: v1
    kind: Namespace
    metadata:  
      name: tanzu-system-dashboards  
      labels:
        pod-security.kubernetes.io/enforce: privileged
  5. Cree grafana-data-values.yaml.

    Consulte Referencia del paquete de Grafana.

  6. Cree un secreto con el archivo grafana-data-values.yaml como entrada.
    kubectl create secret generic grafana-data-values --from-file=values.yaml=grafana-data-values.yaml -n tkg-system
    secret/grafana-data-values created
  7. Compruebe el secreto.
    kubectl get secrets -A
    kubectl describe secret grafana-data-values -n tkg-system
  8. Si es necesario, personalice grafana-data-values en función de su entorno.

    Consulte Referencia del paquete de Grafana.

    Si actualiza los valores de datos, actualice el secreto con el siguiente comando.
    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. Cree la especificación grafana.yaml.

    Consulte Instalar Grafana en TKr para vSphere 7.x.

  10. Instale 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. Compruebe la instalación del paquete de Grafana.
    kubectl get pkgi -A | grep grafana
  12. Compruebe los objetos de Grafana.
    kubectl get all -n tanzu-system-dashboards

Acceder al panel de control de Grafana mediante Envoy LoadBalancer

Si se implementa el servicio Contour Envoy de tipo LoadBalancer como requisito previo y lo especificó en el archivo de configuración de Grafana, obtenga la dirección IP externa del equilibrador de carga y cree registros de DNS para el FQDN de Grafana.
  1. Obtenga la dirección External-IP para el servicio Envoy de tipo LoadBalancer.
    kubectl get service envoy -n tanzu-system-ingress
    Debería ver la dirección External-IP que se devuelve, por ejemplo:
    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
    Si lo prefiere, puede obtener la dirección External-IP mediante el siguiente comando.
    kubectl get svc envoy -n tanzu-system-ingress -o jsonpath='{.status.loadBalancer.ingress[0]}'
  2. Para comprobar la instalación de la extensión Grafana, actualice el archivo /etc/hosts local con el FQDN de Grafana asignado a la dirección External-IP del equilibrador de carga, como por ejemplo:
    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. Para acceder al panel de control de Grafana, desplácese hasta https://grafana.system.tanzu.

    Dado que el sitio utiliza certificados autofirmados, es posible que tenga que pasar por una advertencia de seguridad específica del navegador antes de poder acceder al panel de control.

  4. Para el acceso de producción, cree dos registros CNAME en un servidor DNS que asignen la dirección External-IP del equilibrador de carga del servicio Envoy al panel de control de Grafana.

Acceder al panel de control de Grafana mediante NodePort de Envoy

Si se implementa el servicio Contour Envoy de tipo NodePort como requisito previo y lo especificó en el archivo de configuración de Grafana, obtenga la dirección IP de la máquina virtual de un nodo de trabajo y cree registros de DNS para el FQDN de Grafana.
  1. Cambie el contexto a la instancia de espacio de nombres de vSphere en la que se aprovisiona el clúster.
    kubectl config use-context VSPHERE-NAMESPACE
  2. Enumere los nodos del clúster.
    kubectl get virtualmachines
  3. Seleccione uno de los nodos de trabajo y describa el nodo mediante el siguiente comando.
    kubectl describe virtualmachines tkgs-cluster-X-workers-9twdr-59bc54dc97-kt4cm
  4. Busque la dirección IP de la máquina virtual; por ejemplo, Vm Ip: 10.115.22.43.
  5. Para comprobar la instalación de la extensión Grafana, actualice el archivo /etc/hosts local con el FQDN de Grafana asignado a una dirección IP de nodo de trabajo, como por ejemplo:
    127.0.0.1 localhost
    127.0.1.1 ubuntu
    # TKG Grafana with Envoy NodePort
    10.115.22.43 grafana.system.tanzu
    
  6. Para acceder al panel de control de Grafana, desplácese hasta https://grafana.system.tanzu.

    Dado que el sitio utiliza certificados autofirmados, es posible que tenga que pasar por una advertencia de seguridad específica del navegador antes de poder acceder al panel de control.

grafana-data-values.yaml

Consulte el archivo grafana-data-values.yaml de ejemplo.
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

Consulte la especificación grafana.yaml de ejemplo. Actualice la versión del paquete según sea necesario.
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