k8s_version.rego 816 B

12345678910111213141516171819202122232425
  1. package node.k8s_version
  2. import future.keywords
  3. POLICY_ID := sprintf("k8s_version_%s", [input.metadata.name])
  4. POLICY_VERSION := "v0.0.1"
  5. POLICY_SEVERITY := "high"
  6. latest_stable_version := "1.21.0"
  7. POLICY_TITLE := sprintf("The Kubernetes version for node %s should be at least v%s", [input.metadata.name, latest_stable_version])
  8. POLICY_SUCCESS_MESSAGE := sprintf("Success: Kubernetes version is up-to-date", [])
  9. trimmedVersion := trim_left(input.status.nodeInfo.kubeletVersion, "v")
  10. # semver.compare returns -1 if latest_stable_version < trimmedVersion
  11. allow if semver.compare(latest_stable_version, trimmedVersion) <= 0
  12. FAILURE_MESSAGE contains msg if {
  13. not allow
  14. msg := sprintf("Failed: latest stable version is %s, but node %s is on %s", [latest_stable_version, input.metadata.name, trimmedVersion])
  15. }