この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。

これは未公開の文書です Admission Controller 1.34-dev.

メトリクス クイックスタート

このセクションでは、ポリシーサーバーでメトリクス報告を有効にする方法を文書化しています。

続行する前に、この本の前のOpenTelemetryセクションを完了したことを確認してください。このセクションが正しく機能するために必要です。

ポリシーサーバーによって公開されたメトリクスを収集するためにhttps://prometheus.io/[Prometheus]を使用します。

Prometheusをインストールします。

Prometheusオペレーターを使用し、Prometheusのターゲットを定義します。

Prometheusをインストールして設定する方法はたくさんあります。展開の容易さのために、PrometheusコミュニティのHelmチャートを使用するべきです。

このHelmチャートでデプロイされたPrometheusオペレーターは、どのサービスをPrometheusが監視するかを定義するためにhttps://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/design.md#servicemonitor[サービスモニター]を使用します。

あなたの場合、`kubewarden`ネームスペースをターゲットにし、ラベル`app=kubewarden-policy-server-default`と`app.kubernetes.io/name: kubewarden-controller`に一致するサービスのためにServiceMonitorを追加しています。これにより、Prometheusオペレーターは、これらの条件に一致するサービスに属するKubernetesエンドポイントを検査するように構成されます。

デフォルトのPrometheusインスタンスがHelmチャートによってインストールされるために、`kubewarden-controller`と`kubewarden-policy-server`という2つのServiceMonitorを作成できます。

そのためには、次の値ファイルを作成するべきです:

cat <<EOF > kube-prometheus-stack-values.yaml
prometheus:
  additionalServiceMonitors:
    - name: kubewarden
      selector:
        matchLabels:
          app: kubewarden-policy-server-default
      namespaceSelector:
        matchNames:
          - kubewarden
      endpoints:
        - port: metrics
          interval: 10s
    - name: kubewarden-controller
      selector:
        matchLabels:
          app.kubernetes.io/name: kubewarden-controller
      namespaceSelector:
        matchNames:
          - kubewarden
      endpoints:
        - port: metrics
          interval: 10s
EOF

PrometheusスタックHelmチャートをインストールするべきです:

執筆時点(2023-11-17)での最新のチャートバージョンは`51.5.3`です。

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts

helm install --wait --create-namespace \
  --namespace prometheus \
  --version 51.5.3 \
  --values kube-prometheus-stack-values.yaml \
  prometheus prometheus-community/kube-prometheus-stack

Admission Controllerをインストールします

これで、Helmチャートを使用してAdmission Controllerを推奨される方法でインストールできます。

`cert-manager`はOpenTelemetryの要件ですが、すでにこのドキュメントの前のセクションでインストールしています。

まず、Admission Controllerを含むHelmリポジトリを追加する必要があります。

helm repo add kubewarden https://charts.kubewarden.io

次に、Admission Controllerによって定義されたカスタムリソース定義(CRD)をインストールします。

helm install --wait \
  --namespace kubewarden --create-namespace \
  kubewarden-crds kubewarden/kubewarden-crds

これで、Admission Controllerスタックの残りをデプロイできます。公式のHelmチャートは、`default`という名前のPolicyServerを作成します。

Helmチャートを構成して、Admission Controllerでメトリクスが有効になるようにする必要があります。`kubewarden-values.yaml`ファイルには次の内容が含まれている必要があります:

telemetry:
  mode: sidecar
  metrics: True
  sidecar:
    metrics:
      port: 8080

今、Helmチャートをインストールします:

helm install --wait \
  --namespace kubewarden \
  --create-namespace \
  --values kubewarden-values.yaml \
  kubewarden-controller kubewarden/kubewarden-controller

helm install --wait \
  --namespace kubewarden \
  --create-namespace \
  kubewarden-defaults kubewarden/kubewarden-defaults \
  --set recommendedPolicies.enabled=True \
  --set recommendedPolicies.defaultPolicyMode=monitor

これにより、`default`の`PolicyServer`インスタンスが作成されます:

kubectl get policyservers.policies.kubewarden.io
NAME      AGE
default   3m7s

デフォルトでは、このポリシーサーバーにはメトリクスが有効になっていません。

Prometheusへのアクセス

Prometheusは、Kubernetesクラスター内のさまざまなコンポーネントによって公開されたメトリクスを検査するために使用できるUIを提供します。

Prometheusポートを転送してアクセスできるようにします。

kubectl port-forward -n prometheus --address 0.0.0.0 svc/prometheus-operated 9090

今、ポート`9090`でPrometheusにアクセスし、例えば次のようなクエリを実行できます:kubewarden_policy_evaluations_total。ポリシーを通過するリクエストが増えるにつれて、評価の数が時間とともに増加するのがわかります。

Grafanaへのアクセス

Grafanaサービスを転送してアクセスできるようにします。

kubectl port-forward -n prometheus --address 0.0.0.0 svc/prometheus-grafana 8080:80

デフォルトのユーザー名`admin`とパスワード`prom-operator`でログインできます。

Admission Controller Grafanaダッシュボードの使用

Admission Controllerには、クラスター内でのAdmission Controllerの動作についての概要を示す基本的なメトリクスを持つGrafanaダッシュボードがあります。このダッシュボードは、Admission ControllerポリシーサーバーリポジトリのGitHubリリースで、https://github.com/kubewarden/policy-server/releases/latest/download/kubewarden-dashboard.json[JSONファイル]として、またはhttps://grafana.com/grafana/dashboards/15314[Grafanaウェブサイト]で利用可能です。

ダッシュボードを環境にインポートするには、GrafanaウェブサイトまたはリポジトリからJSONファイルをダウンロードできます。

curl https://github.com/kubewarden/policy-server/releases/latest/download/kubewarden-dashboard.json

ファイルを取得したら、Grafanaダッシュボードにアクセスし、https://grafana.com/docs/grafana/latest/dashboards/export-import/#import-dashboard[インポートします]。Grafanaダッシュボードの`/dashboard/import`を訪れ、次の手順に従ってください:

  1. JSONファイルの内容をGrafana UIの`Import via panel json`ボックスにコピーして貼り付けます。

  2. `Load`ボタンをクリックします。

  3. ソースとして`Prometheus`を選択します。

  4. `Import`ボタンをクリックします。

別のオプションは、grafana.comウェブサイトから直接インポートすることです。これについて:

  1. ダッシュボードページからダッシュボードIDをコピーします、

  2. それを`Import via grafana.com`フィールドに貼り付けます。

  3. `load`ボタンをクリックします。

  4. ダッシュボードをインポートした後、使用するPrometheusデータソースを定義し、インポートプロセスを完了します。

Grafanaダッシュボードには、Admission Controllerによって管理されているすべてのポリシーの状態を示すパネルがあります。また、ポリシー特有のパネルもあります。

特定のポリシーの詳細なメトリクスを取得するには、`policy_name`変数の値を必要なポリシーの名前に合わせて変更します。

このようなダッシュボードが表示されるはずです:

ダッシュボード