Cette rubrique décrit comment déployer et gérer l'extension TKG v1.3.1 pour Grafana. Grafana vous permet d'interroger, de visualiser, d'alerter et d'explorer les mesures, quel que soit l'endroit où elles sont stockées. Grafana fournit des outils pour former des graphiques et des visualisations à partir des données d'application. Déployez l'extension TKG pour Grafana afin de générer et d'afficher des mesures pour les clusters Tanzu Kubernetes.

Conditions préalables de l'extension Grafana

Respectez les conditions préalables suivantes pour déployer l'extension.

Conditions requises supplémentaires pour l'extension Grafana

Certaines conditions supplémentaires sont requises avant et après l'installation de l'extension TKG v1.3.1 pour la surveillance Grafana.

  • En outre, l'extension de surveillance Grafana nécessite une classe de stockage persistante par défaut. Vous pouvez créer un cluster avec une classe de stockage persistante par défaut ou en spécifier un dans le fichier de configuration Grafana lors du déploiement de l'extension. Reportez-vous à la section Vérifier les exigences de stockage persistant pour les extensions TKG.
  • Une fois l'extension Grafana déployée, vous accédez au tableau de bord Grafana via HTTP/S à l'aide de l'adresse IP exposée par l'un des types de service Kubernetes suivants : ClusterIP (par défaut), NodePort ou LoadBalancer. Pour accéder au tableau de bord Grafana depuis l'extension du cluster, déployez l'extension Contour avant de déployer Grafana. Pour déployer l'extension Contour, consultez Déployer et gérer l'extension TKG pour la surveillance Grafana.

    Grafana prend en charge les types de service Kubernetes suivants :

    Type de service Description Accessibilité
    ClusterIP Expose le service sur une adresse IP interne au cluster. Le service est uniquement accessible depuis le cluster.
    NodePort Expose le service sur l'adresse IP de chaque nœud sur un port statique. Le service est accessible à l'extérieur du cluster.
    LoadBalancer Expose le service en externe à l'aide d'un équilibrage de charge. Le service est accessible à l'extérieur du cluster.
    ClusterIP est la valeur par défaut, mais elle est uniquement accessible depuis le cluster. Si vous utilisez la mise en réseau NSX-T pour le Cluster superviseur, créez un service Contour Envoy de type LoadBalancer. Si vous utilisez la mise en réseau vSphere vDS pour le Cluster superviseur, créez un service Contour Envoy de type LoadBalancer ou NodePort, selon votre vos exigences.

Déployer l'extension Grafana pour la visualisation et l'analyse

L’extension TKG pour Grafana déploie un conteneur unique. Pour plus d'informations, consultez https://grafana.com/.
Conteneur Type de ressource Réplicas Description
Grafana Déploiement 2 Visualisation des données
L'extension est configurée pour extraire les conteneurs du registre public VMware à l'adresse https://projects.registry.vmware.com/. Si vous utilisez un registre privé, modifiez l'URL du point de terminaison dans les valeurs de données et les configurations de l'extension pour qu'elle corresponde. Reportez-vous à la section Configurer l'extension Grafana.
  1. Vérifiez que vous avez rempli chacune des conditions préalables de l'extension Grafana. Reportez-vous à la section Conditions préalables de l'extension Grafana.
  2. Remplacez le répertoire par celui de l'extension Grafana.
    cd /tkg-extensions-v1.3.1+vmware.1/extensions/monitoring/grafana
  3. Créez l'espace de noms tanzu-system-monitoring, ainsi que le compte de service et les objets de rôle Grafana.
    kubectl apply -f namespace-role.yaml
  4. Créez un fichier de valeurs de données Grafana.
    L'exemple de fichier de valeurs de données fournit la configuration minimale requise.
    cp grafana-data-values.yaml.example grafana-data-values.yaml
  5. Configurez l'extension Grafana en mettant à jour grafana-data-values.yaml.

    Personnalisez la configuration si nécessaire. Reportez-vous à la section Configurer l'extension Grafana.

    Le admin_password doit être codé en base64, mais il ne bloquera pas le déploiement de l'extension si ce n'est pas le cas. Dans l'exemple ci-dessous, le mot de passe « admin » est codé en base64. Codez votre propre mot de passe Grafana ici : https://www.base64encode.org/.

    Si le cluster n'est pas provisionné avec une classe de stockage par défaut, vous pouvez le spécifier dans le fichier de valeurs de données. Assurez-vous également que l'espace de noms dispose de suffisamment de stockage pour les réclamations de volume persistant.
    monitoring:
      grafana:
        image:
          repository: "projects.registry.vmware.com/tkg/grafana"
        pvc:
          storage_class: vwt-storage-policy
          storage: "8Gi"  
        secret:
          admin_password: "YWRtaW4="
      grafana_init_container:
        image:
          repository: "projects.registry.vmware.com/tkg/grafana"
      grafana_sc_dashboard:
        image:
          repository: "projects.registry.vmware.com/tkg/grafana"
    
    Si vous avez déployé Contour avec un service Envoy de type LoadBalancer ou NodePort, spécifiez-le dans le fichier de configuration, comme indiqué. Consultez Configurer l'extension Grafana pour plus d'informations.
    monitoring:
      grafana:
        service:
          type: LoadBalancer OR NodePort
    

    Par défaut, l'extension Grafana crée le nom de domaine complet grafana.system.tanzu pour accéder au tableau de bord Grafana. Vous pouvez personnaliser ce nom de domaine complet en spécifiant le nom d'hôte souhaité dans le fichier de configuration sur monitoring.grafana.ingress.virtual_host_fqdn. Consultez Configurer l'extension Grafana pour plus d'informations.

  6. Créez le secret Grafana avec le fichier grafana-data-values.
    kubectl create secret generic grafana-data-values --from-file=values.yaml=grafana-data-values.yaml -n tanzu-system-monitoring

    Le secret grafana-data-values est créé dans l'espace de noms tanzu-system-monitoring. Effectuez la vérification à l'aide de la commande kubectl get secrets -n tanzu-system-monitoring.

  7. Déployez l'extension Grafana.
    kubectl apply -f grafana-extension.yaml

    En cas de réussite, l'application Grafana est créée : app.kappctrl.k14s.io/grafana created.

  8. Vérifiez l'état de l'application Grafana.
    kubectl get app grafana -n tanzu-system-monitoring
    L'état doit passer de Reconciling à Reconcile succeeded. Si l'état est Reconcile failed, reportez-vous à la section Dépannage.
  9. Affichez l'état détaillé sur l'application Grafana.
    kubectl get app grafana -n tanzu-system-monitoring -o yaml
  10. Vérifiez le déploiement Grafana.
    kubectl get deployments -n tanzu-system-monitoring

Accéder au tableau de bord Grafana à l'aide d'un service Envoy Contour de type LoadBalancer

Si le service Envoy Contour de type LoadBalancer est déployé et que vous l'avez spécifié dans le fichier de configuration Grafana, obtenez l'adresse IP externe de l'équilibrage de charge et créez des enregistrements DNS pour le nom de domaine complet Grafana.
  1. Obtenez l'adresse External-IP pour le service Envoy de type LoadBalancer.
    kubectl get service envoy -n tanzu-system-ingress
    Vous devez voir l'adresse External-IP renvoyée, par exemple :
    NAME    TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)                      AGE
    envoy   LoadBalancer   10.99.25.220   10.195.141.17   80:30437/TCP,443:30589/TCP   3h27m
    Vous pouvez également obtenir l'adresse External-IP à l'aide de la commande suivante.
    kubectl get svc envoy -n tanzu-system-ingress -o jsonpath='{.status.loadBalancer.ingress[0]}'
  2. Pour vérifier l'installation de l'extension Grafana, mettez à jour votre fichier /etc/hosts local avec le nom de domaine complet Grafana mappé à l'adresse External-IP de l'équilibrage de charge, par exemple :
    127.0.0.1 localhost
    127.0.1.1 ubuntu
    # TKG Grafana Extension with Envoy Load Balancer
    10.195.141.17 grafana.system.tanzu
    
  3. Accédez au tableau de bord Grafana via 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.

  4. Pour un accès en production, créez deux enregistrements CNAME sur un serveur DNS qui mappent l'adresse External-IP de l'équilibrage de charge du service Envoy au tableau de bord Grafana.

Accéder au tableau de bord Grafana à l'aide d'un service Envoy Contour de type NodePort

Si le service Envoy Contour requis de type NodePort est déployé et que vous l'avez spécifié dans le fichier de configuration Grafana, obtenez l'adresse IP de la machine virtuelle d'un nœud worker et créez des enregistrements DNS pour le nom de domaine complet Grafana.
  1. Changez de contexte pour utiliser l'Espace de noms vSphere où le cluster est provisionné.
    kubectl config use-context VSPHERE-NAMESPACE
  2. Répertoriez les nœuds du cluster.
    kubectl get virtualmachines
    Vous devez voir les nœuds de cluster, par exemple :
    NAME                                            POWERSTATE   AGE
    tkgs-cluster-X-control-plane-6dgln              poweredOn    6h7m
    tkgs-cluster-X-control-plane-j6hq6              poweredOn    6h10m
    tkgs-cluster-X-control-plane-xc25f              poweredOn    6h14m
    tkgs-cluster-X-workers-9twdr-59bc54dc97-kt4cm   poweredOn    6h12m
    tkgs-cluster-X-workers-9twdr-59bc54dc97-pjptr   poweredOn    6h12m
    tkgs-cluster-X-workers-9twdr-59bc54dc97-t45mn   poweredOn    6h12m
  3. Choisissez l'un des nœuds worker et décrivez-le à l'aide de la commande suivante.
    kubectl describe virtualmachines tkgs-cluster-X-workers-9twdr-59bc54dc97-kt4cm
  4. Localisez l'adresse IP de la machine virtuelle, par exemple Vm Ip: 10.115.22.43.
  5. Pour vérifier l'installation de l'extension Grafana, mettez à jour votre fichier /etc/hosts local avec le nom de domaine complet Grafana mappé à l'adresse IP du nœud worker, par exemple :
    127.0.0.1 localhost
    127.0.1.1 ubuntu
    # TKGS Grafana with Envoy NodePort
    10.115.22.43 grafana.system.tanzu
    
  6. Accédez au tableau de bord Grafana via 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.

Dépanner le déploiement de Grafana

En cas d'échec du déploiement ou du rapprochement, exécutez kubectl get pods -A pour afficher l'état de l'espace. Les espaces contour et envoy doivent être à l'état Running. Si l'état de l'espace est ImagePullBackOff ou ImageCrashLoopBackOff, l'image de conteneur n'a pas pu être extraite. Vérifiez l'URL du registre dans les valeurs de données et les fichiers YAML de l'extension, et assurez-vous qu'elles sont correctes.

Vérifiez les journaux du conteneur, où name-XXXX est le nom d'espace unique lorsque vous exécutez kubectl get pods -A :
kubectl logs pod/grafana-XXXX -c grafana -n tanzu-system-monitoring

Mettre à jour l'extension Grafana

Mettez à jour l'extension Grafana déployée sur un cluster Tanzu Kubernetes.

  1. Obtenez les valeurs de données Grafana actuelles à partir du secret grafana-data-values.
    kubectl get secret grafana-data-values -n tanzu-system-monitoring -o 'go-template={{ index .data "values.yaml" }}' | base64 -d > grafana-data-values.yaml
    
  2. Mettez à jour les valeurs des données Grafana dans grafana-data-values.yaml. Reportez-vous à la section Configurer l'extension Grafana.
  3. Mettez à jour le secret des valeurs de données Grafana.
    kubectl create secret generic grafana-data-values --from-file=values.yaml=grafana-data-values.yaml -n tanzu-system-monitoring -o yaml --dry-run | kubectl replace -f-
    
    L'extension Grafana est rapprochée des valeurs de données mises à jour.
    Note : Par défaut, kapp-controller synchronise les applications toutes les 5 minutes. La mise à jour doit prendre effet en 5 minutes ou moins. Si vous souhaitez que la mise à jour prenne effet immédiatement, modifiez syncPeriod dans grafana-extension.yaml à une valeur inférieure et appliquez l'extension Grafana à l'aide kubectl apply -f grafana-extension.yaml.
  4. Vérifiez l'état de l'extension.
    kubectl get app grafana -n tanzu-system-monitoring

    L'état doit être Reconcile Succeeded une fois que Grafana est mise à jour.

  5. Affichez l'état détaillé et dépannez si nécessaire.
    kubectl get app grafana -n tanzu-system-monitoring -o yaml

Supprimer l'extension Grafana

Supprimez l'extension Grafana d'un cluster Tanzu Kubernetes.
Note : Suivez la procédure dans l'ordre. Ne supprimez pas l'espace de noms, le compte de service et les objets de rôle avant la suppression complète de l'application Grafana. Cela pourrait entraîner des erreurs système.
Note : Les extensions Prometheus et Grafana sont déployées dans le même espace de noms : tanzu-system-monitoring. Si vous avez déployé les deux extensions sur le même cluster, supprimez chaque extension avant de supprimer l'espace de noms.
  1. Remplacez le répertoire par celui de l'extension Grafana.
    cd /tkg-extensions-v1.3.1+vmware.1/extensions/monitoring/grafana
  2. Supprimez l'application Grafana.
    kubectl delete app grafana -n tanzu-system-monitoring

    Résultat attendu : app.kappctrl.k14s.io "grafana" deleted

  3. Vérifiez que l'application Grafana est supprimée.
    kubectl get app grafana -n tanzu-system-monintoring

    Résultat attendu : apps.kappctrl.k14s.io "grafana" not found

  4. Supprimez l'espace de noms tanzu-system-monitoring, ainsi que le compte de service et les objets de rôle Grafana.
    Avertissement : N'effectuez pas cette étape si Prometheus est déployé.
    kubectl delete -f namespace-role.yaml
  5. Si vous souhaitez redéployer Grafana, supprimez le secret grafana-data-values.
    kubectl delete secret grafana-data-values -n tanzu-system-monitoring

    Résultat attendu : secret "grafana-data-values" deleted

Mettre à niveau l'extension Grafana

Si une extension Grafana existante est déployée, vous pouvez la mettre à niveau pour utiliser la dernière version.
  1. Exportez le configmap Grafana et enregistrez-le en tant que sauvegarde.
    kubectl get configmap grafana -n tanzu-system-monitoring -o 'go-template={{ index .data "grafana.yaml" }}' > grafana-configmap.yaml
  2. Supprimez l'extension Grafana existante. Reportez-vous à la section Supprimer l'extension Grafana.
  3. Déployez l'extension Grafana. Reportez-vous à la section Déployer l'extension Grafana pour la visualisation et l'analyse.

Configurer l'extension Grafana

La configuration Grafana est définie dans /tkg-extensions-v1.3.1+vmware.1/extensions/monitoring/grafana/grafana-data-values.yaml.
Tableau 1. Paramètres de configuration Grafana
Paramètre Description Type Par défaut
monitoring.namespace Espace de noms dans lequel Prometheus sera déployé string tanzu-system-monitoring
monitoring.create_namespace L'indicateur permet de savoir s'il faut créer l'espace de noms spécifié par monitoring.namespace booléen false
monitoring.grafana.cluster_role.apiGroups Groupe d'API défini pour le rôle de cluster Grafana liste [""]
monitoring.grafana.cluster_role.resources Ressources définies pour le rôle de cluster Grafana liste ["configmaps", "secrets"]
monitoring.grafana.cluster_role.verbs autorisation d'accès définie pour clusterrole liste ["get", "watch", "list"]
monitoring.grafana.config.grafana_ini Détails du fichier de configuration Grafana fichier de config grafana.ini

Dans ce fichier, l'URL grafana_net est utilisée pour l'intégration à Grafana (par exemple, pour importer le tableau de bord directement depuis Grafana.com).

monitoring.grafana.config.datasource.type Type de source de données Grafana string prometheus
monitoring.grafana.config.datasource.access Mode d'accès. Proxy ou direct (serveur ou navigateur dans l'interface utilisateur) string proxy
monitoring.grafana.config.datasource.isDefault Marquer comme source de données Grafana par défaut booléen true
monitoring.grafana.config.provider_yaml Fichier de config pour définir le fournisseur du tableau de bord grafana Fichier yaml provider.yaml
monitoring.grafana.service.type Type de service pour exposer Grafana. Valeurs prises en charge : ClusterIP, NodePort, LoadBalancer string vSphere : NodePort, aws/azure : LoadBalancer
monitoring.grafana.pvc.storage_class Définissez le mode d'accès pour la réclamation de volume persistant. Valeurs prise en charge : ReadWriteOnce, ReadOnlyMany, ReadWriteMany string ReadWriteOnce
monitoring.grafana.pvc.storage Définir la taille de stockage pour la réclamation de volume persistant string 2Gi
monitoring.grafana.deployment.replicas Nombre de réplicas grafana entier 1
monitoring.grafana.image.repository Emplacement du référentiel avec l'image Grafana. La valeur par défaut est le registre VMware public. Modifiez cette valeur si vous utilisez un référentiel privé (par exemple, un environnement air-gapped). string projects.registry.vmware.com/tkg/grafana
monitoring.grafana.image.name Nom de l'image Grafana string grafana
monitoring.grafana.image.tag Balise d'image Grafana. Il peut être nécessaire de mettre à jour cette valeur si vous mettez à niveau la version. string v7.3.5_vmware.1
monitoring.grafana.image.pullPolicy Stratégie d'extraction d'image Grafana string IfNotPresent
monitoring.grafana.secret.type Type secret défini pour le tableau de bord Grafana string Opaque
monitoring.grafana.secret.admin_user Nom d'utilisateur pour accéder au tableau de bord Grafana string YWRtaW4=

La valeur est codée en base64, à décoder : echo "xxxxxx" | base64 --decode

monitoring.grafana.secret.admin_password Mot de passe pour accéder au tableau de bord Grafana string null
monitoring.grafana.secret.ldap_toml Si vous utilisez l'authentification LDAP, chemin d'accès au fichier de configuration LDAP string ""
monitoring.grafana_init_container.image.repository Référentiel contenant l'image de conteneur d'initialisation Grafana. La valeur par défaut est le registre VMware public. Modifiez cette valeur si vous utilisez un référentiel privé (par exemple, un environnement air-gapped). string projects.registry.vmware.com/tkg/grafana
monitoring.grafana_init_container.image.name Nom de l'image de conteneur d'initialisation Grafana string k8s-sidecar
monitoring.grafana_init_container.image.tag Balise d'image de conteneur d'initialisation Grafana. Il peut être nécessaire de mettre à jour cette valeur si vous mettez à niveau la version. string 0.1.99
monitoring.grafana_init_container.image.pullPolicy Stratégie d'extraction d'image de conteneur d'initialisation Grafana string IfNotPresent
monitoring.grafana_sc_dashboard.image.repository Référentiel contenant l'image du tableau de bord Grafana. La valeur par défaut est le registre VMware public. Modifiez cette valeur si vous utilisez un référentiel privé (par exemple, un environnement air-gapped). string projects.registry.vmware.com/tkg/grafana
monitoring.grafana_sc_dashboard.image.name Nom de l'image du tableau de bord Grafana string k8s-sidecar
monitoring.grafana_sc_dashboard.image.tag Balise d'image du tableau de bord Grafana. Il peut être nécessaire de mettre à jour cette valeur si vous mettez à niveau la version. string 0.1.99
monitoring.grafana_sc_dashboard.image.pullPolicy Stratégie d'extraction d'image du tableau de bord Grafana string IfNotPresent
monitoring.grafana.ingress.enabled Activer/désactiver l'entrée pour Grafana booléen true
monitoring.grafana.ingress.virtual_host_fqdn Nom d'hôte pour accéder à Grafana string grafana.system.tanzu
monitoring.grafana.ingress.prefix Préfixe du chemin d'accès pour Grafana string /
monitoring.grafana.ingress.tlsCertificate.tls.crt Certificat facultatif pour entrée si vous souhaitez utiliser votre propre certificat TLS. Un cert auto-signé est généré par défaut string Certificat généré
monitoring.grafana.ingress.tlsCertificate.tls.key Clé privée de certificat facultatif pour entrée si vous souhaitez utiliser votre propre certificat TLS. string Clé de certificat généré