Questo argomento spiega come distribuire Grafana in un cluster del carico di lavoro. Le procedure seguenti si applicano alle distribuzioni vSphere, Amazon Web Services (AWS) e Azure.
Grafana è un software open source che consente di visualizzare e analizzare i dati delle metriche raccolti da Prometheus nei cluster. Tanzu Kubernetes Grid include un pacchetto Grafana che è possibile distribuire nei cluster del carico di lavoro.
kubectl
, come descritto in Installazione della CLI di Tanzu e della CLI di Kubernetes per l'utilizzo con un supervisore vSphere with Tanzu o Installazione della CLI di Tanzu e della CLI di Kubernetes per l'utilizzo con i cluster di gestione autonomi.ImportanteIl supporto per gli indirizzi IPv6 in Tanzu Kubernetes Grid è limitato; vedere Distribuzione dei cluster in IPv6 (solo vSphere). Se non si distribuisce in un ambiente di rete solo IPv6, è necessario specificare gli indirizzi IPv4 nei passaggi seguenti.
Per preparare il cluster:
Recuperare le credenziali di amministratore del cluster del carico di lavoro in cui si desidera distribuire Grafana. Ad esempio:
tanzu cluster kubeconfig get my-cluster --admin
Impostare il contesto di kubectl sul cluster. Ad esempio:
kubectl config use-context my-cluster-admin@my-cluster
Abilitare l'ingresso per Grafana: per impostazione predefinita, l'ingresso è abilitato in Grafana. Ciò richiede l'installazione dei pacchetti seguenti:
Continuare con Distribuzione di Grafana in un cluster del carico di lavoro.
Per distribuire Grafana:
Se nel cluster non è installato un repository dei pacchetti con il pacchetto Grafana, ad esempio il repository tanzu-standard
, installarne uno:
tanzu package repository add PACKAGE-REPO-NAME --url PACKAGE-REPO-ENDPOINT --namespace tkg-system
In cui:
PACKAGE-REPO-NAME
è il nome del repository dei pacchetti, ad esempio tanzu-standard
o il nome di un registro immagini privato configurato con le variabili ADDITIONAL_IMAGE_REGISTRY
.PACKAGE-REPO-ENDPOINT
è l'URL del repository dei pacchetti.
tanzu-standard
è projects.registry.vmware.com/tkg/packages/standard/repo:v2023.10.16
. Vedere Elenco dei repository dei pacchetti per ottenere questo valore dalla CLI di Tanzu oppure in Tanzu Mission Control vedere l'elenco Elementi aggiuntivi (Addons) > Repository (Repositories) nel riquadro Cluster.Verificare che il pacchetto Grafana sia disponibile nel cluster del carico di lavoro:
tanzu package available list -A
Recuperare la versione del pacchetto disponibile:
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
Creare un file di configurazione per la configurazione di Grafana:
tanzu package available get grafana.tanzu.vmware.com/PACKAGE-VERSION --default-values-file-output FILE-PATH
Dove PACKAGE-VERSION
è la versione del pacchetto Grafana che si desidera installare e FILE-PATH
è la posizione in cui si desidera salvare il file di configurazione, ad esempio grafana-data-values.yaml
.
Per informazioni sui parametri di configurazione da utilizzare in grafana-data-values.yaml
, vedere Parametri di configurazione del pacchetto Grafana di seguito.
Modificare grafana-data-values.yaml
e sostituire secret.admin_password
con una password con codifica Base64. Per generare una password con codifica Base64, eseguire:
echo -n 'mypassword' | base64
Per codificare la password, è inoltre possibile utilizzare lo strumento di codifica Base64 disponibile in https://www.base64encode.org/. Ad esempio, se si utilizza uno dei due metodi, mypassword
restituisce la password codificata bXlwYXNzd29yZA==
.
vSphere with Tanzu: Se si distribuisce Grafana in un cluster del carico di lavoro creato da un supervisore vSphere with Tanzu, impostare un valore non null per grafana.pvc.storageClassName
nel file grafana-data-values.yaml
:
grafana:
pvc:
storageClassName: STORAGE-CLASS
In cui STORAGE-CLASS
è il nome della classe di storage del cluster restituito da kubectl get storageclass
.
(Facoltativo) Modificare la configurazione dell'origine dati di Grafana in grafana-data-values.yaml
. Grafana è configurato con Prometheus come origine dati predefinita. Se lo spazio dei nomi della distribuzione di Prometheus è stato personalizzato e non è distribuito nello spazio dei nomi predefinito, tanzu-system-monitoring
, è necessario modificare la configurazione dell'origine dati di Grafana in grafana-data-values.yaml
. Per modificare la configurazione dell'origine dati, copiare la sezione seguente nella posizione indicata e modificare l'attributo url
nel modo appropriato.
#! 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
Per informazioni sui parametri di configurazione da utilizzare in grafana-data-values.yaml
, vedere Parametri di configurazione del pacchetto Grafana di seguito.
Dopo aver apportato le modifiche necessarie al file grafana-data-values.yaml
, rimuovere tutti i commenti presenti in esso:
yq -i eval '... comments=""' grafana-data-values.yaml
Distribuire il pacchetto:
tanzu package install grafana \
--package grafana.tanzu.vmware.com \
--version AVAILABLE-PACKAGE-VERSION \
--values-file grafana-data-values.yaml \
--namespace TARGET-NAMESPACE
In cui:
TARGET-NAMESPACE
è lo spazio dei nomi in cui si desidera installare il pacchetto Grafana. Ad esempio, lo spazio dei nomi my-packages
o tanzu-user-managed-packages
.
--namespace
non viene specificato, la CLI di Tanzu utilizza lo spazio dei nomi default
. I pod Grafana e tutte le altre risorse associate al componente Grafana vengono creati nello spazio dei nomi impostato in grafana-data-values.yaml
. Non installare il pacchetto Grafana in questo spazio dei nomi.kubectl create namespace my-packages
.AVAILABLE-PACKAGE-VERSION
è la versione recuperata in precedenza.
Ad esempio:
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'
NotaSe l'installazione non riesce con
error: Secret in version "v1" cannot be handled as a Secret: illegal base64 data at input byte 4 (reason: BadRequest)
, vedere Segreto non creato durante l'installazione di Grafana dal file YAML predefinito in Risoluzione dei problemi relativi al cluster del carico di lavoro.
Dopo aver distribuito Grafana, è possibile verificare che la distribuzione sia stata eseguita correttamente:
Verificare che il pacchetto Grafana sia installato. Ad esempio:
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
[...]
Il pacchetto grafana
e l'app grafana
vengono installati nello spazio dei nomi specificato quando si esegue il comando tanzu package install
.
Verificare che l'app grafana
sia riconciliata correttamente:
kubectl get apps -A
Ad esempio:
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
[...]
Se lo stato non è Reconcile succeeded
, visualizzare i dettagli completi dello stato dell'app grafana
. La visualizzazione dello stato completo può aiutare a risolvere il problema:
kubectl get app grafana --namespace PACKAGE-NAMESPACE -o yaml
Dove PACKAGE-NAMESPACE
è lo spazio dei nomi in cui è stato installato il pacchetto.
Verificare che i nuovi servizi siano in esecuzione visualizzando l'elenco di tutti i pod in esecuzione nel cluster:
kubectl get pods -A
Nello spazio dei nomi tanzu-system-dashboards
il servizio grafana
è in esecuzione in un pod:
NAMESPACE NAME READY STATUS RESTARTS AGE
[...]
tanzu-system-dashboards grafana-6865dbb4f5-pk2qg 2/2 Running 0 7m7s
[...]
I pod Grafana e tutte le altre risorse associate al componente Grafana vengono creati nello spazio dei nomi specificato in grafana-data-values.yaml
. Se si utilizza lo spazio dei nomi predefinito, questi vengono creati nello spazio dei nomi tanzu-system-dashboards
.
Esistono due modi per visualizzare i parametri di configurazione del pacchetto Grafana:
Per recuperare lo schema del pacchetto:
tanzu package available get grafana.tanzu.vmware.com/9.5.1+vmware.2-tkg.3 -n AVAILABLE-PACKAGE-NAMESPACE --values-schema
Questo comando consente di visualizzare l'elenco dei parametri di configurazione del pacchetto Grafana e i loro valori predefiniti. È possibile utilizzare l'output per aggiornare il file grafana-data-values.yml
creato in precedenza in Preparazione del file di configurazione del pacchetto Grafana.
La tabella seguente include un elenco dei parametri di configurazione del pacchetto Grafana e ne descrive i valori predefiniti.
È possibile impostare i valori di configurazione seguenti nel file grafana-data-values.yml
creato in precedenza in Distribuzione di Grafana in un cluster del carico di lavoro
Parametro | Descrizione | Tipo | Predefinito |
---|---|---|---|
namespace | Spazio dei nomi in cui Grafana verrà distribuito. | Stringa | tanzu-system-dashboards |
grafana.deployment.replicas | Numero di repliche di Grafana. | Intero | 1 |
grafana.deployment.containers.resources | Richieste e limiti delle risorse del container Grafana. | Mappa | {} |
grafana.deployment.k8sSidecar.containers.resources | Richieste e limiti delle risorse del container k8s-sidecar. | Mappa | {} |
grafana.deployment.podAnnotations | Annotazioni dei pod delle distribuzioni di Grafana. | Mappa | {} |
grafana.deployment.podLabels | Etichette dei pod delle distribuzioni di Grafana. | Mappa | {} |
grafana.service.type | Tipo di servizio per esporre Grafana. Valori supportati: ClusterIP , NodePort , LoadBalancer . (Per vSphere impostarlo su NodePort ) |
Stringa | LoadBalancer |
grafana.service.port | Porta del servizio Grafana. | Intero | 80 |
grafana.service.targetPort | Porta di destinazione del servizio Grafana. | Intero | 9093 |
grafana.service.labels | Etichette del servizio Grafana. | Mappa | {} |
grafana.service.annotations | Annotazioni del servizio Grafana. | Mappa | {} |
grafana.config.grafana_ini | Per informazioni sulla configurazione di Grafana, vedere Impostazioni predefinite della configurazione di Grafana in GitHub. | File di configurazione | grafana.ini |
grafana.config.datasource_yaml | Per informazioni sulla configurazione dell'origine dati, vedere la documentazione di Grafana. | Stringa | prometheus |
grafana.config.dashboardProvider_yaml | Per informazioni sulla configurazione del provider del dashboard, vedere la documentazione di Grafana. | File YAML | provider.yaml |
grafana.pvc.annotations | Classe di storage da utilizzare per la richiesta di volume persistente. Per impostazione predefinita, questo valore è null e viene utilizzato il provisioning predefinito. | Stringa | null |
grafana.pvc.storageClassName | Classe di storage da utilizzare per la richiesta di volume persistente. Per impostazione predefinita, questo valore è null e viene utilizzato il provisioning predefinito. | Stringa | null |
grafana.pvc.accessMode | Definisce la modalità di accesso per la richiesta di volume persistente. Valori supportati: ReadWriteOnce , ReadOnlyMany , ReadWriteMany . |
Stringa | ReadWriteOnce |
grafana.pvc.storage | Definisce le dimensioni dello storage per la richiesta di volume persistente. | Stringa | 2Gi |
grafana.secret.type | Tipo di segreto definito per il dashboard di Grafana. | Stringa | Opaque |
grafana.secret.admin_user | Nome utente con codifica base64 per accedere al dashboard di Grafana. L'impostazione predefinita è YWRtaW4= , che equivale a admin in testo normale. |
Stringa | YWRtaW4= |
grafana.secret.admin_password | Password con codifica base64 per accedere al dashboard di Grafana. L'impostazione predefinita è YWRtaW4= , che equivale a admin in testo normale. |
Stringa | YWRtaW4= |
ingress.enabled | Attiva/Disattiva l'ingresso per Grafana. | Booleano | true |
ingress.virtual_host_fqdn | Nome host per l'accesso a Grafana. | Stringa | grafana.system.tanzu |
ingress.prefix | Prefisso del percorso per Grafana. | Stringa | / |
ingress.servicePort | Porta del servizio Grafana verso cui indirizzare il traffico tramite proxy. | Intero | 80 |
ingress.tlsCertificate.tls.crt | Certificato facoltativo per l'ingresso se si desidera utilizzare il proprio certificato TLS. Per impostazione predefinita, viene generato un certificato autofirmato. Nota tls.crt è una chiave e non è nidificata. |
Stringa | Generated cert |
ingress.tlsCertificate.tls.key | Chiave privata del certificato facoltativa per l'ingresso se si desidera utilizzare il proprio certificato TLS. Nota tls.key è una chiave e non è nidificata. |
Stringa | Generated cert private key |
ingress.tlsCertificate.ca.crt | Certificato CA facoltativo. Nota ca.crt è una chiave e non è nidificata. |
Stringa | CA certificate |
Per apportare modifiche alla configurazione del pacchetto Grafana dopo la distribuzione, aggiornare il pacchetto Grafana distribuito:
Aggiornare la configurazione di Grafana nel file grafana-data-values.yaml
.
Aggiornare il pacchetto installato:
tanzu package installed update grafana \
--version 9.5.1+vmware.2-tkg.3 \
--values-file grafana-data-values.yaml \
--namespace my-packages
Output previsto:
| 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'
Il pacchetto Grafana viene riconciliato utilizzando il nuovo valore o i nuovi valori aggiunti. L'applicazione delle modifiche da parte di kapp-controller
può richiedere fino a cinque minuti.
Per informazioni sull'aggiornamento di, vedere Aggiornamento di un pacchetto.
Per rimuovere il pacchetto Grafana nel cluster, eseguire:
tanzu package installed delete grafana --namespace my-packages
Per informazioni sull'eliminazione, vedere Eliminazione di un pacchetto.
Dopo la distribuzione di Grafana, il pacchetto Grafana crea un oggetto Contour HTTPProxy con un nome di dominio completo (FQDN) di grafana.system.tanzu
.
Per utilizzare questo nome di dominio completo per accedere al dashboard di Grafana:
Creare una voce nel file /etc/hosts
locale che punti un indirizzo IP a questo nome di dominio completo:
tanzu-system-ingress
.Passare a https://grafana.system.tanzu
.
Poiché il sito utilizza certificati autofirmati, potrebbe essere necessario esaminare un avviso di sicurezza specifico del browser prima di poter accedere al dashboard.