Cette rubrique explique comment déployer Grafana dans un cluster de charge de travail. Les procédures ci-dessous s'appliquent aux déploiements vSphere, Amazon Web Services (AWS) et Azure.
Grafana est un logiciel open source qui vous permet de visualiser et d'analyser les données de mesures collectées par Prometheus sur vos clusters. Tanzu Kubernetes Grid inclut un module Grafana que vous pouvez déployer sur vos clusters de charge de travail.
kubectl
, comme décrit dans Installer la CLI Tanzu et d'autres outils à utiliser avec un superviseur vSphere with Tanzu ou Installer la CLI Tanzu et d'autres outils à utiliser avec les clusters de gestion autonomes.ImportantLa prise en charge des adresses IPv6 dans Tanzu Kubernetes Grid est limitée, reportez-vous à la section Déployer des clusters sur IPv6 (vSphere uniquement). Si vous n'effectuez pas le déploiement dans un environnement de mise en réseau IPv6 uniquement, vous devez fournir des adresses IPv4 dans les étapes suivantes.
Pour préparer le cluster :
Obtenez les informations d'identification de l'administrateur du cluster de charge de travail dans lequel vous souhaitez déployer Grafana. Par exemple :
tanzu cluster kubeconfig get my-cluster --admin
Définissez le contexte de kubectl sur le cluster. Par exemple :
kubectl config use-context my-cluster-admin@my-cluster
Activez l'entrée pour Grafana : par défaut, l'entrée est activée sur Grafana. Cela vous oblige à installer les modules suivants :
Passez à l'étape Déployer Grafana sur un cluster de charge de travail.
Pour déployer Grafana :
Si le cluster ne dispose pas d'un référentiel de modules avec le module Grafana installé, tel que le référentiel tanzu-standard
, installez-en un :
RemarqueSi vous ciblez un cluster basé sur un plan (hérité), ignorez cette étape. Pour les clusters basés sur un plan, le référentiel de modules
tanzu-standard
est automatiquement activé dans chaque cluster, dans l'espace de nomstanzu-package-repo-global
.
tanzu package repository add PACKAGE-REPO-NAME --url PACKAGE-REPO-ENDPOINT --namespace tkg-system
Où :
PACKAGE-REPO-NAME
est le nom du référentiel de modules, tel que tanzu-standard
ou le nom d'un registre d'images privé configuré avec des variables ADDITIONAL_IMAGE_REGISTRY
.PACKAGE-REPO-ENDPOINT
est l'URL du référentiel de modules.
tanzu-standard
est projects.registry.vmware.com/tkg/packages/standard/repo:v2.2.0
. Reportez-vous à la section Répertorier les référentiels de modules (List Package Repositories) pour obtenir cette valeur depuis la CLI Tanzu ou, dans Tanzu Mission Control, consultez la liste Modules complémentaires (Addons) > Référentiels (Repositories) dans le volet Cluster.Vérifiez que le module Grafana est disponible dans votre cluster de charge de travail :
tanzu package available list -A
Récupérez la version du module 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.17+vmware.1-tkg.1 2021-05-19T18:00:00Z tanzu-package-repo-global
Créez un fichier de configuration pour votre configuration Grafana :
tanzu package available get grafana.tanzu.vmware.com/PACKAGE-VERSION --default-values-file-output FILE-PATH
Où PACKAGE-VERSION
est la version du module Grafana que vous souhaitez installer et FILE-PATH
est l'emplacement dans lequel vous souhaitez enregistrer le fichier de configuration (par exemple, grafana-data-values.yaml
).
Pour plus d'informations sur les paramètres de configuration à utiliser dans grafana-data-values.yaml
, reportez-vous à la section Paramètres de configuration du module Grafana ci-dessous.
Modifiez grafana-data-values.yaml
et remplacez secret.admin_password
par un mot de passe codé en Base64. Pour générer un mot de passe codé en Base64, exécutez :
echo -n 'mypassword' | base64
Vous pouvez également utiliser l'outil de codage Base64 disponible à l'adresse suivante https://www.base64encode.org/ pour coder votre mot de passe. Par exemple, si vous utilisez l'une ou l'autre de ces méthodes, mypassword
génère le mot de passe codé bXlwYXNzd29yZA==
.
vSphere with Tanzu : Si vous déployez Grafana sur un cluster de charge de travail créé à l'aide d'un superviseur vSphere with Tanzu, attribuez une valeur non nulle à grafana.pvc.storageClassName
dans le fichier grafana-data-values.yaml
:
grafana:
pvc:
storageClassName: STORAGE-CLASS
Où STORAGE-CLASS
est le nom de la classe de stockage du cluster, tel que renvoyé par kubectl get storageclass
.
(Facultatif) Modifiez la configuration de la source de données Grafana dans grafana-data-values.yaml
. Grafana est configuré avec Prometheus comme source de données par défaut. Si vous avez personnalisé l'espace de noms de déploiement Prometheus et qu'il n'est pas déployé dans l'espace de noms par défaut tanzu-system-monitoring
, vous devez modifier la configuration de la source de données Grafana dans grafana-data-values.yaml
. Pour modifier la configuration de la source de données, copiez la section ci-dessous dans la position indiquée et modifiez url
au besoin.
#! 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
Pour plus d'informations sur les paramètres de configuration à utiliser dans grafana-data-values.yaml
, reportez-vous à la section Paramètres de configuration du module Grafana ci-dessous.
Après avoir apporté les modifications nécessaires à votre fichier grafana-data-values.yaml
, supprimez tous les commentaires qu'il contient :
yq -i eval '... comments=""' grafana-data-values.yaml
Déployez le module :
tanzu package install grafana \
--package grafana.tanzu.vmware.com \
--version AVAILABLE-PACKAGE-VERSION \
--values-file grafana-data-values.yaml \
--namespace TARGET-NAMESPACE
Où :
TARGET-NAMESPACE
est l'espace de noms dans lequel vous souhaitez installer le module Grafana. Par exemple, l'espace de noms my-packages
ou tanzu-user-managed-packages
.
--namespace
n'est pas spécifié, la CLI Tanzu utilise l'espace de noms default
. Les espaces Grafana et toutes les autres ressources associées au composant Grafana sont créés dans l'espace de noms que vous configurez dans grafana-data-values.yaml
. N'installez pas le module Grafana dans cet espace de noms.kubectl create namespace my-packages
.AVAILABLE-PACKAGE-VERSION
est la version que vous avez récupérée ci-dessus.
Par exemple :
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'
RemarqueSi l'installation échoue avec
error: Secret in version "v1" cannot be handled as a Secret: illegal base64 data at input byte 4 (reason: BadRequest)
, reportez-vous à la section Secret non créé lors de l'installation de Grafana à partir du fichier YAML par défaut du document Dépannage des problèmes de cluster de charge de travail.
Après avoir déployé Grafana, vous pouvez vérifier que le déploiement a réussi :
Vérifiez que le module Grafana est installé. Par exemple :
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
[...]
Le module grafana
et l'application grafana
sont installés dans l'espace de noms que vous spécifiez lors de l'exécution de la commande tanzu package install
.
Vérifiez que l'application grafana
a été rapprochée :
kubectl get apps -A
Par exemple :
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 l'état n'est pas Reconcile succeeded
, affichez les détails de l'état complet de l'application grafana
. L'affichage de l'état complet peut vous aider à résoudre le problème :
kubectl get app grafana --namespace PACKAGE-NAMESPACE -o yaml
Où PACKAGE-NAMESPACE
est l'espace de noms dans lequel vous avez installé le module.
Vérifiez que les nouveaux services sont en cours d'exécution en répertoriant tous les espaces qui s'exécutent dans le cluster :
kubectl get pods -A
Dans l'espace de noms tanzu-system-dashboards
, vous devez voir le service grafana
s'exécutant dans un espace :
NAMESPACE NAME READY STATUS RESTARTS AGE
[...]
tanzu-system-dashboards grafana-6865dbb4f5-pk2qg 2/2 Running 0 7m7s
[...]
Les espaces Grafana et toutes les autres ressources associées au composant Grafana sont créés dans l'espace de noms que vous avez fourni dans grafana-data-values.yaml
. Si vous utilisez l'espace de noms par défaut, ceux-ci sont créés dans l'espace de noms tanzu-system-dashboards
.
Il existe deux façons d'afficher les paramètres de configuration du module Grafana :
Pour récupérer le schéma du module :
tanzu package available get grafana.tanzu.vmware.com/7.5.17+vmware.1-tkg.1 -n AVAILABLE-PACKAGE-NAMESPACE --values-schema
Cette commande répertorie les paramètres de configuration du module Grafana et leurs valeurs par défaut. Vous pouvez utiliser la sortie pour mettre à jour le fichier grafana-data-values.yml
que vous avez créé à l'étape Préparer le fichier de configuration du module Grafana ci-dessus.
Le tableau suivant répertorie les paramètres de configuration du module Grafana et décrit leurs valeurs par défaut.
Vous pouvez définir les valeurs de configuration suivantes dans le fichier grafana-data-values.yml
que vous avez créé à l'étape Déployer Grafana sur un cluster de charge de travail ci-dessus.
Paramètre | Description | Type | Par défaut |
---|---|---|---|
namespace | Espace de noms dans lequel Grafana sera déployé. | String | tanzu-system-dashboards |
grafana.deployment.replicas | Nombre de réplicas Grafana. | Entier | 1 |
grafana.deployment.containers.resources | Demandes et limites de ressources du conteneur Grafana. | Mappage | {} |
grafana.deployment.k8sSidecar.containers.resources | Demandes et limites de ressources du conteneur k8s-sidecar. | Mappage | {} |
grafana.deployment.podAnnotations | Annotations d'espaces des déploiements Grafana. | Mappage | {} |
grafana.deployment.podLabels | Étiquettes d'espaces des déploiements Grafana. | Mappage | {} |
grafana.service.type | Type de service pour exposer Grafana. Valeurs prises en charge : ClusterIP , NodePort et LoadBalancer . (Pour vSphere, définissez ce paramètre sur NodePort ). |
String | LoadBalancer |
grafana.service.port | Port de service Grafana. | Entier | 80 |
grafana.service.targetPort | Port cible du service Grafana. | Entier | 9093 |
grafana.service.labels | Étiquettes de service Grafana. | Mappage | {} |
grafana.service.annotations | Annotations de service Grafana. | Mappage | {} |
grafana.config.grafana_ini | Pour plus d'informations sur la configuration de Grafana, reportez-vous à la section Grafana Configuration Defaults dans GitHub. | Fichier de config | grafana.ini |
grafana.config.datasource_yaml | Pour plus d'informations sur la configuration de la source de données, reportez-vous à la documentation de Grafana. | String | prometheus |
grafana.config.dashboardProvider_yaml | Pour plus d'informations sur la configuration du fournisseur de tableaux de bord, reportez-vous à la documentation de Grafana. | Fichier YAML | provider.yaml |
grafana.pvc.annotations | Classe de stockage à utiliser pour la réclamation de volume persistant. Par défaut, cette valeur est nulle et le provisionneur par défaut est utilisé. | String | null |
grafana.pvc.storageClassName | Classe de stockage à utiliser pour la réclamation de volume persistant. Par défaut, cette valeur est nulle et le provisionneur par défaut est utilisé. | String | null |
grafana.pvc.accessMode | Définissez le mode d'accès pour la réclamation de volume persistant. Valeurs prises en charge : ReadWriteOnce , ReadOnlyMany et ReadWriteMany . |
String | ReadWriteOnce |
grafana.pvc.storage | Définissez la taille de stockage pour la réclamation de volume persistant. | String | 2Gi |
grafana.secret.type | Type de secret défini pour le tableau de bord Grafana. | String | Opaque |
grafana.secret.admin_user | Nom d'utilisateur codé en Base64 pour accéder au tableau de bord Grafana. La valeur par défaut est YWRtaW4= , ce qui équivaut à admin en texte brut. |
String | YWRtaW4= |
grafana.secret.admin_password | Mot de passe d'utilisateur codé en Base64 pour accéder au tableau de bord Grafana. La valeur par défaut est YWRtaW4= , ce qui équivaut à admin en texte brut. |
String | YWRtaW4= |
ingress.enabled | Activez/désactivez l'entrée pour Grafana. | Booléen | true |
ingress.virtual_host_fqdn | Nom d'hôte pour accéder à Grafana. | String | grafana.system.tanzu |
ingress.prefix | Préfixe de chemin pour Grafana. | String | / |
ingress.servicePort | Port du service Grafana vers le trafic proxy. | Entier | 80 |
ingress.tlsCertificate.tls.crt | Certificat facultatif pour l'entrée si vous souhaitez utiliser votre propre certificat TLS. Un certificat auto-signé est généré par défaut. Remarque tls.crt est une clé et n'est pas imbriqué. |
String | Generated cert |
ingress.tlsCertificate.tls.key | Clé privée de certificat facultative pour l'entrée si vous souhaitez utiliser votre propre certificat TLS. Remarque tls.key est une clé et n'est pas imbriqué. |
String | Generated cert private key |
ingress.tlsCertificate.ca.crt | Certificat facultatif d'autorité de certification. Remarque ca.crt est une clé et n'est pas imbriqué. |
String | CA certificate |
Pour apporter des modifications à la configuration du module Grafana après le déploiement, mettez à jour votre module Grafana déployé :
Mettez à jour la configuration Grafana dans le fichier grafana-data-values.yaml
.
Mettez à jour le module installé :
tanzu package installed update grafana \
--version 7.5.17+vmware.1-tkg.1 \
--values-file grafana-data-values.yaml \
--namespace my-packages
Sortie attendue :
| 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'
Le module Grafana est rapproché à l'aide de la nouvelle valeur ou des nouvelles valeurs que vous avez ajoutées. L'application des modifications pour kapp-controller
peut prendre jusqu'à cinq minutes.
Pour plus d'informations sur la mise à jour, reportez-vous à la section Mettre à jour un module.
Pour supprimer le module Grafana de votre cluster, exécutez :
tanzu package installed delete grafana --namespace my-packages
Pour plus d'informations sur la suppression, reportez-vous à la section Supprimer un module.
Une fois Grafana déployé, le module Grafana crée un objet HTTPProxy Contour avec le nom de domaine complet grafana.system.tanzu
.
Pour utiliser ce nom de domaine complet pour accéder au tableau de bord Grafana :
Créez une entrée dans votre fichier /etc/hosts
local qui pointe une adresse IP vers ce nom de domaine complet :
tanzu-system-ingress
.Accédez à https://grafana.system.tanzu
.
Étant donné que le site utilise des certificats auto-signés, vous pouvez éventuellement recevoir un avertissement de sécurité spécifique du navigateur avant de pouvoir accéder au tableau de bord.