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 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.
kubectl
, como se describe en Instalar la CLI de Tanzu y la CLI de Kubernetes para su uso con un supervisor de vSphere with Tanzu o Instalar la CLI de Tanzu y la CLI de Kubernetes para su uso con clústeres de administración independientes.ImportanteLa 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.
Para preparar el clúster:
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
Establezca el contexto de kubectl en el clúster. Por ejemplo:
kubectl config use-context my-cluster-admin@my-cluster
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.
Para implementar Grafana:
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-ENDPOINT
es la URL del repositorio de paquetes.
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).Confirme que el paquete de Grafana esté disponible en el clúster de carga de trabajo:
tanzu package available list -A
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
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.
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==
.
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
.
(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.
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
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
.
--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.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'
NotaSi 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.
Después de implementar Grafana, puede comprobar que la implementación se realice correctamente:
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
.
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.
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
.
Existen dos formas de ver los parámetros de configuración del paquete Grafana:
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.
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 |
Para realizar cambios en la configuración del paquete de Grafana después de la implementación, actualice el paquete de Grafana implementado:
Actualice la configuración de Grafana en el archivo grafana-data-values.yaml
.
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.
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.
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:
Cree una entrada en su archivo local /etc/hosts
que apunte una dirección IP a este FQDN:
tanzu-system-ingress
.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.