このトピックでは、Grafana 用 TKG 拡張機能 v1.3.1 をデプロイおよび管理する方法について説明します。Grafana を使用すると、保存納場所に関係なく、メトリックの照会、可視化、アラート、および確認を行うことができます。Grafana は、アプリケーション データからグラフを作成し、可視化するためのツールを提供します。Tanzu Kubernetes クラスタのメトリックを生成して表示するには、Grafana 用 TKG 拡張機能をデプロイします。
Grafana 拡張機能の前提条件
- クラスタをプロビジョニングします。TKGS v1alpha2 API を使用して Tanzu Kubernetes クラスタをプロビジョニングするためのワークフローを参照してください。
注: デフォルトの serviceDomain (
cluster.local
) を使用するクラスタをデプロイする必要があります。 - クラスタに接続します。vCenter Single Sign-On ユーザーとして Tanzu Kubernetes クラスタに接続を参照してください。
- kubectl コマンドを実行するクライアント ホストへのTKG 拡張機能 v1.3.1 バンドルのダウンロードを実行します。
- ターゲット クラスタへのTKG 拡張機能の前提条件のインストールを実行します。
Grafana 拡張機能の追加要件
Grafana 監視用 TKG 拡張機能 v1.3.1 には、インストール前およびインストール後の追加要件があります。
- Grafana の監視拡張機能にはデフォルトのパーシステント ストレージ クラスが必要です。デフォルトのパーシステント ストレージ クラスを使用してクラスタを作成するか、拡張機能をデプロイするときに Grafana 構成ファイルでクラスタを指定することができます。TKG 拡張機能のパーシステント ストレージの要件の確認を参照してください。
- Grafana 拡張機能がデプロイされたら、ClusterIP(デフォルト)、NodePort、または LoadBalancer のいずれかの Kubernetes サービス タイプによって公開される IP アドレスを使用して、HTTP/S 経由で Grafana ダッシュボードにアクセスします。クラスタの外部から Grafana ダッシュボードにアクセスするには、Grafana をデプロイする前に Contour 拡張機能をデプロイします。Contour 拡張機能をデプロイするには、Grafana Monitoring 用 TKG 拡張機能のデプロイと管理を参照してください。
Grafana は次の Kubernetes サービス タイプをサポートします。
サービス タイプ 説明 アクセス可能性 ClusterIP
クラスタ内の IP アドレスでサービスを公開します。 サービスには、クラスタ内からのみアクセスできます。 NodePort
静的ポートの各ノードの IP アドレスでサービスを公開します。 サービスには、クラスタの外部からアクセスできます。 LoadBalancer
ロード バランサを使用してサービスを外部で公開します。 サービスには、クラスタの外部からアクセスできます。 ClusterIP
がデフォルトですが、アクセスできるのはクラスタ内からのみです。スーパーバイザー クラスタ に対して NSX-T ネットワークを使用している場合は、LoadBalancer タイプの Contour Envoy サービスを作成します。スーパーバイザー クラスタ に対して vSphere Distributed Switch ネットワークを使用している場合は、要件に応じて LoadBalancer タイプまたは NodePort タイプの Contour Envoy サービスを作成します。
可視化と分析のための Grafana 拡張機能のデプロイ
コンテナ | リソースの種類 | レプリカ | 説明 |
---|---|---|---|
Grafana | デプロイ | 2 | データの可視化 |
- Grafana 拡張機能のすべての前提条件を満たしていることを確認します。Grafana 拡張機能の前提条件を参照してください。
- Grafana 拡張機能のディレクトリに移動します。
cd /tkg-extensions-v1.3.1+vmware.1/extensions/monitoring/grafana
tanzu-system-monitoring
名前空間と、Grafana サービスのアカウントおよびロール オブジェクトを作成します。kubectl apply -f namespace-role.yaml
- Grafana データ値ファイルを作成します。
サンプル データ値ファイルには、最低限必要な構成が含まれています。
cp grafana-data-values.yaml.example grafana-data-values.yaml
grafana-data-values.yaml
を更新して Grafana 拡張機能を構成します。必要に応じて構成をカスタマイズします。Grafana 拡張機能の構成を参照してください。
admin_password
は base64 でエンコードする必要がありますが、base64 でエンコードされていない場合でも、拡張機能のデプロイはブロックされません。次の例では、パスワード「admin」は base64 でエンコードされています。Grafana のパスワードを独自にエンコードするには、次のサイトにアクセスします:https://www.base64encode.org/。クラスタがデフォルトのストレージ クラスでプロビジョニングされていない場合は、データ値ファイル内で指定できます。また、名前空間にパーシステント ボリュームの要求を格納するのに必要なストレージが確保されている必要があります。monitoring: grafana: image: repository: "projects.registry.vmware.com/tkg/grafana" pvc: storage_class: vwt-storage-policy storage: "8Gi" secret: admin_password: "YWRtaW4=" grafana_init_container: image: repository: "projects.registry.vmware.com/tkg/grafana" grafana_sc_dashboard: image: repository: "projects.registry.vmware.com/tkg/grafana"
LoadBalancer タイプまたは NodePort タイプの Envoy サービスを使用して Contour をデプロイした場合は、これを次のように構成ファイルで指定します。詳細については Grafana 拡張機能の構成を参照してください。monitoring: grafana: service: type: LoadBalancer OR NodePort
デフォルトでは、Grafana 拡張機能は Grafana ダッシュボードにアクセスするための完全修飾ドメイン名 (FQDN)
grafana.system.tanzu
を作成します。この FQDN をカスタマイズするには、monitoring.grafana.ingress.virtual_host_fqdn
の構成ファイルで目的のホスト名を指定します。詳細についてはGrafana 拡張機能の構成を参照してください。grafana-data-values
ファイルを使用して Grafana シークレットを作成します。kubectl create secret generic grafana-data-values --from-file=values.yaml=grafana-data-values.yaml -n tanzu-system-monitoring
grafana-data-values
シークレットがtanzu-system-monitoring
名前空間に作成されている。kubectl get secrets -n tanzu-system-monitoring
を使用して確認します。- Grafana 拡張機能をデプロイします。
kubectl apply -f grafana-extension.yaml
成功すると、Grafana アプリケーションが作成されます:
app.kappctrl.k14s.io/grafana created
。 - Grafana アプリケーションのステータスを確認します。
kubectl get app grafana -n tanzu-system-monitoring
ステータスがReconciling
からReconcile succeeded
に変わります。ステータスがReconcile failed
の場合は、トラブルシューティングを参照してください。 - Grafana アプリケーションの詳細なステータスを確認します。
kubectl get app grafana -n tanzu-system-monitoring -o yaml
- Grafana のデプロイを確認します。
kubectl get deployments -n tanzu-system-monitoring
LoadBalancer タイプの Contour Envoy サービスを使用した Grafana ダッシュボードへのアクセス
- 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]}'
- 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
- https://grafana.system.tanzu に移動して、Grafana ダッシュボードにアクセスします。
サイトでは自己署名証明書が使用されるため、ダッシュボードにアクセスする前にブラウザ固有のセキュリティ警告を確認しなければならない場合があります。
- 本番環境にアクセスする場合は、DNS サーバで 2 つの CNAME レコードを作成し、Envoy サービス ロード バランサの
External-IP
アドレスを Grafana ダッシュボードにマッピングします。
NodePort タイプの Contour Envoy サービスを使用した Grafana ダッシュボードへのアクセス
- クラスタがプロビジョニングされている vSphere 名前空間 にコンテキストを切り替えます。
kubectl config use-context VSPHERE-NAMESPACE
- クラスタ内のノードを一覧表示します。
kubectl get virtualmachines
クラスタ ノードが次のように表示されます。NAME POWERSTATE AGE tkgs-cluster-X-control-plane-6dgln poweredOn 6h7m tkgs-cluster-X-control-plane-j6hq6 poweredOn 6h10m tkgs-cluster-X-control-plane-xc25f poweredOn 6h14m tkgs-cluster-X-workers-9twdr-59bc54dc97-kt4cm poweredOn 6h12m tkgs-cluster-X-workers-9twdr-59bc54dc97-pjptr poweredOn 6h12m tkgs-cluster-X-workers-9twdr-59bc54dc97-t45mn poweredOn 6h12m
- ワーカー ノードの 1 つを選択し、次のコマンドを使用して記述します。
kubectl describe virtualmachines tkgs-cluster-X-workers-9twdr-59bc54dc97-kt4cm
Vm Ip: 10.115.22.43
などの仮想マシンの IP アドレスを見つけます。- Grafana 拡張機能のインストールを確認するには、次の例のように、ワーカー ノードの IP アドレスにマッピングされる Grafana の FQDN を指定してローカルの
/etc/hosts
ファイルを更新します。127.0.0.1 localhost 127.0.1.1 ubuntu # TKGS Grafana with Envoy NodePort 10.115.22.43 grafana.system.tanzu
- https://grafana.system.tanzu に移動して、Grafana ダッシュボードにアクセスします。
サイトでは自己署名証明書が使用されるため、ダッシュボードにアクセスする前にブラウザ固有のセキュリティ警告を確認しなければならない場合があります。
Grafana のデプロイのトラブルシューティング
デプロイまたは調整が失敗した場合は、kubectl get pods -A
を実行してポッドのステータスを確認します。contour
および envoy
ポッドは、Running
である必要があります。ポッドのステータスが ImagePullBackOff
または ImageCrashLoopBackOff
の場合は、コンテナ イメージをプルできていません。データ値と拡張機能 YAML ファイルに記述されているリポジトリ URL を確認し、これらが正確であることを確認します。
name-XXXX
は、
kubectl get pods -A
を実行したときの一意のポッド名です。
kubectl logs pod/grafana-XXXX -c grafana -n tanzu-system-monitoring
Grafana 拡張機能の更新
Tanzu Kubernetes クラスタにデプロイされている Grafana 拡張機能を更新します。
grafana-data-values
シークレットから現在の Grafana データ値を取得します。kubectl get secret grafana-data-values -n tanzu-system-monitoring -o 'go-template={{ index .data "values.yaml" }}' | base64 -d > grafana-data-values.yaml
grafana-data-values.yaml
内の Grafana データ値を更新します。Grafana 拡張機能の構成を参照してください。- Grafana データ値のシークレットを更新します。
kubectl create secret generic grafana-data-values --from-file=values.yaml=grafana-data-values.yaml -n tanzu-system-monitoring -o yaml --dry-run | kubectl replace -f-
Grafana 拡張機能が更新されたデータ値で調整されます。注: デフォルトでは、kapp-controller によってアプリケーションが 5 分ごとに同期されます。更新は 5 分以内に有効になります。更新をすぐに有効にするには、grafana-extension.yaml
内のsyncPeriod
の値を小さくし、kubectl apply -f grafana-extension.yaml
を使用して Grafana 拡張機能を適用します。 - 拡張機能のステータスを確認します。
kubectl get app grafana -n tanzu-system-monitoring
Grafana が更新されると、ステータスが
Reconcile Succeeded
に変更されます。 - 詳細なステータスを表示し、必要に応じてトラブルシューティングを行います。
kubectl get app grafana -n tanzu-system-monitoring -o yaml
Grafana 拡張機能の削除
tanzu-system-monitoring
) にデプロイされます。両方の拡張機能を同じクラスタにデプロイしている場合は、名前空間を削除する前に各拡張機能を削除する必要があります。
- Grafana 拡張機能のディレクトリに移動します。
cd /tkg-extensions-v1.3.1+vmware.1/extensions/monitoring/grafana
- Grafana アプリケーションを削除します。
kubectl delete app grafana -n tanzu-system-monitoring
予期される結果:
app.kappctrl.k14s.io "grafana" deleted
。 - Grafana アプリケーションが削除されていることを確認します。
kubectl get app grafana -n tanzu-system-monintoring
予期される結果:
apps.kappctrl.k14s.io "grafana" not found
。 tanzu-system-monitoring
名前空間と、Grafana サービスのアカウントおよびロール オブジェクトを削除します。注意: Prometheus がデプロイされている場合は、この手順は実行しません。kubectl delete -f namespace-role.yaml
- Grafana を再デプロイする場合は、シークレット
grafana-data-values
を削除します。kubectl delete secret grafana-data-values -n tanzu-system-monitoring
予期される結果:
secret "grafana-data-values" deleted
。
Grafana 拡張機能のアップグレード
- Grafana の構成マップをエクスポートし、バックアップとして保存します。
kubectl get configmap grafana -n tanzu-system-monitoring -o 'go-template={{ index .data "grafana.yaml" }}' > grafana-configmap.yaml
- 既存の Grafana 拡張機能を削除します。Grafana 拡張機能の削除を参照してください。
- Grafana 拡張機能をデプロイします。可視化と分析のための Grafana 拡張機能のデプロイを参照してください。
Grafana 拡張機能の構成
/tkg-extensions-v1.3.1+vmware.1/extensions/monitoring/grafana/grafana-data-values.yaml
で設定されます。
パラメータ | 説明 | タイプ | デフォルト |
---|---|---|---|
monitoring.namespace | Prometheus がデプロイされる名前空間 | 文字列 | tanzu-system-monitoring |
monitoring.create_namespace | フラグは、monitoring.namespace で指定された名前空間を作成するかどうかを示します | boolean | false |
monitoring.grafana.cluster_role.apiGroups | grafana clusterrole に対して定義された api グループ | リスト | [""] |
monitoring.grafana.cluster_role.resources | grafana clusterrole に対して定義されたリソース | リスト | ["configmaps", "secrets"] |
monitoring.grafana.cluster_role.verbs | clusterrole に対して定義されたアクセス権限 | リスト | ["get", "watch", "list"] |
monitoring.grafana.config.grafana_ini | Grafana 構成ファイルの詳細 | 構成ファイル | grafana.ini このファイルでは、 |
monitoring.grafana.config.datasource.type | Grafana データソース タイプ | 文字列 | prometheus |
monitoring.grafana.config.datasource.access | アクセス モード。proxy または direct(ユーザー インターフェイスのサーバまたはブラウザ) | 文字列 | proxy |
monitoring.grafana.config.datasource.isDefault | デフォルトの Grafana データソースとしてマーク | boolean | true |
monitoring.grafana.config.provider_yaml | grafana ダッシュボード プロバイダを定義する構成ファイル | yaml ファイル | provider.yaml |
monitoring.grafana.service.type | Grafana を公開するサービスのタイプ。サポートされている値:ClusterIP、NodePort、LoadBalancer | 文字列 | vSphere: NodePort、aws/azure: LoadBalancer |
monitoring.grafana.pvc.storage_class | パーシステント ボリューム要求に対しアクセス モードを定義します。サポートされている値:ReadWriteOnce、ReadOnlyMany、ReadWriteMany | 文字列 | ReadWriteOnce |
monitoring.grafana.pvc.storage | パーシステント ボリューム要求に対しストレージ サイズを定義します | 文字列 | 2Gi |
monitoring.grafana.deployment.replicas | grafana レプリカの数 | 整数型 | 1 |
monitoring.grafana.image.repository | Grafana イメージを含むリポジトリの場所。デフォルトは、パブリック VMware レジストリです。プライベート リポジトリを使用している場合は(エアギャップ環境など)、この値を変更します。 | 文字列 | projects.registry.vmware.com/tkg/grafana |
monitoring.grafana.image.name | Grafana イメージの名前 | 文字列 | grafana |
monitoring.grafana.image.tag | Grafana イメージ タグ。バージョンをアップグレードしている場合は、この値の更新が必要になることがあります。 | 文字列 | v7.3.5_vmware.1 |
monitoring.grafana.image.pullPolicy | Grafana イメージ プル ポリシー | 文字列 | IfNotPresent |
monitoring.grafana.secret.type | Grafana ダッシュボードに定義されたシークレット タイプ | 文字列 | 不透明 |
monitoring.grafana.secret.admin_user | Grafana ダッシュボードにアクセスするユーザー名 | 文字列 | YWRtaW4= 値は base64 でエンコードされています。デコードには以下を実行します: |
monitoring.grafana.secret.admin_password | Grafana ダッシュボードにアクセスするパスワード | 文字列 | null |
monitoring.grafana.secret.ldap_toml | ldap 認証を使用している場合、ldap 構成ファイルのパス | 文字列 | "" |
monitoring.grafana_init_container.image.repository | grafana init コンテナ イメージを含むリポジトリ。デフォルトは、パブリック VMware レジストリです。プライベート リポジトリを使用している場合は(エアギャップ環境など)、この値を変更します。 | 文字列 | projects.registry.vmware.com/tkg/grafana |
monitoring.grafana_init_container.image.name | grafana init コンテナ イメージの名前 | 文字列 | k8s-sidecar |
monitoring.grafana_init_container.image.tag | grafana init コンテナ イメージ タグ。バージョンをアップグレードしている場合は、この値の更新が必要になることがあります。 | 文字列 | 0.1.99 |
monitoring.grafana_init_container.image.pullPolicy | grafana init コンテナ イメージ プル ポリシー | 文字列 | IfNotPresent |
monitoring.grafana_sc_dashboard.image.repository | Grafana ダッシュボード イメージを含むリポジトリ。デフォルトは、パブリック VMware レジストリです。プライベート リポジトリを使用している場合は(エアギャップ環境など)、この値を変更します。 | 文字列 | projects.registry.vmware.com/tkg/grafana |
monitoring.grafana_sc_dashboard.image.name | grafana ダッシュボード イメージの名前 | 文字列 | k8s-sidecar |
monitoring.grafana_sc_dashboard.image.tag | grafana ダッシュボード イメージ タグ。バージョンをアップグレードしている場合は、この値の更新が必要になることがあります。 | 文字列 | 0.1.99 |
monitoring.grafana_sc_dashboard.image.pullPolicy | grafana ダッシュボード イメージ プル ポリシー | 文字列 | IfNotPresent |
monitoring.grafana.ingress.enabled | Grafana に対し ingress を有効または無効にします | boolean | true |
monitoring.grafana.ingress.virtual_host_fqdn | grafana にアクセスするホスト名 | 文字列 | grafana.system.tanzu |
monitoring.grafana.ingress.prefix | grafana のパス プリフィックス | 文字列 | / |
monitoring.grafana.ingress.tlsCertificate.tls.crt | 独自の TLS 証明書を使用する場合は、ingress のオプション証明書。自己署名証明書はデフォルトで生成されます | 文字列 | Generated cert |
monitoring.grafana.ingress.tlsCertificate.tls.key | 独自の TLS 証明書を使用する場合は、ingress のオプション証明書プライベート キー。 | 文字列 | Generated cert key |