Kyverno概要
Kyvernoは、Kubernetesクラスターでのポリシーマネジメントをサポートするオープンソースのツールです。ポリシーを使って、リソースの作成や変更を制御し、セキュリティやコンプライアンスの要件を容易に適用できます。Kyvernoは。Kubernetesクラスターのセキュリティと一貫性の確保に役立ちます。
ポリシーは、Kubernetesクラスター内のリソース(例: Pod、Deployment、Serviceなど)の作成や変更時に適用されるルールのセットです。これにより、特定の条件や要件に基づいてリソースの動作や構成を制御することができます。
ポリシーは通常、YAML形式で定義されます。ポリシーの定義では、マッチング規則と実行するアクションを指定します。マッチング規則は、リソースの属性や条件を指定するもので、どのリソースにポリシーを適用するかを制御します。アクションは、ポリシーがマッチした場合に実行される処理です。
ポリシーは、Kubernetesクラスターのセキュリティ、コンプライアンス、リソースの管理など、さまざまな目的で活用されます。Kyvernoは、このポリシーベースのマネジメントを簡単かつ効果的に実現するためのツールです。
Kyverno Playground概要
KyvernoはKubernetesネイティブのポリシーエンジンであるため、KyvernoをKubernetes環境で使用することは非常に容易です。しかし、手元にKubernetes環境がない場合、Kyvernoのポリシーを手軽に試すことは難しいです。一般的には、Kyvernoのポリシーを開発するには、MiniKubeやK3Sなどの軽量なKubernetes環境を用意する必要があります。
Kyvernoのテストや新しいポリシーの開発に必要な労力を軽減するために、Kyverno開発チームはKyverno Playgroundを開発しました。Kyverno Playgroundは、KyvernoのWebベースかつ隔離されたテスト環境で、ポリシーの実行をサポートします。実際のKubernetesクラスタへの接続は必要ありませんが、オプションでサポートされています。
Kyverno Playgroundは、コンテナイメージまたはHelm Chartとして提供されていますが、パブリックオンラインバージョンもあります。以下はこのオンラインバージョンを利用してKyverno Playgroundの使い方を説明します。
Kyverno Playgroundの使い方
まずは、Kyverno Playgroundのパブリックオンラインバージョンをアクセスして、以下のような画面が表示されます。
![](https://i-study.jp/blog/wp-content/uploads/sites/2/2023/07/01-1024x802.png)
Figure 1. Kyverno Playground
次は画面にある主なボタンやコンポーネンを紹介します。
① | ONBOARDING ボタン当該ボタンクリックすると、Kyverno Playgroundの使い方が紹介されます。 |
② | ポリシーエディタ 試す対象となるポリシーのエディタです。 |
③ | リソースエディタ ポリシーの適用対象となるKubernetesリソースのエディタです。 |
④ | START ボタン当該ボタンクリックすると、ポリシーエディタのポリシーがリソースエディタのリソースに対して実行されます。 |
⑤ | サンプルポリシーライブラリ Kyvernoが提供しているサンプルポリシーのライブラリです。その中に試す対象となるポリシーを選択したら、その内容が<1>のポリシーエディタにロードされます。 |
⑥ | ADVANCED ボタン当該ボタンクリックすると、Kyvernoの各オプションを設定するメニューが表示されます。 |
最後に、デフォルトでロードされているポリシーとリソースを利用して、Kyverno Playgroundを軽く動かしてみます。
そのポリシーはPodに app.kubernetes.io/name
というキーを持つLabelが定義されているかをチェックし、そのようなLabelがなければ、エラーメッセージを表示します。
リソースエディタに表示されているリソースの内容から、nginx
という名前のPodには`app.kubernetes.io/name` というキーを持つLabelが定義されていないことを確認できます。START
ボタンを押下して、以下の図のように実行結果は fail
となり、エラーメッセージが表示されます。
![](https://i-study.jp/blog/wp-content/uploads/sites/2/2023/07/02-1024x802.png)
次はPodリソースに app.kubernetes.io/name=nginx
のLabelを追記してから再度実行します。今回はポリシーの実行結果が pass
になります。
![](https://i-study.jp/blog/wp-content/uploads/sites/2/2023/07/03-1024x810.png)