Fare riferimento a queste istruzioni per l'installazione di Grafana in un cluster TKG sottoposto a provisioning con TKr per vSphere 7.x.

Prerequisiti

Vedere Workflow per l'installazione di pacchetti standard in una TKr per vSphere 7.x.

Installazione di Grafana

Installare Grafana.
  1. Visualizzare l'elenco delle versioni di Grafana disponibili nel repository.
    kubectl get packages -n tkg-system | grep grafana
  2. Creare lo spazio dei nomi di Grafana.
    kubectl create ns tanzu-system-dashboards
  3. Creare l'etichetta PSA per lo spazio dei nomi.
    kubectl label namespace tanzu-system-dashboards pod-security.kubernetes.io/enforce=privileged
  4. In alternativa, creare in modo dichiarativo lo spazio dei nomi e l'etichetta di Grafana utilizzando il file 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. Creare il file grafana-data-values.yaml.

    Vedere Informazioni di riferimento sul pacchetto Grafana.

  6. Creare un segreto utilizzando il file grafana-data-values.yaml come input.
    kubectl create secret generic grafana-data-values --from-file=values.yaml=grafana-data-values.yaml -n tkg-system
    secret/grafana-data-values created
  7. Verificare il segreto.
    kubectl get secrets -A
    kubectl describe secret grafana-data-values -n tkg-system
  8. Se necessario, personalizzare grafana-data-values per il proprio ambiente.

    Fare riferimento a Informazioni di riferimento sul pacchetto Grafana.

    Se si aggiornano i valori dei dati, aggiornare il segreto con il comando seguente.
    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. Creare la specifica grafana.yaml.

    Vedere Installazione di Grafana in TKr per vSphere 7.x.

  10. Installare 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. Verificare l'installazione del pacchetto Grafana.
    kubectl get pkgi -A | grep grafana
  12. Verificare gli oggetti di Grafana.
    kubectl get all -n tanzu-system-dashboards

Accesso al dashboard di Grafana tramite LoadBalancer di Envoy

Se è distribuito il prerequisito del servizio Contour Envoy di tipo LoadBalancer e questo è stato specificato nel file di configurazione di Grafana, ottenere l'indirizzo IP esterno del bilanciamento del carico e creare record DNS per il FQDN di Grafana.
  1. Ottenere l'indirizzo External-IP per il servizio Envoy di tipo LoadBalancer.
    kubectl get service envoy -n tanzu-system-ingress
    Dovrebbe essere visualizzato l'indirizzo External-IP restituito, ad esempio:
    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
    In alternativa, è possibile ottenere l'indirizzo External-IP utilizzando il comando seguente.
    kubectl get svc envoy -n tanzu-system-ingress -o jsonpath='{.status.loadBalancer.ingress[0]}'
  2. Per verificare l'installazione dell'estensione Grafana, aggiornare il file /etc/hosts locale con il FQDN Grafana mappato all'indirizzo External-IP del bilanciamento del carico, ad esempio:
    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. Accedere al dashboard di Grafana passando a https://grafana.system.tanzu.

    Poiché il sito utilizza certificati autofirmati, potrebbe essere necessario esaminare un avviso di sicurezza specifico del browser prima di poter accedere al dashboard.

  4. Per l'accesso alla produzione, creare due record CNAME in un server DNS che mappano l'indirizzo External-IP del bilanciamento del carico del servizio Envoy al dashboard di Grafana.

Accesso al dashboard di Grafana tramite NodePort di Envoy

Se il prerequisito del servizio Contour Envoy di tipo NodePort è distribuito ed è stato specificato nel file di configurazione di Grafana, ottenere l'indirizzo IP della macchina virtuale di un nodo di lavoro e creare record DNS per il FQDN di Grafana.
  1. Passare al contesto dello Spazio dei nomi vSphere in cui viene eseguito il provisioning del cluster.
    kubectl config use-context VSPHERE-NAMESPACE
  2. Elencare i nodi nel cluster.
    kubectl get virtualmachines
  3. Scegliere uno dei nodi di lavoro e descriverlo utilizzando il comando seguente.
    kubectl describe virtualmachines tkgs-cluster-X-workers-9twdr-59bc54dc97-kt4cm
  4. Individuare l'indirizzo IP della macchina virtuale, ad esempio Vm Ip: 10.115.22.43.
  5. Per verificare l'installazione dell'estensione Grafana, aggiornare il file /etc/hosts locale con il FQDN Grafana mappato all'indirizzo IP del nodo di lavoro, ad esempio:
    127.0.0.1 localhost
    127.0.1.1 ubuntu
    # TKG Grafana with Envoy NodePort
    10.115.22.43 grafana.system.tanzu
    
  6. Accedere al dashboard di Grafana passando a https://grafana.system.tanzu.

    Poiché il sito utilizza certificati autofirmati, potrebbe essere necessario esaminare un avviso di sicurezza specifico del browser prima di poter accedere al dashboard.

grafana-data-values.yaml

Fare riferimento al file grafana-data-values.yaml di esempio seguente.
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

Fare riferimento alla specifica grafana.yaml di esempio seguente. Aggiornare la versione del pacchetto in base alle esigenze.
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