|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
|
这是尚未发布的文档。 Admission Controller 1.34-dev. |
构建并运行 Gatekeeper 策略
您可以以与针对 Open Policy Agent 的 Rego 策略完全相同的方式构建并运行该策略。 您的项目结构为:
. ├── data │ ├── default-ns.json │ └── other-ns.json └── policy.rego 1 directory, 3 files
构建
通过运行 opa 命令构建策略:
$ opa build -t wasm -e policy/violation policy.rego
这将构建 Rego 策略,包含:
-
target:wasm。我们希望为wasm目标构建该策略。 -
entrypoint:policy/violation。入口点是violation软件包中的policy规则。 -
policy.rego: 构建并包含policy.rego文件。
之前的命令生成了一个 bundle.tar.gz 文件。
您可以从中提取 Wasm 模块:
$ tar -xf bundle.tar.gz /policy.wasm
项目树如下所示:
. ├── bundle.tar.gz ├── data │ ├── default-ns.json │ └── other-ns.json ├── policy.rego └── policy.wasm 1 directory, 5 files
您现在可以执行您的策略。
运行
使用 kwctl 按如下方式运行您的策略:
$ kwctl run -e gatekeeper --request-path data/other-ns.json policy.wasm | jq
{
"uid": "1299d386-525b-4032-98ae-1949f69f9cfc",
"allowed": true
}
这是您在名为 other 的名称空间中创建的资源,它已被接受,正如预期的那样。
现在您可以运行一个被策略拒绝的请求:
$ kwctl run -e gatekeeper --request-path data/default-ns.json policy.wasm | jq
{
"uid": "1299d386-525b-4032-98ae-1949f69f9cfc",
"allowed": false,
"status": {
"message": "it is forbidden to use the default namespace"
}
}
您可以看到您的 Gatekeeper 策略拒绝了这个资源。