|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
|
这是尚未发布的文档。 Admission Controller 1.34-dev. |
针对策略作者的测试
SUSE Security Admission Controller策略是编译为WebAssembly(Wasm)的常规程序。 与任何类型的程序一样,良好的测试覆盖率是重要的。
策略作者可以使用他们喜欢的开发环境。 您可以使用熟悉的工具和测试框架来验证开发。
他们有使用标准测试的测试套件来支持他们的开发环境。
这些策略使用GitHub Actions作为他们的CI管道。
端到端测试
您还可以编写针对包含您的策略的Wasm二进制文件执行的测试。 要在不部署Kubernetes集群的情况下做到这一点,您可以使用以下工具:
要使用`kwctl run`,您需要以下内容:
-
要运行的策略的Wasm二进制文件引用。 Admission Controller策略可以从以下位置加载:
-
本地文件系统(
file://) -
HTTP(s)服务器(
https:// -
OCI注册表(
registry://).
-
-
要测试的准入请求对象。 您可以通过`--request-path`参数提供它,或者通过将`--request-path`设置为`-`在`stdin`上提供它。
-
通过`--settings-json`标志以内联JSON的形式设置运行时策略。 或者是一个JSON或YAML文件,通过`--settings-path`从文件系统加载。
在测试`kwctl`之后,将`ValidationResponse`对象打印到标准输出。
这就是您如何使用`kwctl`来测试之前提到的https://github.com/kubewarden/ingress-policy[ingress-policy]的Wasm二进制文件:
$ curl https://raw.githubusercontent.com/kubewarden/ingress-policy/v0.1.8/test_data/ingress-wildcard.json 2> /dev/null | \
kwctl run \
--settings-json '{"allowPorts": [80], "denyPorts": [3000]}' \
--request-path - \
registry://ghcr.io/kubewarden/policies/ingress:v0.1.8 | jq
您可以下载`kwctl`的预构建二进制文件 在这里。
使用`bats`,您可以编写一个测试来运行此命令并查找预期的输出:
一个bats测试
@test "all is good" {
run kwctl run \
--request-path test_data/ingress-wildcard.json \
--settings-json '{"allowPorts": [80], "denyPorts": [3000]}' \
ingress-policy.wasm
# this prints the output when one the checks below fails
echo "output = ${output}"
# settings validation passed
[[ "$output" == *"valid: true"* ]]
# request accepted
[[ "$output" == *"allowed: true"* ]]
}
您可以将代码放在一个文件中,例如`e2e.bats`,然后通过以下方式调用`bats`:
$ bats e2e.bats
✓ all is good
1 tests, 0 failures
This文档的这一部分包含有关编写端到端测试您的策略的更多信息。