워크로드 클러스터에 Grafana 배포

이 항목에서는 Grafana를 Tanzu Kubernetes Grid의 워크로드에 배포하는 방법을 설명합니다.

Grafana

Grafana는 클러스터에서 Prometheus가 수집한 메트릭 데이터를 시각화하고 분석할 수 있는 오픈 소스 소프트웨어입니다. Tanzu Kubernetes Grid에는 워크로드 클러스터에 배포할 수 있는 Grafana 패키지가 포함되어 있습니다.

사전 요구 사항

Grafana 배포를 위해 워크로드 클러스터 준비

클러스터를 준비하려면 다음을 수행합니다.

  1. Grafana를 배포할 워크로드 클러스터의 admin 자격 증명을 가져옵니다. 예:

    tanzu cluster kubeconfig get my-cluster --admin
    
  2. kubectl의 컨텍스트를 클러스터로 설정합니다. 예:

    kubectl config use-context my-cluster-admin@my-cluster
    
  3. Grafana에 수신 사용 기본적으로 Grafana는 수신을 사용하도록 설정되어 있습니다. 이 경우 다음 패키지를 설치해야 합니다.

워크로드 클러스터에 Grafana 배포로 계속 진행합니다.

워크로드 클러스터에 Grafana 배포

Grafana를 배포하려면 아래 절차를 따르십시오.

  1. 아직 하지 않았다면 standard 패키지 저장소를 클러스터에 추가합니다.

    tanzu package repository add tanzu-standard --url projects.registry.vmware.com/tkg/packages/standard/repo:v1.6.0 --namespace tkg-system
    
  2. 워크로드 클러스터에서 Grafana 패키지를 사용할 수 있는지 확인합니다.

    tanzu package available list -A
    
  3. 사용 가능한 패키지의 버전을 검색합니다.

    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.7+vmware.1-tkg.1             2021-05-19T18:00:00Z  tanzu-package-repo-global
    
  4. Grafana 구성용 구성 파일을 생성합니다.

    tanzu package available get grafana.tanzu.vmware.com/PACKAGE-VERSION --generate-default-values-file
    
    

    여기서 PACKAGE-VERSION은 설치하려는 Grafana 패키지의 버전입니다. 위 명령은 이름이 grafana-default-values.yaml이고 기본값이 포함된 구성 파일을 생성합니다. 이전 버전에서는 이 파일을 grafana-data-values.yaml이라고 했습니다.

    grafana-default-values.yaml에서 사용할 구성 매개 변수에 대한 자세한 내용은 아래의 Grafana 패키지 구성 매개 변수를 참조하십시오.

  5. grafana-default-values.yaml을 편집하고 secret.admin_password를 Base64로 인코딩된 암호로 교체합니다. Base64로 인코딩된 암호를 생성하려면 다음을 실행합니다.

    echo -n 'mypassword' | base64
    

    https://www.base64encode.org/에서 Base64 인코딩 도구를 사용하여 암호를 인코딩할 수도 있습니다. 예를 들어 두 방법 중 하나를 사용하면 mypassword가 암호화된 암호 bXlwYXNzd29yZA==를 생성합니다.

  6. vSphere with Tanzu: vSphere with Tanzu Supervisor에서 생성된 워크로드 클러스터에 Grafana를 배포하는 경우, grafana-default-values.yaml 파일에서 <code>prometheus.pvc.storageClassName</code> 및 ingress.pvc.storageClassName<code>prometheus.pvc.storageClassName</code>에 Null이 아닌 값을 설정합니다.

    ingress:
    virtual_host_fqdn: "grafana.system.tanzu"
    pvc:
      storageClassName: STORAGE-CLASS
    

    여기서 STORAGE-CLASSkubectl get storageclass에서 반환된 클러스터의 스토리지 클래스 이름입니다.

  7. (선택 사항) grafana-default-values.yaml에서 Grafana 데이터 소스 구성을 수정합니다. Grafana는 Prometheus를 기본 데이터 소스로 구성합니다. Prometheus 배포 네임스페이스를 사용자 지정했으며 기본 네임스페이스인 tanzu-system-monitoring에 배포되지 않은 경우 grafana-default-values.yaml에서 Grafana 데이터 소스 구성을 변경해야 합니다. 데이터 소스 구성을 변경하려면 아래 섹션을 표시된 위치로 복사하고 필요에 따라 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
    

    grafana-default-values.yaml에서 사용할 구성 매개 변수에 대한 자세한 내용은 아래의 Grafana 패키지 구성 매개 변수를 참조하십시오.

  8. grafana-default-values.yaml 파일을 변경하는 데 필요한 내용을 변경한 후에는 모든 주석을 제거합니다.

    yq -i eval '... comments=""' grafana-default-values.yaml
    
  9. 패키지 배포:

    클러스터에 대상 네임스페이스가 있는 경우 다음을 실행합니다.

    tanzu package install grafana \
    --package-name grafana.tanzu.vmware.com \
    --version AVAILABLE-PACKAGE-VERSION \
    --values-file grafana-default-values.yaml \
    --namespace TARGET-NAMESPACE
    

    형식 설명:

    • TARGET-NAMESPACE는 Grafana 패키지, Grafana 패키지 애플리케이션, 그리고 패키지를 설명하는 기타 Kubernetes 리소스를 설치하려는 네임스페이스입니다. 예: my-packages 또는 tanzu-user-managed-packages 네임스페이스. --namespace 플래그를 지정하지 않으면 Tanzu CLI는 default 네임스페이스를 사용합니다. Grafana 포드, 그리고 Grafana 구성 요소와 연결된 기타 리소스는 grafana-default-values.yaml에 설정된 네임스페이스에 생성됩니다. Grafana 패키지를 이 네임스페이스에 설치하지 마십시오.
    • AVAILABLE-PACKAGE-VERSION은 위에서 검색한 버전입니다.

    예:

    tanzu package install grafana --package-name grafana.tanzu.vmware.com --version 7.5.7+vmware.1-tkg.1 --values-file grafana-default-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'
    

    대상 네임스페이스가 클러스터에 없으면 다음을 실행합니다.

    tanzu package install grafana \
    --package-name grafana.tanzu.vmware.com \
    --version AVAILABLE-PACKAGE-VERSION \
    --values-file grafana-default-values.yaml \
    --namespace TARGET-NAMESPACE
    --create-namespace
    

    형식 설명:

    • TARGET-NAMESPACE는 Grafana 패키지, Grafana 패키지 애플리케이션, 그리고 패키지를 설명하는 기타 Kubernetes 리소스를 설치하려는 네임스페이스입니다. 예: my-packages 또는 tanzu-user-managed-packages 네임스페이스. --namespace 플래그를 지정하지 않으면 Tanzu CLI는 default 네임스페이스를 사용합니다. Grafana 포드, 그리고 Grafana 구성 요소와 연결된 기타 리소스는 grafana-default-values.yaml에 설정된 네임스페이스에 생성됩니다. Grafana 패키지를 이 네임스페이스에 설치하지 마십시오.
    • AVAILABLE-PACKAGE-VERSION은 위에서 검색한 버전입니다.

    예:

    tanzu package install grafana --package-name grafana.tanzu.vmware.com --version 7.5.7+vmware.1-tkg.1 --values-file grafana-default-values.yaml --namespace tanzu-package-repo-global --create-namespace
    

Grafana 배포 확인

Grafana를 배포한 후 배포가 성공했는지 확인할 수 있습니다.

  1. Grafana 패키지가 설치되어 있는지 확인합니다. 예:

    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.7+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
    [...]
    

    grafana 패키지 및 grafana 애플리케이션은 tanzu package install 명령을 실행할 때 지정한 네임스페이스에 설치됩니다.

  2. grafana 애플리케이션이 조정되었는지 확인합니다.

    kubectl get apps -A
    

    예:

    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
    [...]
    

    상태가 Reconcile succeeded가 아닌 경우 grafana 애플리케이션의 전체 상태 세부 정보를 확인합니다. 전체 상태를 확인하면 문제를 해결하는 데 도움이 될 수 있습니다.

    kubectl get app grafana --namespace PACKAGE-NAMESPACE -o yaml
    

    여기서 PACKAGE-NAMESPACE는 패키지를 설치한 네임스페이스입니다.

  3. 클러스터에서 실행 중인 모든 포드를 표시하여 새 서비스가 실행되고 있는지 확인합니다.

    kubectl get pods -A
    

    tanzu-system-dashboards 네임스페이스에는 포드에서 실행 중인 grafana 서비스가 표시됩니다.

    NAMESPACE               NAME                                    READY   STATUS    RESTARTS   AGE
    [...]
    tanzu-system-dashboards   grafana-6865dbb4f5-pk2qg              2/2     Running   0          7m7s
    [...]
    

Grafana 포드, 그리고 Grafana 구성 요소와 연결된 기타 리소스는 grafana-default-values.yaml에 제공한 네임스페이스에 생성됩니다. 기본 네임스페이스를 사용하는 경우에는 tanzu-system-dashboards 네임스페이스에 생성됩니다.

Grafana 패키지 구성 매개 변수

Grafana 패키지의 구성 매개 변수를 볼 수 있는 방법에는 두 가지가 있습니다.

패키지 스키마 검토

패키지 스키마를 검색하려면 다음을 수행합니다.

tanzu package available get grafana.tanzu.vmware.com/7.5.7+vmware.1-tkg.1 -n AVAILABLE-PACKAGE-NAMESPACE --values-schema

이 명령은 Grafana 패키지의 구성 매개 변수와 해당 기본값을 나열합니다. 출력을 사용하여 위의 grafana-data-values.yml에서 생성된 grafana-data-values.yml 파일을 업데이트할 수 있습니다.

구성 매개 변수 검토

다음 표에는 Grafana 패키지의 구성 매개 변수가 나와 있고, 해당 기본값을 설명합니다.

위의 워크로드 클러스터에 Grafana 배포에서 생성된 grafana-data-values.yml 파일에서 다음 구성 값을 설정할 수 있습니다.

매개 변수 설명 유형 기본값
namespace Grafana가 배포될 네임스페이스. 문자열 tanzu-system-dashboards
grafana.deployment.replicas Grafana 복제본 수. 정수 1
grafana.deployment.containers.resources Grafana 컨테이너 리소스 요청 및 제한. {}
grafana.deployment.k8sSidecar.containers.resources k8s-sidecar 컨테이너 리소스 요청 및 제한. {}
grafana.deployment.podAnnotations Grafana 배포 포드 주석. {}
grafana.deployment.podLabels Grafana 배포 포드 레이블. {}
grafana.service.type Grafana를 노출할 서비스 유형. 지원되는 값: ClusterIP, NodePort, LoadBalancer. (vSphere의 경우 NodePort로 설정) 문자열 LoadBalancer
grafana.service.port Grafana 서비스 포트. 정수 80
grafana.service.targetPort Grafana 서비스 대상 포트. 정수 9093
grafana.service.labels Grafana 서비스 레이블. {}
grafana.service.annotations Grafana 서비스 주석. {}
grafana.config.grafana_ini Grafana 구성에 대한 자세한 내용은 GitHub에서 Grafana 구성 기본값을 참조하십시오. 구성 파일 grafana.ini
grafana.config.datasource_yaml 데이터 소스 구성에 대한 자세한 내용은 Grafana 설명서를 참조하십시오. 문자열 prometheus
grafana.config.dashboardProvider_yaml 대시보드 제공자 구성에 대한 자세한 내용은 Grafana 설명서를 참조하십시오. YAML 파일 provider.yaml
grafana.pvc.annotations 영구 볼륨 할당에 사용할 스토리지 클래스. 기본값은 null이고 기본 프로비저너가 사용됩니다. 문자열 null
grafana.pvc.storageClassName 영구 볼륨 할당에 사용할 스토리지 클래스. 기본값은 null이고 기본 프로비저너가 사용됩니다. 문자열 null
grafana.pvc.accessMode 영구 볼륨 할당에 대한 액세스 모드 정의. 지원되는 값: ReadWriteOnce, ReadOnlyMany, ReadWriteMany. 문자열 ReadWriteOnce
grafana.pvc.storage 영구 볼륨 할당에 대한 스토리지 크기 정의. 문자열 2Gi
grafana.secret.type Grafana 대시보드에 대해 정의된 암호 유형. 문자열 Opaque
grafana.secret.admin_user Grafana 대시보드에 액세스하기 위한 사용자 이름. 문자열 YWRtaW4=
grafana.secret.admin_password Grafana 대시보드에 액세스하기 위한 암호. 문자열 admin
ingress.enabled Grafana의 수신을 활성화/비활성화합니다. 부울 true
ingress.virtual_host_fqdn Grafana에 액세스하기 위한 호스트 이름. 문자열 grafana.system.tanzu
ingress.prefix Grafana의 경로 접두사. 문자열 /
ingress.servicePort 트래픽을 프록시로 전송하기 위한 Grafana 서비스 포트. 정수 80
ingress.tlsCertificate.tls.crt 자체 TLS 인증서를 사용하려는 경우 수신을 위한 선택적 인증서입니다. 기본적으로 자체 서명된 인증서가 생성되었습니다. 참고: tls.crt는 키이며 중첩되지 않았습니다. 문자열 Generated cert
ingress.tlsCertificate.tls.key 자체 TLS 인증서를 사용하려는 경우, 수신을 위한 선택적 인증서 개인 키. 참고: tls.key는 키이며 중첩되지 않았습니다. 문자열 Generated cert private key
ingress.tlsCertificate.ca.crt 선택적 CA 인증서. 참고: ca.crt는 키이며 중첩되지 않았습니다. 문자열 CA certificate

실행 중인 Grafana 배포 업데이트

배포 후 Grafana 패키지의 구성을 변경하려면 배포된 Grafana 패키지를 업데이트합니다.

  1. grafana-default-values.yaml 파일에서 Grafana 구성을 업데이트합니다.

  2. 설치된 패키지를 업데이트합니다.

    tanzu package installed update grafana \
    --version 7.5.7+vmware.1-tkg.1 \
    --values-file grafana-default-values.yaml \
    --namespace my-packages
    

    예상 출력:

    | 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'
    

Grafana 패키지가 새 값 또는 추가한 값을 사용하여 조정됩니다. kapp-controller가 변경 내용을 적용하는 데 최대 5분이 걸릴 수 있습니다.

업데이트에 대한 자세한 내용은 패키지 업데이트를 참조하십시오.

Grafana 배포 삭제

클러스터에서 Grafana 패키지를 제거하려면 다음을 실행합니다.

tanzu package installed delete grafana --namespace my-packages

삭제에 대한 자세한 내용은 패키지 삭제를 참조하십시오.

Grafana 대시보드 액세스

Grafana가 배포되면 Grafana 패키지는 grafana.system.tanzu의 FQDN(정규화된 도메인 이름)을 사용하여 Contour HTTPProxy 개체를 생성합니다.

이 FQDN을 사용하여 Grafana 대시보드에 액세스하려면 다음을 수행합니다.

  1. 로컬 /etc/hosts 파일에서 작업자 노드의 IP 주소를 이 FQDN으로 가리키는 항목을 생성합니다.

  2. https://grafana.system.tanzu로 이동합니다.

사이트는 자체 서명된 인증서를 사용하기 때문에 대시보드에 액세스하려면 먼저 브라우저별 보안 주의를 거쳐 이동해야 할 수 있습니다.

check-circle-line exclamation-circle-line close-line
Scroll to top icon