Distribuzione di Grafana nei cluster del carico di lavoro

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

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.

Prerequisiti

Importante

Il 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.

Preparazione del cluster del carico di lavoro per la distribuzione di Grafana

Per preparare il cluster:

  1. 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
    
  2. Impostare il contesto di kubectl sul cluster. Ad esempio:

    kubectl config use-context my-cluster-admin@my-cluster
    
  3. 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.

Distribuzione di Grafana nel cluster del carico di lavoro

Per distribuire Grafana:

  1. Se nel cluster non è installato un repository dei pacchetti con il pacchetto Grafana, ad esempio il repository tanzu-standard, installarne uno:

    Nota

    Se si utilizza un cluster basato sul piano (legacy), ignorare questo passaggio. Per i cluster basati sul piano, il repository dei pacchetti tanzu-standard veniva abilitato automaticamente in ogni cluster nello spazio dei nomi tanzu-package-repo-global.

    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.

      • Per questa versione, l'URL di tanzu-standard è projects.registry.vmware.com/tkg/packages/standard/repo:v2.2.0. 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.
  2. Verificare che il pacchetto Grafana sia disponibile nel cluster del carico di lavoro:

    tanzu package available list -A
    
  3. 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       7.5.17+vmware.1-tkg.1             2021-05-19T18:00:00Z  tanzu-package-repo-global
    
  4. 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.

  5. 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==.

  6. 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.

  7. (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.

  8. 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
    
  9. 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.

      • Se il flag --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.
      • Lo spazio dei nomi specificato deve essere già stato creato, ad esempio eseguendo 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 7.5.17+vmware.1-tkg.1 --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

    Se 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.

Verifica della distribuzione di Grafana

Dopo aver distribuito Grafana, è possibile verificare che la distribuzione sia stata eseguita correttamente:

  1. 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.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.17+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
    [...]
    

    Il pacchetto grafana e l'app grafana vengono installati nello spazio dei nomi specificato quando si esegue il comando tanzu package install.

  2. 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.

  3. 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.

Parametri di configurazione del pacchetto Grafana

Esistono due modi per visualizzare i parametri di configurazione del pacchetto Grafana:

Revisione dello schema del pacchetto

Per recuperare lo schema del pacchetto:

tanzu package available get grafana.tanzu.vmware.com/7.5.17+vmware.1-tkg.1 -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.

Revisione dei parametri di configurazione

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

Aggiornamento di una distribuzione di Grafana in esecuzione

Per apportare modifiche alla configurazione del pacchetto Grafana dopo la distribuzione, aggiornare il pacchetto Grafana distribuito:

  1. Aggiornare la configurazione di Grafana nel file grafana-data-values.yaml.

  2. Aggiornare il pacchetto installato:

    tanzu package installed update grafana \
    --version 7.5.17+vmware.1-tkg.1 \
    --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.

Eliminazione di una distribuzione di Grafana

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.

Accesso al dashboard di Grafana

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:

  1. Creare una voce nel file /etc/hosts locale che punti un indirizzo IP a questo nome di dominio completo:

    • AWS o Azure: Utilizzare l'indirizzo IP di LoadBalancer per il servizio Envoy nello spazio dei nomi tanzu-system-ingress.
    • vSphere: Utilizzare l'indirizzo IP di un nodo worker.
  2. 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.

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