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

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

ポリシーの作成

例として、Podの作成リクエストを処理するシンプルな検証ポリシーを作成します。

ポリシーはPodの`metadata.name`属性を確認し、無効な名前を持つPodを拒否します。 無効な名前のリストは、ポリシーのエンドユーザーによって構成可能であるべきです。

ポリシー設定は次のようになります。

invalid_names:
- bad_name1
- bad_name2

ポリシーは次のようなPodの作成を受け入れるべきです。

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
    - name: nginx
      image: nginx:latest

ポリシーは次のようなPodの作成を拒否するべきです。

apiVersion: v1
kind: Pod
metadata:
  name: bad_name1
spec:
  containers:
    - name: nginx
      image: nginx:latest

新しいポリシープロジェクトのスキャフォールディング

`cargo generate`とhttps://github.com/kubewarden/rust-policy-template[テンプレートプロジェクト]を使用して、新しいポリシープロジェクトを作成できます。

まず、`cargo-generate`をインストールします。これにはhttps://pkgs.org/download/openssl-devel[openssl-devel]が必要です。

cargo install cargo-generate

次に、プロジェクトを次のようにスキャフォールディングします。

cargo generate --git https://github.com/kubewarden/rust-policy-template \
               --branch main \
               --name demo

コマンドは次のような出力を生成します。

🔧   Creating project called `+demo+`...
✨   Done! New project created /<some-path-name>/demo

これにより、`demo`サブディレクトリに新しいポリシープロジェクトが作成されます。

デモでGitHubコンテナレジストリ機能を使用する予定がある場合は、https://docs.github.com/en/packages/working-with-a-github-packages-registry/enabling-improved-container-support-with-the-container-registry#enabling-the-container-registry-for-your-personal-account[改善されたコンテナサポートを有効にする]必要があります。

テスト

次のように試すことができます。

cargo test

これにより、生成されたスキャフォールディングがテストされます。すべてが正しく配置されていれば、次のような出力で終わる一連のコンパイルメッセージが表示されます。

running 4 tests
test settings::tests::validate_settings ... ok
test tests::accept_request_with_non_pod_resource ... ok
test tests::accept_pod_with_valid_name ... ok
test tests::reject_pod_with_invalid_name ... ok

test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s