Files
manifests/deny-external-services/constraint-template.yml
T

46 lines
1.2 KiB
YAML

apiVersion: templates.gatekeeper.sh/v1
kind: ConstraintTemplate
metadata:
name: k8sdeniedservicetypes
spec:
crd:
spec:
names:
kind: K8sDeniedServiceTypes
validation:
openAPIV3Schema:
type: object
properties:
deniedTypes:
type: array
items:
type: string
targets:
- target: admission.k8s.gatekeeper.sh
rego: |
package d8.pod_security_standards.extended
violation[{"msg": msg}] {
service := input.review.object
service.kind == "Service"
denied := service.spec.type
denied == "NodePort"
msg := sprintf("Service type %v is not allowed.", [denied])
}
violation[{"msg": msg}] {
service := input.review.object
service.kind == "Service"
denied := service.spec.type
denied == "LoadBalancer"
msg := sprintf("Service type %v is not allowed.", [denied])
}
violation[{"msg": msg}] {
service := input.review.object
service.kind == "Service"
externalIPs := service.spec.externalIPs
count(externalIPs) > 0
msg := "Usage of externalIPs is not allowed."
}