All Policies
Require unique host names in OpenShift routes
An Route host is a URL at which services may be made available externally. In most cases, these hosts should be unique across the cluster to ensure no routing conflicts occur. This policy checks an incoming Route resource to ensure its hosts are unique to the cluster.
Policy Definition
/openshift/unique-routes/unique-routes.yaml
1---
2apiVersion: kyverno.io/v1
3kind: ClusterPolicy
4metadata:
5 name: unique-routes
6 annotations:
7 policies.kyverno.io/title: Require unique host names in OpenShift routes
8 policies.kyverno.io/category: OpenShift
9 policies.kyverno.io/severity: high
10 kyverno.io/kyverno-version: 1.6.0
11 policies.kyverno.io/minversion: 1.6.0
12 kyverno.io/kubernetes-version: "1.20"
13 policies.kyverno.io/subject: Route
14 policies.kyverno.io/description: >-
15 An Route host is a URL at which services may be made available externally. In most cases,
16 these hosts should be unique across the cluster to ensure no routing conflicts occur.
17 This policy checks an incoming Route resource to ensure its hosts are unique to the cluster.
18spec:
19 validationFailureAction: Enforce
20 background: false
21 rules:
22 - name: require-unique-routes
23 match:
24 any:
25 - resources:
26 kinds:
27 - route.openshift.io/v1/Route
28 context:
29 - name: hosts
30 apiCall:
31 urlPath: "/apis/route.openshift.io/v1/Routes"
32 jmesPath: "items[].spec.host"
33 preconditions:
34 all:
35 - key: "{{ request.operation || 'BACKGROUND' }}"
36 operator: NotEquals
37 value: "DELETE"
38 validate:
39 message: >-
40 The Route host name must be unique.
41 deny:
42 conditions:
43 all:
44 - key: "{{ request.object.spec.host }}"
45 operator: AnyIn
46 value: "{{ hosts }}"