Reportez-vous à ces instructions pour installer Grafana sur un cluster TKG provisionné avec TKr pour vSphere 7.x.

Conditions requises

Reportez-vous à la section Workflow d'installation de modules standard sur TKr pour vSphere 7.x.

Installer Grafana

Installer Grafana
  1. Répertoriez les versions de Grafana disponibles dans le référentiel.
    kubectl get packages -n tkg-system | grep grafana
  2. Créez l'espace de noms Grafana.
    kubectl create ns tanzu-system-dashboards
  3. Créez une étiquette PSA pour l'espace de noms.
    kubectl label namespace tanzu-system-dashboards pod-security.kubernetes.io/enforce=privileged
  4. Vous pouvez également créer de manière déclarative l'espace de noms et l'étiquette Grafana à l'aide du fichier ns-grafana-dashboard.yaml.
    apiVersion: 
    v1kind: Namespace
    metadata:  
      name: grafana-dashboard
    ---
    apiVersion: v1
    kind: Namespace
    metadata:  
      name: tanzu-system-dashboards  
      labels:
        pod-security.kubernetes.io/enforce: privileged
  5. Créer grafana-data-values.yaml.

    Reportez-vous à la section Référence du module Grafana.

  6. Créez le secret à l'aide du fichier grafana-data-values.yaml en tant qu'entrée.
    kubectl create secret generic grafana-data-values --from-file=values.yaml=grafana-data-values.yaml -n tkg-system
    secret/grafana-data-values created
  7. Vérifiez le secret.
    kubectl get secrets -A
    kubectl describe secret grafana-data-values -n tkg-system
  8. Si nécessaire, personnalisez grafana-data-values pour votre environnement.

    Reportez-vous à la section Référence du module Grafana.

    Si vous mettez à jour les valeurs de données, mettez à jour le secret avec la commande suivante.
    kubectl create secret generic grafana-data-values --from-file=values.yaml=grafana-data-values.yaml -n tkg-system -o yaml --dry-run=client | kubectl replace -f-
    secret/grafana-data-values replaced
  9. Créez la spécification grafana.yaml.

    Reportez-vous à la section Installer Grafana sur TKr pour vSphere 7.x.

  10. Installer Grafana
    kubectl apply -f grafana.yaml
    serviceaccount/grafana-sa created
    clusterrolebinding.rbac.authorization.k8s.io/grafana-role-binding created
    packageinstall.packaging.carvel.dev/grafana created
  11. Vérifiez l'installation du module Grafana.
    kubectl get pkgi -A | grep grafana
  12. Vérifiez les objets Grafana.
    kubectl get all -n tanzu-system-dashboards

Accéder au tableau de bord Grafana à l'aide d'Envoy 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 du port de nœud Envoy

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
  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
    # TKG 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.

grafana-data-values.yaml

Reportez-vous à l'exemple suivant de fichier grafana-data-values.yaml.
namespace: tanzu-system-dashboards
grafana:
  pspNames: "vmware-system-restricted"
  deployment:
    replicas: 1
    updateStrategy: Recreate
  pvc:
    accessMode: ReadWriteOnce
    storage: 2Gi
    storageClassName: wcpglobalstorageprofile
  secret:
    admin_user: YWRtaW4=
    admin_password: YWRtaW4=
    type: Opaque
  service:
    port: 80
    targetPort: 3000
    type: LoadBalancer
ingress:
  enabled: true
  prefix: /
  servicePort: 80
  virtual_host_fqdn: grafana.system.tanzu

grafana.yaml

Reportez-vous à l'exemple suivant de spécification grafana.yaml. Mettez à jour la version du module si nécessaire.
apiVersion: v1
kind: ServiceAccount
metadata:
  name: grafana-sa
  namespace: tkg-system
  annotations:
    pod-security.kubernetes.io/enforce: "privileged"
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: grafana-role-binding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: grafana-sa
    namespace: tkg-system
---
apiVersion: packaging.carvel.dev/v1alpha1
kind: PackageInstall
metadata:
  name: grafana
  namespace: tkg-system
spec:
  serviceAccountName: grafana-sa
  packageRef:
    refName: grafana.tanzu.vmware.com
    versionSelection:
      constraints: 10.0.1+vmware.1-tkg.2 #PKG-VERSION
  values:
  - secretRef:
      name: grafana-data-values