
Conftestは、構造化された設定データに対するテストを書くのに役立ちます。Conftestを使うと、Kubernetes設定、Tektonパイプライン定義、Terraformコード、Serverless設定、その他のあらゆる設定ファイルに対するテストを書くことができます。
Conftestは、アサーションを記述するためにOpen Policy AgentのRego言語を使用します。Regoの詳細については、Open Policy AgentドキュメントのPolicy Languageセクションを参照してください。
以下は簡単な例です。次の内容を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チャンネルに参加してください。