Implementar Grafana en clústeres de carga de trabajo

En este tema se explica cómo implementar Grafana en un clúster de carga de trabajo. Los siguientes procedimientos se aplican a vSphere, Amazon Web Services (AWS) y las implementaciones de Azure.

Grafana

Grafana es un software de código abierto que permite visualizar y analizar los datos de métricas recopilados por Prometheus en los clústeres. Tanzu Kubernetes Grid incluye un paquete de Grafana que puede implementar en los clústeres de carga de trabajo.

Requisitos previos

Importante

La compatibilidad con direcciones IPv6 en Tanzu Kubernetes Grid es limitada; consulte Implementar clústeres en IPv6 (solo vSphere). Si no va a implementar en un entorno de redes solo IPv6, debe proporcionar direcciones IPv4 en los siguientes pasos.

Preparar el clúster de carga de trabajo para la implementación de Grafana

Para preparar el clúster:

  1. Obtenga las credenciales admin del clúster de carga de trabajo en el que desea implementar Grafana. Por ejemplo:

    tanzu cluster kubeconfig get my-cluster --admin
    
  2. Establezca el contexto de kubectl en el clúster. Por ejemplo:

    kubectl config use-context my-cluster-admin@my-cluster
    
  3. Habilitar la entrada para Grafana: De forma predeterminada, Grafana tiene habilitada la entrada. Para ello es necesario instalar los siguientes paquetes:

Continúe hasta Implementar Grafana en un clúster de carga de trabajo.

Implementar Grafana en el clúster de carga de trabajo

Para implementar Grafana:

  1. Si el clúster no tiene un repositorio de paquetes con el paquete de Grafana instalado, por ejemplo, el repositorio tanzu-standard, instale uno:

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

    Donde:

    • PACKAGE-REPO-NAME es el nombre del repositorio de paquetes, como tanzu-standard o el nombre de un registro de imagen privado configurado con variables ADDITIONAL_IMAGE_REGISTRY.
    • PACKAGE-REPO-ENDPOINTes la URL del repositorio de paquetes.

      • En esta versión, la URL tanzu-standard es projects.registry.vmware.com/tkg/packages/standard/repo:v2023.10.16. Consulte Repositorios de paquetes de lista para obtener este valor de la CLI de Tanzu, o bien en Tanzu Mission Control, consulte la lista Complementos (Addons) > Repositorios (Repositories) en el panel Clúster (Cluster).
  2. Confirme que el paquete de Grafana esté disponible en el clúster de carga de trabajo:

    tanzu package available list -A
    
  3. Recupere la versión del paquete disponible:

    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
    
  4. Cree un archivo de configuración para la configuración de Grafana:

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

    Donde PACKAGE-VERSION es la versión del paquete de Grafana que desea instalar y FILE-PATH es la ubicación en la que desea guardar el archivo de configuración, por ejemplo, grafana-data-values.yaml.

    Para obtener información sobre los parámetros de configuración que se utilizarán en grafana-data-values.yaml, consulte Parámetros de configuración del paquete Grafana a continuación.

  5. Edite grafana-data-values.yaml y reemplace secret.admin_password por una contraseña codificada en Base64. Para generar una contraseña con codificación Base64, ejecute:

    echo -n 'mypassword' | base64
    

    También puede utilizar la herramienta de codificación Base64 en https://www.base64encode.org/ para codificar la contraseña. Por ejemplo, con cualquiera de los métodos mypassword da como resultado la contraseña codificada bXlwYXNzd29yZA==.

  6. vSphere with Tanzu: Si está implementando Grafana en un clúster de carga de trabajo creado por un supervisor de vSphere with Tanzu, establezca un valor no nulo para grafana.pvc.storageClassName en el archivo grafana-data-values.yaml:

    grafana:
    pvc:
      storageClassName: STORAGE-CLASS
    

    Donde STORAGE-CLASS es el nombre de la clase de almacenamiento del clúster como lo devuelve kubectl get storageclass.

  7. (Opcional) Modifique la configuración del origen de datos de Grafana en grafana-data-values.yaml. Grafana está configurado con Prometheus como origen de datos predeterminado. Si ha personalizado el espacio de nombres de implementación de Prometheus y no se implementa en el espacio de nombres predeterminado, tanzu-system-monitoring, debe cambiar la configuración del origen de datos de Grafana en grafana-data-values.yaml. Para cambiar la configuración del origen de datos, copie la siguiente sección en la posición que se muestra y modifique la url según sea necesario.

    #! 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
    

    Para obtener información sobre los parámetros de configuración que se utilizarán en grafana-data-values.yaml, consulte Parámetros de configuración del paquete Grafana a continuación.

  8. Después de realizar los cambios necesarios en el archivo grafana-data-values.yaml, elimine todos los comentarios que contenga:

    yq -i eval '... comments=""' grafana-data-values.yaml
    
  9. Implementar el paquete:

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

    Donde:

    • TARGET-NAMESPACE es el espacio de nombres en el que se desea instalar el paquete de Grafana. Por ejemplo, el espacio de nombres my-packages o tanzu-user-managed-packages.

      • Si no se especifica la marca --namespace, la CLI de Tanzu utiliza el espacio de nombres default. Los pods de Grafana y cualquier otro recurso asociado con el componente Grafana se crean en el espacio de nombres establecido en grafana-data-values.yaml; no instale el paquete de Grafana en este espacio de nombres.
      • El espacio de nombres especificado ya debe existir, por ejemplo, al haber ejecutado kubectl create namespace my-packages.
    • AVAILABLE-PACKAGE-VERSION es la versión que recuperó anteriormente.

    Por ejemplo:

    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'
    
    Nota

    Si se produce un error en la instalación con error: Secret in version "v1" cannot be handled as a Secret: illegal base64 data at input byte 4 (reason: BadRequest), consulte Secreto no creado al instalar Grafana desde el archivo YAML predeterminado en Solucionar problemas del clúster de carga de trabajo.

Compruebe la implementación de Grafana

Después de implementar Grafana, puede comprobar que la implementación se realice correctamente:

  1. Confirme que el paquete de Grafana esté instalado. Por ejemplo:

    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
    [...]
    

    El paquete grafana y la aplicación grafana se instalan en el espacio de nombres que especifique al ejecutar el comando tanzu package install.

  2. Confirme que la aplicación grafana se haya conciliado correctamente:

    kubectl get apps -A
    

    Por ejemplo:

    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
    [...]
    

    Si el estado no es Reconcile succeeded, consulte los detalles del estado completo de la aplicación grafana. Ver el estado completo puede ayudarle a solucionar el problema:

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

    Donde PACKAGE-NAMESPACE es el espacio de nombres en el que se instaló el paquete.

  3. Confirme que los nuevos servicios se estén ejecutando enumerando todos los pods que se ejecutan en el clúster:

    kubectl get pods -A
    

    En el espacio de nombres tanzu-system-dashboards, debería ver el servicio grafana que se ejecuta en un pod:

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

Los pods de Grafana y cualquier otro recurso asociado con el componente Grafana se crean en el espacio de nombres proporcionado en grafana-data-values.yaml. Si utiliza el espacio de nombres predeterminado, estos se crean en el espacio de nombres tanzu-system-dashboards.

Parámetros de configuración del paquete Grafana

Existen dos formas de ver los parámetros de configuración del paquete Grafana:

Revisar el esquema del paquete

Para recuperar el esquema del paquete:

tanzu package available get grafana.tanzu.vmware.com/9.5.1+vmware.2-tkg.3 -n AVAILABLE-PACKAGE-NAMESPACE --values-schema

Este comando enumera los parámetros de configuración del paquete Grafana y sus valores predeterminados. Puede utilizar el resultado para actualizar el archivo grafana-data-values.yml creado en la sección anterior Preparar el archivo de configuración del paquete Grafana.

Revisar parámetros de configuración

En la siguiente tabla se enumeran los parámetros de configuración del paquete de Grafana y se describen sus valores predeterminados.

Puede establecer los siguientes valores de configuración en el archivo grafana-data-values.yml creado en la sección anterior Implementar Grafana en un clúster de carga de trabajo.

Parámetro Descripción Tipo Predeterminado
namespace Espacio de nombres en el que se implementará Grafana. Cadena tanzu-system-dashboards
grafana.deployment.replicas Cantidad de réplicas de Grafana. Entero 1
grafana.deployment.containers.resources Límites y solicitudes de recursos de contenedor de Grafana. Mapa {}
grafana.deployment.k8sSidecar.containers.resources Límites y solicitudes de recursos de contenedor de k8s-sidecar. Mapa {}
grafana.deployment.podAnnotations Las anotaciones del pod de implementaciones de Grafana. Mapa {}
grafana.deployment.podLabels Las etiquetas del pod de implementaciones de Grafana. Mapa {}
grafana.service.type Tipo de servicio para exponer Grafana. Valores admitidos: ClusterIP, NodePort, LoadBalancer. (Para vSphere establezca esta opción en NodePort) Cadena LoadBalancer
grafana.service.port Puerto de servicio Grafana. Entero 80
grafana.service.targetPort Puerto de destino del servicio Grafana. Entero 9093
grafana.service.labels Etiquetas de servicio Grafana. Mapa {}
grafana.service.annotations Anotaciones de servicio Grafana. Mapa {}
grafana.config.grafana_ini Para obtener información sobre la configuración de Grafana, consulte Configuración de Grafana predeterminada en GitHub. Archivo de configuración grafana.ini
grafana.config.datasource_yaml Para obtener información sobre la configuración del origen de datos, consulte la documentación de Grafana. Cadena prometheus
grafana.config.dashboardProvider_yaml Para obtener información sobre la configuración del proveedor de paneles de control, consulte la documentación de Grafana. Archivo YAML provider.yaml
grafana.pvc.annotations Clase de almacenamiento que se utilizará para la notificación de volumen persistente. De forma predeterminada, es nulo y se utiliza el aprovisionador predeterminado. Cadena null
grafana.pvc.storageClassName Clase de almacenamiento que se utilizará para la notificación de volumen persistente. De forma predeterminada, es nulo y se utiliza el aprovisionador predeterminado. Cadena null
grafana.pvc.accessMode Defina el modo de acceso para la notificación de volumen persistente. Valores admitidos: ReadWriteOnce, ReadOnlyMany, ReadWriteMany. Cadena ReadWriteOnce
grafana.pvc.storage Defina el tamaño de almacenamiento para la notificación de volumen persistente. Cadena 2Gi
grafana.secret.type Tipo de secreto definido para el panel de control de Grafana. Cadena Opaque
grafana.secret.admin_user Nombre de usuario con codificación Base64 para acceder al panel de Grafana. El valor predeterminado es YWRtaW4=, lo que equivale a admin en texto sin formato. Cadena YWRtaW4=
grafana.secret.admin_password Contraseña con codificación Base64 para acceder al panel de Grafana. El valor predeterminado es YWRtaW4=, lo que equivale a admin en texto sin formato. Cadena YWRtaW4=
ingress.enabled Active o desactive la entrada para Grafana. Booleano true
ingress.virtual_host_fqdn Nombre de host para acceder a Grafana. Cadena grafana.system.tanzu
ingress.prefix Prefijo de la ruta de acceso para Grafana. Cadena /
ingress.servicePort Puerto de servicio de Grafana al que se enviará el tráfico de proxy. Entero 80
ingress.tlsCertificate.tls.crt Certificado opcional para la entrada si desea utilizar su propio certificado TLS. De forma predeterminada, se genera un certificado autofirmado. Nota tls.crt es una clave y no está anidada. Cadena Generated cert
ingress.tlsCertificate.tls.key Clave privada de certificado opcional para la entrada si desea utilizar su propio certificado TLS. Nota tls.key es una clave y no está anidada. Cadena Generated cert private key
ingress.tlsCertificate.ca.crt Certificado de CA opcional. Nota ca.crt es una clave y no está anidada. Cadena CA certificate

Actualizar una implementación de Grafana en ejecución

Para realizar cambios en la configuración del paquete de Grafana después de la implementación, actualice el paquete de Grafana implementado:

  1. Actualice la configuración de Grafana en el archivo grafana-data-values.yaml.

  2. Actualice el paquete instalado:

    tanzu package installed update grafana \
    --version 9.5.1+vmware.2-tkg.3 \
    --values-file grafana-data-values.yaml \
    --namespace my-packages
    

    Resultados esperados:

    | 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'
    

El paquete de Grafana se concilia mediante el nuevo valor o los valores que agregó. kapp-controller puede tardar hasta cinco minutos en aplicar los cambios.

Para obtener información sobre la actualización, consulte Actualizar un paquete.

Eliminar una implementación de Grafana

Para eliminar el paquete de Grafana en el clúster, ejecute:

tanzu package installed delete grafana --namespace my-packages

Para obtener información sobre cómo eliminar, consulte Eliminar un paquete.

Acceder al panel de control de Grafana

Después de implementar Grafana, el paquete de Grafana crea un objeto HTTPProxy de Contour con un nombre de dominio completo (FQDN) de grafana.system.tanzu.

Para utilizar este FQDN para acceder al panel de control de Grafana:

  1. Cree una entrada en su archivo local /etc/hosts que apunte una dirección IP a este FQDN:

    • AWS o Azure: Utilice la dirección IP del equilibrador de carga para el servicio Envoy en el espacio de nombres tanzu-system-ingress.
    • vSphere: Utilice la dirección IP de un nodo de trabajo.
  2. 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.

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