En este tema se explica cómo implementar Grafana en un clúster de carga de trabajo en Tanzu Kubernetes Grid.
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 otras herramientas.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.
Siga el procedimiento a continuación para implementar Grafana:
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
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 7.5.7+vmware.1-tkg.1 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 --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.
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==
.
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
.
(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.
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
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
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.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
.
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 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
.
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/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.
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 |
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-default-values.yaml
.
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.
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 el archivo /etc/hosts
local que apunte la dirección IP de un nodo de trabajo a este FQDN.
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.