Listing 1: Ressourcen mit verbotenem Namen unterbinden apiVersion: templates.gatekeeper.sh/v1beta1 kind: ConstraintTemplate metadata: name: k8sdenyname spec: crd: spec: names: kind: K8sDenyName validation: # Schema for the `parameters` field openAPIV3Schema: properties: invalidName: type: string targets: - target: admission.k8s.gatekeeper.sh rego: | package k8sdenynames violation[{"msg": msg}] { input.review.object.metadata.name == input.parameters.invalidName msg := sprintf("The name %v is not allowed", [input.parameters.inva lidName]) } Listing 2: CRD mittels Policy anwenden apiVersion: constraints.gatekeeper.sh/v1beta1 kind: K8sDenyName metadata: name: no-policy-violation spec: parameters: invalidName: "policy-violation Listing 3: Beispielmanifest für Multi-Cluster-Service apiVersion: networking.gke.io/v1 kind: MultiClusterService metadata: name: foo namespace: blue spec: template: spec: selector: app: foo ports: - name: web protocol: TCP port: 80 targetPort: 80 Listing 4: Beispielmanifest für Ingress mit Traffic-Weiterleitung apiVersion: networking.gke.io/v1 kind: MultiClusterIngress metadata: name: foobar-ingress namespace: blue spec: template: spec: backend: serviceName: default-backend servicePort: 80 rules: - host: foo.example.com backend: serviceName: foo servicePort: 80 - host: bar.example.com backend: serviceName: bar servicePort: 80