|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
|
这是尚未发布的文档。 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 和 模板项目 创建一个新的策略项目。
首先,安装 cargo-generate。这需要 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 容器注册表功能,您需要 启用改进的容器支持。 |
测试
您可以尝试:
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