이 항목에서는 Grafana를 Tanzu Kubernetes Grid의 워크로드에 배포하는 방법을 설명합니다.
Grafana는 클러스터에서 Prometheus가 수집한 메트릭 데이터를 시각화하고 분석할 수 있는 오픈 소스 소프트웨어입니다. Tanzu Kubernetes Grid에는 워크로드 클러스터에 배포할 수 있는 Grafana 패키지가 포함되어 있습니다.
kubectl
.클러스터를 준비하려면 다음을 수행합니다.
Grafana를 배포할 워크로드 클러스터의 admin 자격 증명을 가져옵니다. 예:
tanzu cluster kubeconfig get my-cluster --admin
kubectl의 컨텍스트를 클러스터로 설정합니다. 예:
kubectl config use-context my-cluster-admin@my-cluster
Grafana에 수신 사용 기본적으로 Grafana는 수신을 사용하도록 설정되어 있습니다. 이 경우 다음 패키지를 설치해야 합니다.
워크로드 클러스터에 Grafana 배포로 계속 진행합니다.
Grafana를 배포하려면 아래 절차를 따르십시오.
아직 하지 않았다면 standard
패키지 저장소를 클러스터에 추가합니다.
tanzu package repository add tanzu-standard --url projects.registry.vmware.com/tkg/packages/standard/repo:v1.6.0 --namespace tkg-system
워크로드 클러스터에서 Grafana 패키지를 사용할 수 있는지 확인합니다.
tanzu package available list -A
사용 가능한 패키지의 버전을 검색합니다.
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
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 패키지 구성 매개 변수를 참조하십시오.
grafana-default-values.yaml
을 편집하고 secret.admin_password
를 Base64로 인코딩된 암호로 교체합니다. Base64로 인코딩된 암호를 생성하려면 다음을 실행합니다.
echo -n 'mypassword' | base64
https://www.base64encode.org/에서 Base64 인코딩 도구를 사용하여 암호를 인코딩할 수도 있습니다. 예를 들어 두 방법 중 하나를 사용하면 mypassword
가 암호화된 암호 bXlwYXNzd29yZA==
를 생성합니다.
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-CLASS
는 kubectl get storageclass
에서 반환된 클러스터의 스토리지 클래스 이름입니다.
(선택 사항) 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 패키지 구성 매개 변수를 참조하십시오.
grafana-default-values.yaml
파일을 변경하는 데 필요한 내용을 변경한 후에는 모든 주석을 제거합니다.
yq -i eval '... comments=""' grafana-default-values.yaml
패키지 배포:
클러스터에 대상 네임스페이스가 있는 경우 다음을 실행합니다.
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 패키지가 설치되어 있는지 확인합니다. 예:
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
명령을 실행할 때 지정한 네임스페이스에 설치됩니다.
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
는 패키지를 설치한 네임스페이스입니다.
클러스터에서 실행 중인 모든 포드를 표시하여 새 서비스가 실행되고 있는지 확인합니다.
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 패키지의 구성 매개 변수를 볼 수 있는 방법에는 두 가지가 있습니다.
패키지 스키마를 검색하려면 다음을 수행합니다.
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-default-values.yaml
파일에서 Grafana 구성을 업데이트합니다.
설치된 패키지를 업데이트합니다.
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 패키지를 제거하려면 다음을 실행합니다.
tanzu package installed delete grafana --namespace my-packages
삭제에 대한 자세한 내용은 패키지 삭제를 참조하십시오.
Grafana가 배포되면 Grafana 패키지는 grafana.system.tanzu
의 FQDN(정규화된 도메인 이름)을 사용하여 Contour HTTPProxy 개체를 생성합니다.
이 FQDN을 사용하여 Grafana 대시보드에 액세스하려면 다음을 수행합니다.
로컬 /etc/hosts
파일에서 작업자 노드의 IP 주소를 이 FQDN으로 가리키는 항목을 생성합니다.
https://grafana.system.tanzu
로 이동합니다.
사이트는 자체 서명된 인증서를 사용하기 때문에 대시보드에 액세스하려면 먼저 브라우저별 보안 주의를 거쳐 이동해야 할 수 있습니다.