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 en Tanzu Kubernetes Grid.

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

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

Siga el procedimiento a continuación para implementar Grafana:

  1. Si aún no lo ha hecho, agregue el repositorio de paquetes standard al clúster:

    tanzu package repository add tanzu-standard --url projects.registry.vmware.com/tkg/packages/standard/repo:v1.6.0 --namespace tkg-system
    
  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       7.5.7+vmware.1-tkg.1             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 --generate-default-values-file
    
    

    Donde PACKAGE-VERSION sea la versión del paquete Grafana que desea instalar. El comando anterior crea un archivo de configuración denominado grafana-default-values.yaml que contiene los valores predeterminados. Tenga en cuenta que en las versiones anteriores, este archivo se denominaba grafana-data-values.yaml.

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

  5. Edite grafana-default-values.yaml y reemplace secret.admin_password por una contraseña codificada en Base64. Para generar una contraseña codificada en 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 ingress.pvc.storageClassName en el archivo grafana-default-values.yaml:

    ingress:
    virtual_host_fqdn: "grafana.system.tanzu"
    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-default-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-default-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-default-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-default-values.yaml, elimine todos los comentarios que contenga:

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

    Si el espacio de nombres de destino existe en el clúster, ejecute:

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

    Donde:

    • TARGET-NAMESPACE es el espacio de nombres en el que se desea instalar el paquete de Grafana, la aplicación de paquete de Grafana y cualquier otro recurso de Kubernetes que describa el paquete. 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 de Grafana se crean en el espacio de nombres establecido en grafana-default-values.yaml; no instale el paquete de Grafana en este espacio de nombres.
    • AVAILABLE-PACKAGE-VERSION es la versión que recuperó anteriormente.

    Por ejemplo:

    tanzu package install grafana --package-name grafana.tanzu.vmware.com --version 7.5.7+vmware.1-tkg.1 --values-file grafana-default-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'
    

    Si el espacio de nombres de destino no existe en el clúster, ejecute:

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

    Donde:

    • TARGET-NAMESPACE es el espacio de nombres en el que se desea instalar el paquete de Grafana, la aplicación de paquete de Grafana y cualquier otro recurso de Kubernetes que describa el paquete. 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 de Grafana se crean en el espacio de nombres establecido en grafana-default-values.yaml; no instale el paquete de Grafana en este espacio de nombres.
    • AVAILABLE-PACKAGE-VERSION es la versión que recuperó anteriormente.

    Por ejemplo:

    tanzu package install grafana --package-name grafana.tanzu.vmware.com --version 7.5.7+vmware.1-tkg.1 --values-file grafana-default-values.yaml --namespace tanzu-package-repo-global --create-namespace
    

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.1.0+vmware.1-tkg.2     Reconcile succeeded  my-packages
    contour         contour.tanzu.vmware.com         1.17.1+vmware.1-tkg.1    Reconcile succeeded  my-packages
    grafana         grafana.tanzu.vmware.com         7.5.7+vmware.1-tkg.1     Reconcile succeeded  tkg-system
    prometheus      prometheus.tanzu.vmware.com      2.27.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 de Grafana se crean en el espacio de nombres proporcionado en grafana-default-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/7.5.7+vmware.1-tkg.1 -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 para acceder al panel de control de Grafana. Cadena YWRtaW4=
grafana.secret.admin_password Contraseña para acceder al panel de control de Grafana. Cadena admin
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-default-values.yaml.

  2. Actualice el paquete instalado:

    tanzu package installed update grafana \
    --version 7.5.7+vmware.1-tkg.1 \
    --values-file grafana-default-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 el archivo /etc/hosts local que apunte la dirección IP de un nodo de trabajo a este FQDN.

  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