|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
|
这是尚未发布的文档。 Admission Controller 1.36-dev. |
创建新的验证策略
本教程涵盖创建一个验证 Pod 对象主机名的策略。
该策略会拒绝所有使用一个或多个拒绝列表中主机名的 Pod 对象。 您通过运行时设置提供策略配置。
总结一下,策略设置应如下所示:
denied_hostnames:
- bad-host
- forbidden-host
该策略拒绝创建此 Pod:
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
hostname: bad-host
containers:
- name: nginx
image: nginx:latest
但是,它接受创建这个 Pod:
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
hostname: allowed-host
containers:
- name: nginx
image: nginx:latest
搭建一个新的策略项目
您可以使用 模板储存库 创建一个新的策略项目。选择页面顶部附近的 "使用此模板" 绿色按钮,并按照 GitHub 的向导进行操作。
在本地克隆该储存库,并更新 package.json 文件以反映您的策略细节:
{
"name": "your-policy-name",
"version": "1.0.0",
"description": "Your policy description",
"repository": {
"type": "git",
"url": "https://github.com/your-username/your-policy-name"
}
}
确保使用与您实际的 GitHub 储存库匹配的储存库路径。
测试
在必要的工具到位的情况下,make all 命令构建 annotated-policy.wasm 目标。命令 make e2e 使用 bats 和 kwctl 运行测试。
来自
make 命令的输出make all
npx webpack --config webpack.config.cjs
asset bundled.js 5.52 KiB [compared for emit] [minimized] (name: main)
asset types.d.ts 430 bytes [compared for emit]
asset index.d.ts 11 bytes [compared for emit]
./src/index.ts 3.84 KiB [built] [code generated]
./node_modules/kubewarden-policy-sdk/dist/bundle.js 3.85 KiB [built] [code generated]
webpack 5.101.3 compiled successfully in 2280 ms
npm install
up to date, audited 400 packages in 2s
58 packages are looking for funding
run `+npm fund+` for details
found 0 vulnerabilities
make e2e
npx webpack --config webpack.config.cjs
asset bundled.js 5.52 KiB [compared for emit] [minimized] (name: main)
asset types.d.ts 430 bytes [compared for emit]
asset index.d.ts 11 bytes [compared for emit]
./src/index.ts 3.84 KiB [built] [code generated]
./node_modules/kubewarden-policy-sdk/dist/bundle.js 3.85 KiB [built] [code generated]
webpack 5.101.3 compiled successfully in 1909 ms
bats e2e.bats
e2e.bats
✓ reject because hostname is on the deny list
✓ accept because hostname is not on the deny list
✓ accept because the deny list is empty
✓ accept because pod has no hostname set
✓ accept non-pod resources
5 tests, 0 failures