vSphere 7.x용 TKr로 프로비저닝된 TKG 클러스터에 Grafana를 설치하려면 다음 지침을 참조하십시오.

사전 요구 사항

vSphere 7.x용 TKr에 표준 패키지를 설치하기 위한 워크플로의 내용을 참조하십시오.

Grafana 설치

Grafana를 설치합니다.
  1. 저장소에서 사용 가능한 Grafana 버전을 나열합니다.
    kubectl get packages -n tkg-system | grep grafana
  2. Grafana 네임스페이스를 생성합니다.
    kubectl create ns tanzu-system-dashboards
  3. 네임스페이스에 대한 PSA 레이블을 생성합니다.
    kubectl label namespace tanzu-system-dashboards pod-security.kubernetes.io/enforce=privileged
  4. 또는 파일 ns-grafana-dashboard.yaml을 사용하여 Grafana 네임스페이스 및 레이블을 선언적으로 생성합니다.
    apiVersion: 
    v1kind: Namespace
    metadata:  
      name: grafana-dashboard
    ---
    apiVersion: v1
    kind: Namespace
    metadata:  
      name: tanzu-system-dashboards  
      labels:
        pod-security.kubernetes.io/enforce: privileged
  5. grafana-data-values.yaml을 생성합니다.

    Grafana 패키지 참조의 내용을 참조하십시오.

  6. grafana-data-values.yaml 파일을 입력으로 사용하여 암호를 생성합니다.
    kubectl create secret generic grafana-data-values --from-file=values.yaml=grafana-data-values.yaml -n tkg-system
    secret/grafana-data-values created
  7. 암호를 확인합니다.
    kubectl get secrets -A
    kubectl describe secret grafana-data-values -n tkg-system
  8. 필요한 경우 환경에 맞게 grafana-data-values를 사용자 지정합니다.

    Grafana 패키지 참조 항목을 참조하십시오.

    데이터 값을 업데이트하는 경우 다음 명령을 사용하여 암호를 업데이트합니다.
    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. grafana.yaml 규격을 생성합니다.

    vSphere 7.x용 TKr에 Grafana 설치의 내용을 참조하십시오.

  10. 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. Grafana 패키지 설치를 확인합니다.
    kubectl get pkgi -A | grep grafana
  12. Grafana 개체를 확인합니다.
    kubectl get all -n tanzu-system-dashboards

엔보이 LoadBalancer를 사용하여 Grafana 대시보드에 액세스

LoadBalancer 유형의 필수 Contour 엔보이 서비스가 배포되고 Grafana 구성 파일에서 이를 지정한 경우 로드 밸런서의 외부 IP 주소를 가져오고 Grafana FQDN에 대한 DNS 레코드를 생성합니다.
  1. LoadBalancer 유형의 엔보이 서비스에 대한 External-IP 주소를 가져옵니다.
    kubectl get service envoy -n tanzu-system-ingress
    반환된 External-IP 주소가 다음과 같이 표시됩니다.
    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
    또는 다음 명령을 사용하여 External-IP 주소를 가져올 수 있습니다.
    kubectl get svc envoy -n tanzu-system-ingress -o jsonpath='{.status.loadBalancer.ingress[0]}'
  2. Grafana 확장 설치를 확인하려면 로드 밸런서의 External-IP 주소에 매핑된 Grafana FQDN으로 로컬 /etc/hosts 파일을 업데이트합니다. 예를 들면 다음과 같습니다.
    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. https://grafana.system.tanzu로 이동하여 Grafana 대시보드에 액세스합니다.

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

  4. 운영 액세스를 위해 엔보이 서비스 로드 밸런서 External-IP 주소를 Grafana 대시보드에 매핑하는 DNS 서버에 두 개의 CNAME 레코드를 생성합니다.

엔보이 NodePort를 사용하여 Grafana 대시보드에 액세스

NodePort 유형의 필수 Contour 엔보이 서비스가 배포되고 Grafana 구성 파일에서 이를 지정한 경우 작업자 노드의 가상 시스템 IP 주소를 가져오고 Grafana FQDN에 대한 DNS 레코드를 생성합니다.
  1. 클러스터가 프로비저닝된 vSphere 네임스페이스로 컨텍스트를 전환합니다.
    kubectl config use-context VSPHERE-NAMESPACE
  2. 클러스터의 노드를 나열합니다.
    kubectl get virtualmachines
  3. 작업자 노드 중 하나를 선택하고 다음 명령을 사용하여 설명합니다.
    kubectl describe virtualmachines tkgs-cluster-X-workers-9twdr-59bc54dc97-kt4cm
  4. 가상 시스템의 IP 주소(예: Vm Ip: 10.115.22.43)를 찾습니다.
  5. Grafana 확장 설치를 확인하려면 작업자 노드 IP 주소에 매핑된 Grafana FQDN으로 로컬 /etc/hosts 파일을 업데이트합니다. 예를 들면 다음과 같습니다.
    127.0.0.1 localhost
    127.0.1.1 ubuntu
    # TKG Grafana with Envoy NodePort
    10.115.22.43 grafana.system.tanzu
    
  6. https://grafana.system.tanzu로 이동하여 Grafana 대시보드에 액세스합니다.

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

grafana-data-values.yaml

다음 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

다음 grafana.yaml 규격 예를 참조하십시오. 필요에 따라 패키지 버전을 업데이트합니다.
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