This policy prevents the use of the default project in an Application.
apiVersion: kyverno.io/v1kind: ClusterPolicymetadata:name: application-prevent-default-projectannotations:policies.kyverno.io/title: Prevent Use of Default Project in CEL expressionspolicies.kyverno.io/category: Argo in CELpolicies.kyverno.io/severity: mediumkyverno.io/kyverno-version: 1.11.0policies.kyverno.io/minversion: 1.11.0kyverno.io/kubernetes-version: 1.26-1.27policies.kyverno.io/subject: Applicationpolicies.kyverno.io/description: This policy prevents the use of the default project in an Application.spec:validationFailureAction: Auditbackground: truerules:- name: default-projectmatch:any:- resources:kinds:- Applicationoperations:- CREATE- UPDATEvalidate:cel:expressions:- expression: object.spec.?project.orValue('') != 'default'message: The default project may not be used in an Application.
This policy ensures that the name of the ApplicationSet is the same value provided in the project.
This policy prevents updates to the project field after an Application is created.
An AppProject may optionally specify clusterResourceBlacklist which is a blacklisted group of cluster resources. This is often a good practice to ensure AppProjects do not allow more access than needed. This policy is a combination of two rules which enforce that all AppProjects specify clusterResourceBlacklist and that their group and kind have wildcards as values.