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

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

ゲートキーパーのポリシーをビルドして実行する

ポリシーは、Open Policy Agentを対象としたRegoポリシーとまったく同じ方法でビルドして実行できます。 プロジェクトの構造は次のとおりです:

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

1 directory, 3 files

ビルド

ポリシーをビルドするには、`opa`コマンドを実行します:

$ opa build -t wasm -e policy/violation policy.rego

これにより、次の内容を持つRegoポリシーがビルドされます:

  • target: wasm.`wasm`ターゲット用のポリシーをビルドします。

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

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

前のコマンドは`bundle.tar.gz`ファイルを生成します。 そこからWasmモジュールを抽出できます:

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

プロジェクトツリーは次のようになります:

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

1 directory, 5 files

これでポリシーを実行できます。

実行

次のように`kwctl`を使用してポリシーを実行します:

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

これは`other`というネームスペースで作成されたあなたのリソースです。期待通りに受け入れられました。

これで、ポリシーによって拒否されるリクエストを実行できます。

$ kwctl run -e gatekeeper --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"
  }
}

ゲートキーパーのポリシーがこのリソースを拒否したことがわかります。