
Schreibe Tests gegen strukturierte Konfigurationsdaten mithilfe der Open Policy Agent Rego-Abfragesprache.
Conftest hilft dir, Tests gegen strukturierte Konfigurationsdaten zu schreiben. Mit Conftest kannst du Tests für deine Kubernetes-Konfiguration, Tekton-Pipeline-Definitionen, Terraform-Code, Serverless-Konfigurationen oder beliebige andere Konfigurationsdateien schreiben.
Conftest verwendet die Rego-Sprache von Open Policy Agent zum Schreiben der Assertions. Du kannst mehr über Rego im Abschnitt Policy Language in der Open-Policy-Agent-Dokumentation lesen.
Hier ist ein kurzes Beispiel. Speichere Folgendes als 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"
}
Angenommen, du hast ein Kubernetes-Deployment in deployment.yaml, kannst du Conftest wie folgt ausführen:
$ 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 ist nicht nur auf Kubernetes beschränkt. Du kannst damit ganz einfach Tests für beliebige Konfigurationsdateien in verschiedenen Formaten schreiben. Siehe die Dokumentation für Installationsanweisungen und weitere Details zu den Funktionen.
Für Diskussionen und Fragen tritt dem Open Policy Agent Slack
im Kanal #opa-conftest bei.