Bereitstellen von Grafana auf Arbeitslastclustern

In diesem Thema wird die Bereitstellung von Grafana in einem Arbeitslastcluster erläutert. Die folgenden Verfahren gelten für vSphere-, AWS- (Amazon Web Services) und Azure-Bereitstellungen.

Grafana

Grafana ist eine Open Source-Software, mit der Sie von Prometheus erfasste Metrikdaten in Ihren Clustern visualisieren und analysieren können. Tanzu Kubernetes Grid enthält ein Grafana-Paket, das Sie in Ihren Arbeitslastclustern bereitstellen können.

Voraussetzungen

Wichtig

Die Unterstützung für IPv6-Adressen in Tanzu Kubernetes Grid ist begrenzt. Weitere Informationen finden Sie unter Bereitstellen von Clustern auf IPv6 (nur vSphere). Wenn die Bereitstellung nicht für eine auf IPv6 beschränkte Netzwerkumgebung vorgesehen ist, müssen Sie IPv4-Adressen mithilfe der folgenden Schritte angeben.

Vorbereiten des Arbeitslastclusters für die Grafana-Bereitstellung

So bereiten Sie den Cluster vor:

  1. Rufen Sie die Admin-Anmeldedaten des Arbeitslastclusters ab, in dem Sie Grafana bereitstellen möchten. Beispiel:

    tanzu cluster kubeconfig get my-cluster --admin
    
  2. Legen Sie den Kontext von kubectl auf den Cluster fest. Beispiel:

    kubectl config use-context my-cluster-admin@my-cluster
    
  3. Aktivierung von Ingress für Grafana: Ingress für Grafana ist standardmäßig aktiviert. Hierzu müssen Sie die folgenden Pakete installieren:

Fahren Sie mit der Bereitstellung von Grafana in einem Arbeitslastcluster fort.

Bereitstellen von Grafana im Arbeitslastcluster

So stellen Sie Grafana bereit:

  1. Wenn der Cluster nicht über ein Paket-Repository mit installiertem Grafana-Paket verfügt, wie z. B. das tanzu-standard-Repository, installieren Sie es:

    Hinweis

    Wenn Sie einen planbasierten Cluster (Legacy) als Ziel verwenden, überspringen Sie diesen Schritt. Für planbasierte Cluster wird das tanzu-standard-Paket-Repository automatisch in jedem Cluster im Namespace tanzu-package-repo-global aktiviert.

    tanzu package repository add PACKAGE-REPO-NAME --url PACKAGE-REPO-ENDPOINT --namespace tkg-system
    

    Dabei gilt:

    • PACKAGE-REPO-NAME ist der Name des Paket-Repositorys, wie z. B. tanzu-standard, oder der Name einer privaten Image-Registrierung, die mit ADDITIONAL_IMAGE_REGISTRY-Variablen konfiguriert ist.
    • PACKAGE-REPO-ENDPOINT ist die URL des Paket-Repositorys.

      • Für diese Version lautet die tanzu-standard-URL auf projects.registry.vmware.com/tkg/packages/standard/repo:v2.2.0. Informationen zum Abrufen dieses Werts über die Tanzu CLI finden Sie unter Listen von Paketrepositorys oder in Tanzu Mission Control in der Liste Add-Ons (Addons) > Repositorys (Repositories) im Fensterbereich Cluster.
  2. Bestätigen Sie, dass das Grafana-Paket in Ihrem Arbeitslastcluster verfügbar ist:

    tanzu package available list -A
    
  3. Rufen Sie die Version des verfügbaren Pakets ab:

    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. Erstellen Sie eine Konfigurationsdatei für Ihre Grafana-Konfiguration:

    tanzu package available get grafana.tanzu.vmware.com/PACKAGE-VERSION --default-values-file-output FILE-PATH
    
    

    Dabei ist PACKAGE-VERSION die Version des Grafana-Pakets, das Sie installieren möchten, und FILE-PATH der Speicherort, an dem Sie die Konfigurationsdatei speichern möchten, z. B. grafana-data-values.yaml.

    Informationen zu Konfigurationsparametern, die in grafana-data-values.yaml verwendet werden sollen, finden Sie nachfolgend unter Konfigurationsparameter des Grafana-Pakets.

  5. Bearbeiten Sie grafana-data-values.yaml und ersetzen Sie secret.admin_password durch ein Base64-codiertes Kennwort. Führen Sie folgenden Befehl aus, um ein Base64-codiertes Kennwort zu erzeugen:

    echo -n 'mypassword' | base64
    

    Sie können auch das Base64-Codierungstool unter https://www.base64encode.org/ verwenden, um Ihr Kennwort zu verschlüsseln. Bei beiden Methoden ergibt mypassword beispielsweise das verschlüsselte Kennwort bXlwYXNzd29yZA==.

  6. vSphere with Tanzu: Wenn Sie Grafana in einem Arbeitslastcluster bereitstellen, der von einem vSphere with Tanzu-Supervisor erstellt wurde, legen Sie einen Wert ungleich null für grafana.pvc.storageClassName in der Datei grafana-data-values.yaml fest:

    grafana:
    pvc:
      storageClassName: STORAGE-CLASS
    

    Dabei gilt: STORAGE-CLASS ist der Name der Speicherklasse des Clusters, wie von kubectl get storageclass zurückgegeben.

  7. (Optional) Ändern Sie die Grafana-Datenquellenkonfiguration in grafana-data-values.yaml. Grafana ist mit Prometheus als Standarddatenquelle konfiguriert. Wenn Sie den Prometheus-Bereitstellungs-Namespace angepasst haben und er nicht im Standard-Namespace tanzu-system-monitoring bereitgestellt wird, müssen Sie die Konfiguration der Grafana-Datenquelle in grafana-data-values.yaml ändern. Zum Ändern der Datenquellenkonfiguration kopieren Sie den folgenden Abschnitt an die angezeigte Position und bearbeiten gegebenenfalls die url.

    #! 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
    

    Informationen zu Konfigurationsparametern, die in grafana-data-values.yaml verwendet werden sollen, finden Sie nachfolgend unter Konfigurationsparameter des Grafana-Pakets.

  8. Nachdem Sie notwendige Änderungen an der Datei grafana-data-values.yaml vorgenommen haben, entfernen Sie alle enthaltenen Kommentare:

    yq -i eval '... comments=""' grafana-data-values.yaml
    
  9. Stellen Sie das Paket bereit:

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

    Dabei gilt:

    • TARGET-NAMESPACE ist der Namespace, in dem das Grafana-Paket installiert werden soll. Beispielsweise der Namespace my-packages oder tanzu-user-managed-packages.

      • Wenn das Flag --namespace nicht angegeben ist, verwendet die Tanzu CLI den Namespace default. Die Grafana-Pods und alle anderen mit der Grafana-Komponente verknüpften Ressourcen werden in dem Namespace erstellt, den Sie in grafana-data-values.yaml festgelegt haben. Installieren Sie das Grafana-Paket nicht in diesem Namespace.
      • Der angegebene Namespace muss bereits vorhanden sein, wie z. B. durch die Ausführung von kubectl create namespace my-packages.
    • AVAILABLE-PACKAGE-VERSION ist die oben abgerufene Version.

    Beispiel:

    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'
    
    Hinweis

    Wenn die Installation mit error: Secret in version "v1" cannot be handled as a Secret: illegal base64 data at input byte 4 (reason: BadRequest) fehlschlägt, finden Sie weitere Informationen unter Geheimer Schlüssel wurde bei der Installation von Grafana über die YAML-Standarddatei nicht erstellt in Fehlerbehebung bei Problemen mit dem Arbeitslastcluster.

Überprüfen der Grafana-Bereitstellung

Nach der Bereitstellung von Grafana können Sie überprüfen, ob die Bereitstellung erfolgreich durchgeführt wurde:

  1. Bestätigen Sie, dass das Grafana-Paket installiert wurde. Beispiel:

    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
    [...]
    

    Das grafana-Paket und die grafana -App werden in dem Namespace installiert, den Sie beim Ausführen des Befehls tanzu package install angeben.

  2. Bestätigen Sie, dass die grafana-App erfolgreich abgeglichen wurde:

    kubectl get apps -A
    

    Beispiel:

    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
    [...]
    

    Lautet der Status nicht Reconcile succeeded, zeigen Sie die vollständigen Statusdetails der App grafana an. Die Anzeige des vollständigen Status kann Sie bei der Behebung des Problems unterstützen:

    kubectl get app grafana --namespace PACKAGE-NAMESPACE -o yaml
    

    Dabei gilt: PACKAGE-NAMESPACE ist der Namespace, in dem Sie das Paket installiert haben.

  3. Bestätigen Sie, dass die neuen Dienste ausgeführt werden, indem Sie alle im Cluster ausgeführten Pods auflisten.

    kubectl get pods -A
    

    Im Namespace tanzu-system-dashboards sollte der in einem Pod ausgeführte grafana-Dienst angezeigt werden:

    NAMESPACE               NAME                                    READY   STATUS    RESTARTS   AGE
    [...]
    tanzu-system-dashboards   grafana-6865dbb4f5-pk2qg              2/2     Running   0          7m7s
    [...]
    

Die Grafana-Pods und alle anderen mit der Grafana-Komponente verknüpften Ressourcen werden in dem Namespace erstellt, den Sie in grafana-data-values.yaml bereitgestellt haben. Wenn Sie den Standard-Namespace verwenden, werden die Pods und Komponenten im Namespace tanzu-system-dashboards erstellt.

Konfigurationsparameter des Grafana-Pakets

Es gibt zwei Möglichkeiten, Konfigurationsparameter des Grafana-Pakets anzuzeigen:

Überprüfen des Paketschemas

So rufen Sie das Paketschema ab:

tanzu package available get grafana.tanzu.vmware.com/7.5.17+vmware.1-tkg.1 -n AVAILABLE-PACKAGE-NAMESPACE --values-schema

Mithilfe dieses Befehls werden die Konfigurationsparameter des Grafana-Pakets und die zugehörigen Standardwerte aufgelistet. Sie können die Ausgabe verwenden, um die Datei grafana-data-values.yml zu aktualisieren, die Sie oben unter Vorbereiten der Konfigurationsdatei des Grafana-Pakets erstellt haben.

Überprüfen von Konfigurationsparametern

In dieser Tabelle werden die Konfigurationsparameter des Grafana-Pakets sowie Beschreibungen der zugehörigen Standardwerte aufgelistet.

Sie können die folgenden Konfigurationswerte in Ihrer Datei grafana-data-values.yml festlegen, die oben unter Bereitstellen von Grafana in einem Arbeitslastcluster erstellt wurde.

Parameter Beschreibung Typ Standard
namespace Namespace, in dem Grafana bereitgestellt wird. Zeichenfolge tanzu-system-dashboards
grafana.deployment.replicas Anzahl der Grafana-Replikate. Ganzzahl 1
grafana.deployment.containers.resources Anforderungen und Grenzwerte für Grafana-Containerressourcen. Zuordnung {}
grafana.deployment.k8sSidecar.containers.resources Anforderungen und Grenzwerte für k8s-sidecar-Containerressourcen. Zuordnung {}
grafana.deployment.podAnnotations Die Grafana-Bereitstellungen enthalten Pod-Anmerkungen. Zuordnung {}
grafana.deployment.podLabels Die Pod-Bezeichnungen der Grafana-Bereitstellungen. Zuordnung {}
grafana.service.type Diensttyp zur Bereitstellung von Grafana. Unterstützte Werte: ClusterIP, NodePort, LoadBalancer. (Für vSphere legen Sie diesen auf NodePort fest.) Zeichenfolge LoadBalancer
grafana.service.port Port des Grafana-Diensts. Ganzzahl 80
grafana.service.targetPort Zielport des Grafana-Diensts. Ganzzahl 9093
grafana.service.labels Grafana-Dienstbezeichnungen. Zuordnung {}
grafana.service.annotations Grafana-Dienstanmerkungen. Zuordnung {}
grafana.config.grafana_ini Informationen zur Grafana-Konfiguration finden Sie unter Standardwerte der Grafana-Konfiguration in GitHub. Konfigurationsdatei grafana.ini
grafana.config.datasource_yaml Informationen zur Datenquellenkonfiguration finden Sie in der Grafana-Dokumentation. Zeichenfolge prometheus
grafana.config.dashboardProvider_yaml Informationen zur Konfiguration des Dashboard-Anbieters finden Sie in der Grafana-Dokumentation. YAML-Datei provider.yaml
grafana.pvc.annotations Speicherklasse, die für die Anforderung eines dauerhaften Datenträgers verwendet werden soll. Standardmäßig ist dieser Wert null, und der Standardbereitsteller wird verwendet. Zeichenfolge null
grafana.pvc.storageClassName Speicherklasse, die für die Anforderung eines dauerhaften Datenträgers verwendet werden soll. Standardmäßig ist dieser Wert null, und der Standardbereitsteller wird verwendet. Zeichenfolge null
grafana.pvc.accessMode Definition des Zugriffsmodus für die Anforderung eines dauerhaften Datenträgers. Unterstützte Werte: ReadWriteOnce, ReadOnlyMany, ReadWriteMany. Zeichenfolge ReadWriteOnce
grafana.pvc.storage Definition der Speichergröße für die Anforderung eines dauerhaften Datenträgers. Zeichenfolge 2Gi
grafana.secret.type Für das Grafana-Dashboard definierter geheimer Typ. Zeichenfolge Opaque
grafana.secret.admin_user Base64-codierter Benutzername für den Zugriff auf das Grafana-Dashboard. Der Standardwert ist YWRtaW4=, was admin im Klartext entspricht. Zeichenfolge YWRtaW4=
grafana.secret.admin_password Base64-codiertes Kennwort für den Zugriff auf das Grafana-Dashboard. Der Standardwert ist YWRtaW4=, was admin im Klartext entspricht. Zeichenfolge YWRtaW4=
ingress.enabled Aktivieren/deaktivieren Sie den Ingress für Grafana. Boolean true
ingress.virtual_host_fqdn Hostname für den Zugriff auf Grafana. Zeichenfolge grafana.system.tanzu
ingress.prefix Pfadpräfix für Grafana. Zeichenfolge /
ingress.servicePort Port des Grafana-Diensts, an den der Datenverkehr weitergeleitet wird. Ganzzahl 80
ingress.tlsCertificate.tls.crt Optionales Zertifikat für Ingress, wenn Sie Ihr eigenes TLS-Zertifikat verwenden möchten. Standardmäßig wird ein selbstsigniertes Zertifikat generiert. Hinweis: tls.crt ist ein nicht verschachtelter Schlüssel. Zeichenfolge Generated cert
ingress.tlsCertificate.tls.key Optionaler privater Zertifikatsschlüssel für Ingress bei Verwendung des eigenen TLS-Zertifikats. Hinweis: tls.key ist ein nicht verschachtelter Schlüssel. Zeichenfolge Generated cert private key
ingress.tlsCertificate.ca.crt Optionales CA-Zertifikat. Hinweis: ca.crt ist ein nicht verschachtelter Schlüssel. Zeichenfolge CA certificate

Aktualisieren einer ausgeführten Grafana-Bereitstellung

Um nach der Bereitstellung Änderungen an der Konfiguration des Grafana-Pakets vorzunehmen, aktualisieren Sie Ihr bereitgestelltes Grafana-Paket:

  1. Aktualisieren Sie die Grafana-Konfiguration in der Datei grafana-data-values.yaml.

  2. Aktualisieren Sie das installierte Paket:

    tanzu package installed update grafana \
    --version 7.5.17+vmware.1-tkg.1 \
    --values-file grafana-data-values.yaml \
    --namespace my-packages
    

    Erwartete Ausgabe:

    | 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'
    

Das Grafana-Paket wird mit dem neuen Wert oder den von Ihnen hinzugefügten Werten abgeglichen. Es kann bis zu fünf Minuten dauern, bis kapp-controller die Änderungen übernommen hat.

Informationen zum Aktualisieren finden Sie unter Aktualisieren eines Pakets.

Löschen einer Grafana-Bereitstellung

Führen Sie folgenden Befehl aus, um das Grafana-Paket auf Ihrem Cluster zu entfernen:

tanzu package installed delete grafana --namespace my-packages

Informationen zum Löschen finden Sie unter Löschen eines Pakets.

Zugriff auf das Grafana-Dashboard

Nach der Bereitstellung von Grafana erstellt das Grafana-Paket ein Contour-HTTPProxy-Objekt mit dem vollqualifizierten Domänennamen (FQDN) grafana.system.tanzu.

So verwenden Sie diesen FQDN für den Zugriff auf das Grafana-Dashboard:

  1. Erstellen Sie einen Eintrag in Ihrer lokalen Datei /etc/hosts, die eine IP-Adresse auf diesen FQDN verweist:

    • AWS oder Azure: Verwenden Sie die IP-Adresse des LoadBalancer für den Envoy-Dienst im Namespace tanzu-system-ingress.
    • vSphere: Verwenden Sie die IP-Adresse eines Worker-Knotens.
  2. Navigieren Sie zu https://grafana.system.tanzu.

Da die Site selbstsignierte Zertifikate verwendet, müssen Sie unter Umständen eine browserspezifische Sicherheitswarnung durchlaufen, bevor Sie auf das Dashboard zugreifen können.

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