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 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.
kubectl
wie unter Installieren der Tanzu CLI und anderen Tools zur Verwendung mit vSphere with Tanzu Supervisor oder Installieren der Tanzu CLI und anderer Tools zur Verwendung mit eigenständigen Verwaltungsclustern.WichtigDie 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.
So bereiten Sie den Cluster vor:
Rufen Sie die Admin-Anmeldedaten des Arbeitslastclusters ab, in dem Sie Grafana bereitstellen möchten. Beispiel:
tanzu cluster kubeconfig get my-cluster --admin
Legen Sie den Kontext von kubectl auf den Cluster fest. Beispiel:
kubectl config use-context my-cluster-admin@my-cluster
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.
So stellen Sie Grafana bereit:
Wenn der Cluster nicht über ein Paket-Repository mit installiertem Grafana-Paket verfügt, wie z. B. das tanzu-standard
-Repository, installieren Sie es:
HinweisWenn 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 Namespacetanzu-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.
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.Bestätigen Sie, dass das Grafana-Paket in Ihrem Arbeitslastcluster verfügbar ist:
tanzu package available list -A
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
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.
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==
.
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.
(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.
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
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
.
--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.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'
HinweisWenn 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.
Nach der Bereitstellung von Grafana können Sie überprüfen, ob die Bereitstellung erfolgreich durchgeführt wurde:
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.
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.
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.
Es gibt zwei Möglichkeiten, Konfigurationsparameter des Grafana-Pakets anzuzeigen:
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.
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 |
Um nach der Bereitstellung Änderungen an der Konfiguration des Grafana-Pakets vorzunehmen, aktualisieren Sie Ihr bereitgestelltes Grafana-Paket:
Aktualisieren Sie die Grafana-Konfiguration in der Datei grafana-data-values.yaml
.
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.
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.
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:
Erstellen Sie einen Eintrag in Ihrer lokalen Datei /etc/hosts
, die eine IP-Adresse auf diesen FQDN verweist:
tanzu-system-ingress
.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.