apiVersion: templates.gatekeeper.sh/v1beta1
kind: ConstraintTemplate
metadata:
  name: k8snoimagelatest
spec:
  crd:
    spec:
      names:
        kind: K8sNoImageLatest
  targets:
    - target: admission.k8s.gatekeeper.sh
      rego: |
        package k8snoimagelatest
        violation[{"msg": msg}] {
          container := input.review.object.spec.containers[_]
          endswith(container.image, ":latest")
          msg := sprintf("container <%v> uses latest tag", [container.name])
        }
