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と連携する、といったことを今回やってみます。
前提
- Kubernetesをもっている
- TMCのアカウントをもっている(ないならHOLをつかう)
- TOのアカウントをもっている(ないならFree Trialに申し込む)
手順
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という機能が有効になっています。
この場合、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に連携できます。