Conftest 帮助您针对结构化配置数据编写测试。使用 Conftest,您可以为 Kubernetes 配置、Tekton 流水线定义、Terraform 代码、Serverless 配置或任何其他配置文件编写测试。
Conftest 使用 Open Policy Agent 的 Rego 语言来编写断言。您可以在 Open Policy Agent 文档的 Policy Language 部分了解更多关于 Rego 的信息。
以下是一个快速示例。将以下内容保存为 policy/deployment.rego:
package main
deny contains msg if {
input.kind == "Deployment"
not input.spec.template.spec.securityContext.runAsNonRoot
msg := "Containers must not run as root"
}
deny contains msg if {
input.kind == "Deployment"
not input.spec.selector.matchLabels.app
msg := "Containers must provide app label for pod selectors"
}
假设您在 deployment.yaml 中有一个 Kubernetes 部署,您可以像这样运行 Conftest:
$ conftest test deployment.yaml
FAIL - deployment.yaml - Containers must not run as root
FAIL - deployment.yaml - Containers must provide app label for pod selectors
2 tests, 0 passed, 0 warnings, 2 failures, 0 exceptions
Conftest 并不专属于 Kubernetes。它可以轻松地让您为各种格式的配置文件编写测试。请参阅文档了解安装说明以及有关功能的更多详细信息。
如需讨论和提问,请在 Open Policy Agent Slack 的 #opa-conftest 频道加入我们。