Skip to content

Commit

Permalink
Add ValidatingAdmissionPolicy
Browse files Browse the repository at this point in the history
To enforce package uniqueness across `ClusterExtension`

Signed-off-by: Mikalai Radchuk <mradchuk@redhat.com>
  • Loading branch information
m1kola committed Apr 23, 2024
1 parent 0c41e3e commit 73cc159
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 0 deletions.
37 changes: 37 additions & 0 deletions config/admission/admission.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
apiVersion: admissionregistration.k8s.io/v1beta1
kind: ValidatingAdmissionPolicy
metadata:
name: "clusterextensions-package-uniqueness.olm.operatorframework.io"
spec:
failurePolicy: Fail
paramKind:
apiVersion: olm.operatorframework.io/v1alpha1
kind: ClusterExtension
matchConstraints:
resourceRules:
- apiGroups: ["olm.operatorframework.io"]
apiVersions: ["v1alpha1"]
operations: ["CREATE", "UPDATE"]
resources: ["clusterextensions"]
matchConditions:
# only apply the policy when the request operation is CREATE, or when on an UPDATE
# the package is being changed
- name: 'only-create-or-package-change'
expression: request.operation == 'CREATE' || oldObject.spec.packageName != object.spec.packageName
validations:
- expression: object.spec.packageName != params.spec.packageName
messageExpression: "'Package \"' + string(object.spec.packageName) + '\" is already installed via ClusterExtension \"' + string(params.metadata.name) + '\"'"
reason: Invalid

---

apiVersion: admissionregistration.k8s.io/v1beta1
kind: ValidatingAdmissionPolicyBinding
metadata:
name: "clusterextensions-package-uniqueness-binding.olm.operatorframework.io"
spec:
policyName: "clusterextensions-package-uniqueness.olm.operatorframework.io"
validationActions: [Deny]
paramRef:
parameterNotFoundAction: Allow
selector: {}
2 changes: 2 additions & 0 deletions config/admission/kustomization.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
resources:
- admission.yaml
1 change: 1 addition & 0 deletions config/default/kustomization.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ namePrefix: operator-controller-

resources:
- ../crd
- ../admission
- ../rbac
- ../manager
# [WEBHOOK] To enable webhook, uncomment all the sections with [WEBHOOK] prefix including the one in
Expand Down

0 comments on commit 73cc159

Please sign in to comment.