TMCのポリシー違反の情報をTanzu Observabilityからモニターする

Tanzu Mission Control(TMC)の報告するポリシー違反情報はOpen Policy Agentの仕組みを使って、動作しています。そしてそれをTanzu Observability(TO)からモニターすることができます。

はじめに

このシリーズでも紹介したように、TMCのポリシー管理の裏の仕組みにOPAが使われていることを紹介させていただきました。

さて、今回はその中で取り上げるこのPolicy Insightsの機能です。

TMCのOpen Policy Agentを遊んでみる でも紹介しましたが、これはOpen Policy Agent(OPA)が報告している違反の値です。さて、TMCには今のところ特にアラート機能はないです。なので、このPolicy Insightsの情報は有用なのですが、モニターができていないです。アラートのモニターの機能といったら、Tanzu Observabilityです。OPAはデフォルトでメトリクスが定義されており、これをTOと連携する、といったことを今回やってみます。

前提

手順

1. KubernetesをTMCに登録する

これのやり方はHOLとかで共有されているので割愛

2. KubernetesでTMCのポリシーを有効にする

TMCのOpen Policy Agentを遊んでみる でやり方を説明しているので割愛

3. Tanzu Observabilityの設定をする

TMCがある場合、TOへの設定は簡単です。対象のクラスターを選択後、[Actions] > [Integrations] > [Tanzu Observability by Wavefront]を選択します。

TOのアカウント情報などをいれて実行してしばらくまちます。そうするとTO側で自然に以下のように表示されるようになります。

4. OPAディスカバリー用ファイルを作成する

TMCからTOを設定した場合、デフォルトでRuntime Configという機能が有効になっています。

https://github.com/wavefrontHQ/wavefront-collector-for-kubernetes/blob/master/docs/discovery.md#runtime-configurations

この場合、ConfigMap経由で追加でスクレイプしたい対象を定義できます。以下のようなファイルを用意します。これは、opaに関連したpodを見つけ出し、8888ポートをスクレイプします。

 1apiVersion: v1
 2kind: ConfigMap
 3metadata:
 4  name: opa-collector
 5  namespace: tanzu-observability-saas
 6  annotations:
 7    # This annotation is required for runtime configurations
 8    wavefront.com/discovery-config: 'true'
 9data:
10  collector.yaml: |
11    # specify a list of discovery rules (plugins)
12    plugins:
13    # memcached
14    - name: opa
15      type: prometheus
16      selectors:
17        labels:
18          gatekeeper.sh/system:
19          - yes
20      port: 8888

5. 適用する

そしてあとは、kubectlを適用するぐらいです。

1kubectl apply -f <4.のファイル>

以上です。

みてみる

TOの画面にログインします。そして[Browse] > [Metrics]から以下のパスを選びます。 そして"gatekeeper.violations.gauge"をみます。すると以下のような感じで見えてきます。

この際、enforcement_action: denyの値がついているものがポリシー違反のものです。この値はTMCが報告している値を一致します(はず)。ここまでくればあとはTOの世界です。アラートを定義することでポリシー違反に対して通知などを設定できます。

まとめ

TMCのポリシー違反はOPAでできているので、簡単にTOに連携できます。