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

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

Admission ControllerのためにOPAポリシーを構築して実行します。

前のセクションでは、Regoポリシーを作成しました。 構造は次のようになります:

.
├── data
│   ├── default-ns.json
│   └── other-ns.json
├── policy.rego
└── request.rego

1 directory, 4 files

ビルド

構築するには:

$ opa build -t wasm -e policy/main policy.rego request.rego

これにより、次の内容でregoポリシーが構築されます:

  • target: wasm. `wasm`ターゲット用のポリシーを構築したいです。

  • entrypoint: policy/main. エントリーポイントは、`policy`パッケージ内の`main`ルールです。

  • policy.rego: `policy.rego`ファイルを構築して含めます。

  • request.rego: `request.rego`ファイルを構築して含めます。

ビルドが完了すると、`opa build`が`bundle.tar.gz`ファイルを生成します。 それを抽出できます:

$ tar -xf bundle.tar.gz /policy.wasm

現在、ツリーは次のようになります:

.
├── bundle.tar.gz
├── data
│   ├── default-ns.json
│   └── other-ns.json
├── policy.rego
├── policy.wasm
└── request.rego

1 directory, 6 file

あなたの`policy.wasm`ファイルがあります:

$ file policy.wasm
policy.wasm: WebAssembly (wasm) binary module version 0x1 (MVP)

今、それを実行します。

実行

ポリシーを実行するには`kwctl`を使用します:

$ kwctl run -e opa --request-path data/other-ns.json policy.wasm | jq
{
  "uid": "1299d386-525b-4032-98ae-1949f69f9cfc",
  "allowed": true
}

このリクエストはポリシーによって受け入れられます。これは`other`ネームスペースを指すリクエストだからです。

  • execution-mode: opa. RegoポリシーはOpen Policy AgentまたはGatekeeperをターゲットにできます。 `kwctl`にどのようなポリシーを実行しているかを伝えなければなりません。

  • request-path: `kwctl`が評価のためにポリシーを送る先として記録されたリクエストの場所。

`default`ネームスペース内にポッドを作成するリクエストを評価してみてください:

$ kwctl run -e opa --request-path data/default-ns.json policy.wasm | jq
{
  "uid": "1299d386-525b-4032-98ae-1949f69f9cfc",
  "allowed": false,
  "status": {
    "message": "it is forbidden to use the default namespace"
  }
}

ポリシーはリクエストを拒否し、その理由をAPIサーバーを通じてユーザーまたはAPI消費者に返します。