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