2 min read | by Jordi Prats
OPA gatekeeper is most commonly used to block retain objects from getting into the Kubernetes cluster, but we can use it to warn the user as well
To do so we just need to set spec.enforcementAction to warn as follows:
apiVersion: constraints.gatekeeper.sh/v1beta1 kind: RestrictTolerations metadata: name: restrict-tolerations annotations: "helm.sh/hook": "post-install,post-upgrade" "helm.sh/hook-delete-policy": "before-hook-creation" "helm.sh/hook-weight": "1" spec: enforcementAction: warn match: kinds: - apiGroups: [""] kinds: ["Pod"] parameters: tolerations: - key: node-role.kubernetes.io/demo - key: node-role.kubernetes.io/another - key: node-role.kubernetes.io/yetanother
On the ENFORCEMENT-ACTION column we'll see this setting:
$ kubectl get RestrictTolerations NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS restrict-infra-master-tolerations warn 0
With this rule in place we'll get warnings when applying the object but it will get through anyway:
$ kubectl apply -f testPod.yaml Warning: [restrict-infra-master-tolerations] found restricted toleration(s) pod/pod-tolerations-test created
We can use this to warn the user about potentially problems with their manifests without affecting their ability of managing it's own manifests
Posted on 07/11/2022