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

Envoy LoadBalancer を使用した Grafana ダッシュボードへのアクセス

LoadBalancer タイプの前提条件である Contour Envoy サービスがデプロイされていて、Grafana 構成ファイル内で指定されている場合は、ロード バランサの外部 IP アドレスを取得し、Grafana FQDN の DNS レコードを作成します。
  1. LoadBalancer タイプの Envoy サービスの 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. 本番環境にアクセスする場合は、DNS サーバで 2 つの CNAME レコードを作成し、Envoy サービス ロード バランサの External-IP アドレスを Grafana ダッシュボードにマッピングします。

Envoy NodePort を使用した Grafana ダッシュボードへのアクセス

NodePort タイプの前提条件である Contour Envoy サービスがデプロイされていて、Grafana 構成ファイル内で指定されている場合は、ワーカー ノードの仮想マシン IP アドレスを取得し、Grafana FQDN の DNS レコードを作成します。
  1. クラスタがプロビジョニングされている vSphere 名前空間 にコンテキストを切り替えます。
    kubectl config use-context VSPHERE-NAMESPACE
  2. クラスタ内のノードを一覧表示します。
    kubectl get virtualmachines
  3. ワーカー ノードの 1 つを選択し、次のコマンドを使用して記述します。
    kubectl describe virtualmachines tkgs-cluster-X-workers-9twdr-59bc54dc97-kt4cm
  4. Vm Ip: 10.115.22.43 などの仮想マシンの IP アドレスを見つけます。
  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