built-in-references/Kubernetes/pod-enforce-labels/template.yaml (30 lines of code) (raw):

apiVersion: templates.gatekeeper.sh/v1beta1 kind: ConstraintTemplate metadata: name: k8sazurepodenforcelabels spec: crd: spec: names: kind: K8sAzurePodEnforceLabels listKind: K8sAzurePodEnforceLabelsList plural: k8sazurepodenforcelabels singular: k8sazurepodenforcelabels validation: # Schema for the `parameters` field openAPIV3Schema: properties: labels: type: array items: type: string targets: - target: admission.k8s.gatekeeper.sh rego: | package k8sazurepodenforcelabels violation[{"msg": msg, "details": {"missing_labels": missing}}] { required := {label | label := input.parameters.labels[_]} provided := {label | input.review.object.metadata.labels[label]} missing := required - provided count(missing) > 0 msg := sprintf("you must provide labels: %v", [missing]) }