本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。

这是尚未发布的文档。 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