|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
|
这是尚未发布的文档。 Admission Controller 1.34-dev. |
构建并运行 Admission Controller 的 OPA 策略
在上一节中,您编写了您的 Rego 策略。 结构如下:
.
├── data
│ ├── default-ns.json
│ └── other-ns.json
├── policy.rego
└── request.rego
1 directory, 4 files
构建
要构建:
$ opa build -t wasm -e policy/main policy.rego request.rego
这将构建 Rego 策略,包含:
-
target:wasm。 您想为wasm目标构建策略。 -
entrypoint:policy/main。 入口点是main软件包中的policy规则。 -
policy.rego: 构建并包含policy.rego文件。 -
request.rego: 构建并包含request.rego文件。
构建完成后,opa build 生成了 bundle.tar.gz 文件。
您可以提取它:
$ tar -xf bundle.tar.gz /policy.wasm
现在树的结构如下:
.
├── bundle.tar.gz
├── data
│ ├── default-ns.json
│ └── other-ns.json
├── policy.rego
├── policy.wasm
└── request.rego
1 directory, 6 file
您的 policy.wasm 文件:
$ file policy.wasm
policy.wasm: WebAssembly (wasm) binary module version 0x1 (MVP)
现在您运行它。
运行
使用 kwctl 运行策略:
$ kwctl run -e opa --request-path data/other-ns.json policy.wasm | jq
{
"uid": "1299d386-525b-4032-98ae-1949f69f9cfc",
"allowed": true
}
此请求被策略接受,因为这是指向 other 名称空间的请求。
-
execution-mode:opa。 Rego 策略可以针对 Open Policy Agent 或 Gatekeeper。 您必须告诉kwctl您正在运行什么类型的策略。 -
request-path: 这是kwctl发送请求至策略进行评估的记录位置。
现在尝试评估在 default 名称空间内创建 pod 的请求:
$ kwctl run -e opa --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"
}
}
该策略拒绝了该请求,并向 API 服务器反馈原因,后者会将其返回给用户或 API 消费者。