All Policies

Application Field Validation

This policy performs some best practices validation on Application fields. Path or chart must be specified but never both. And destination.name or destination.server must be specified but never both.

Policy Definition

/argo/application-field-validation/application-field-validation.yaml

 1apiVersion: kyverno.io/v1
 2kind: ClusterPolicy
 3metadata:
 4  name: application-field-validation
 5  annotations:
 6    policies.kyverno.io/title: Application Field Validation
 7    policies.kyverno.io/category: Argo
 8    policies.kyverno.io/severity: medium
 9    policies.kyverno.io/subject: Application
10    kyverno.io/kyverno-version: 1.6.0
11    policies.kyverno.io/minversion: 1.6.0
12    kyverno.io/kubernetes-version: "1.23"
13    policies.kyverno.io/description: >-
14      This policy performs some best practices validation on Application fields.
15      Path or chart must be specified but never both. And destination.name or
16      destination.server must be specified but never both.
17spec:
18  validationFailureAction: Audit
19  background: true
20  rules:
21    - name: source-path-chart
22      match:
23        any:
24        - resources:
25            kinds:
26            - Application
27      validate:
28        message: >-
29          `spec.source.path` OR `spec.source.chart` should be specified but never both.
30        anyPattern:
31        - spec:
32            source:
33              path: '?*'
34              X(chart):
35        - spec:
36            source:
37              X(path):
38              chart: '?*'
39    - name: destination-server-name
40      match:
41        any:
42        - resources:
43            kinds:
44            - Application
45      validate:
46        message: >-
47          `spec.destination.server` OR `spec.destination.name` should be specified but never both.
48        anyPattern:
49        - spec:
50            destination:
51              server: '?*'
52              X(name):
53        - spec:
54            destination:
55              X(server):
56              name: '?*'