Skip to content

Commit 3ab5541

Browse files
committed
WIP: Add support for updating clusterRoles/Roles
Signed-off-by: Todd Short <[email protected]>
1 parent 9b0a39a commit 3ab5541

File tree

7 files changed

+59
-5
lines changed

7 files changed

+59
-5
lines changed

hack/tools/patch-base-for-helm.sh

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,20 @@
11
#!/bin/bash
22

3+
# This script patches the kubebuilder generated files to make them ready for helm
4+
# The patching is done via a combination of `yq` to add valid YAML to the appropriate location
5+
# and then `sed` is used to replace some text with Helm templating.
6+
# This can't be done in one step because `yq` (or `kustomize` for that matter) can't manipulate
7+
# YAML once helm templating has been added.
8+
39
# Patch catalogd rbac
410
catalogd_rbac_filelist=(
511
helm/olmv1/base/catalogd/rbac/experimental/*.yaml
612
helm/olmv1/base/catalogd/rbac/standard/*.yaml
713
)
814
for f in "${catalogd_rbac_filelist[@]}"; do
915
yq -i '.metadata.labels["app.kubernetes.io/name"] = "catalogd"' "${f}"
10-
rm -f "${f}.bak"
16+
yq -i 'with(.; select(.kind == "Role") | .rules += { "replaceMe": "catalogd-role-rules"})' "${f}"
17+
yq -i 'with(.; select(.kind == "ClusterRole") | .rules += { "replaceMe": "catalogd-cluster-role-rules"})' "${f}"
1118
done
1219

1320
# Patch operator-controller rbac
@@ -17,7 +24,8 @@ operator_controller_rbac_filelist=(
1724
)
1825
for f in "${operator_controller_rbac_filelist[@]}"; do
1926
yq -i '.metadata.labels["app.kubernetes.io/name"] = "operator-controller"' "${f}"
20-
rm -f "${f}.bak"
27+
yq -i 'with(.; select(.kind == "Role") | .rules += { "replaceMe": "operator-controller-role-rules"})' "${f}"
28+
yq -i 'with(.; select(.kind == "ClusterRole") | .rules += { "replaceMe": "operator-controller-cluster-role-rules"})' "${f}"
2129
done
2230

2331
# Patch catalogd webhook
@@ -35,10 +43,9 @@ for f in "${catalogd_webhook_filelist[@]}"; do
3543
yq -i '.webhooks[0].clientConfig.service.port = 9443' "${f}"
3644
yq -i '.webhooks[0].matchConditions[0].name = "MissingOrIncorrectMetadataNameLabel"' "${f}"
3745
yq -i '.webhooks[0].matchConditions[0].expression = "\"name\" in object.metadata && (!has(object.metadata.labels) || !(\"olm.operatorframework.io/metadata.name\" in object.metadata.labels) || object.metadata.labels[\"olm.operatorframework.io/metadata.name\"] != object.metadata.name)"' "${f}"
38-
rm -f "${f}.bak"
3946
done
4047

41-
# Patch everything genericly
48+
# Patch everything generically
4249
filelist=(
4350
helm/olmv1/base/catalogd/rbac/experimental/*.yaml
4451
helm/olmv1/base/catalogd/rbac/standard/*.yaml
@@ -56,10 +63,14 @@ for f in "${filelist[@]}"; do
5663
# Patch in the temporary items
5764
yq -i '.metadata.annotations.replaceMe = "annotations"' "${f}"
5865
yq -i '.metadata.labels.replaceMe = "labels"' "${f}"
59-
# Replace with helm template - must be done last or yq will complain about the file formXat
66+
# Replace with helm template - must be done last or yq will complain about the file format
6067
sed -i.bak 's/replaceMe: annotations/{{- include "olmv1.annotations" . | nindent 4 }}/g' "${f}"
6168
sed -i.bak 's/replaceMe: labels/{{- include "olmv1.labels" . | nindent 4 }}/g' "${f}"
6269
sed -i.bak 's/olmv1-system/{{ .Values.namespaces.olmv1.name }}/g' "${f}"
70+
sed -i.bak 's/- replaceMe: catalogd-role-rules/{{- include "olmv1.catalogd.role.rules" . | nindent 2 }}/g' "${f}"
71+
sed -i.bak 's/- replaceMe: catalogd-cluster-role-rules/{{- include "olmv1.catalogd.clusterRole.rules" . | nindent 2 }}/g' "${f}"
72+
sed -i.bak 's/- replaceMe: operator-controller-role-rules/{{- include "olmv1.operatorController.role.rules" . | nindent 2 }}/g' "${f}"
73+
sed -i.bak 's/- replaceMe: operator-controller-cluster-role-rules/{{- include "olmv1.operatorController.clusterRole.rules" . | nindent 2 }}/g' "${f}"
6374
# Delete sed's backup file
6475
rm -f "${f}.bak"
6576
done

helm/olmv1/base/catalogd/rbac/experimental/role.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ rules:
3535
- get
3636
- patch
3737
- update
38+
{{- include "olmv1.catalogd.clusterRole.rules" . | nindent 2 }}
3839
---
3940
apiVersion: rbac.authorization.k8s.io/v1
4041
kind: Role
@@ -56,3 +57,4 @@ rules:
5657
- get
5758
- list
5859
- watch
60+
{{- include "olmv1.catalogd.role.rules" . | nindent 2 }}

helm/olmv1/base/catalogd/rbac/standard/role.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ rules:
3535
- get
3636
- patch
3737
- update
38+
{{- include "olmv1.catalogd.clusterRole.rules" . | nindent 2 }}
3839
---
3940
apiVersion: rbac.authorization.k8s.io/v1
4041
kind: Role
@@ -56,3 +57,4 @@ rules:
5657
- get
5758
- list
5859
- watch
60+
{{- include "olmv1.catalogd.role.rules" . | nindent 2 }}

helm/olmv1/base/operator-controller/rbac/experimental/role.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ rules:
6262
verbs:
6363
- list
6464
- watch
65+
{{- include "olmv1.operatorController.clusterRole.rules" . | nindent 2 }}
6566
---
6667
apiVersion: rbac.authorization.k8s.io/v1
6768
kind: Role
@@ -95,3 +96,4 @@ rules:
9596
- get
9697
- list
9798
- watch
99+
{{- include "olmv1.operatorController.role.rules" . | nindent 2 }}

helm/olmv1/base/operator-controller/rbac/standard/role.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ rules:
6262
verbs:
6363
- list
6464
- watch
65+
{{- include "olmv1.operatorController.clusterRole.rules" . | nindent 2 }}
6566
---
6667
apiVersion: rbac.authorization.k8s.io/v1
6768
kind: Role
@@ -95,3 +96,4 @@ rules:
9596
- get
9697
- list
9798
- watch
99+
{{- include "olmv1.operatorController.role.rules" . | nindent 2 }}

helm/olmv1/templates/_helpers.tpl

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,30 @@ Common annoations
3131
{{- define "olmv1.annotations" -}}
3232
olm.operatorframework.io/feature-set: {{ .Values.featureSet -}}{{- if .Values.components.e2e.enabled -}}-e2e{{- end -}}
3333
{{- end }}
34+
35+
{{/*
36+
Insertion of additional rules for RBAC
37+
*/}}
38+
{{- define "olmv1.catalogd.role.rules" -}}
39+
{{- with .Values.components.catalogd.rules }}
40+
{{- toYamlPretty . }}
41+
{{- end }}
42+
{{- end }}
43+
44+
{{- define "olmv1.catalogd.clusterRole.rules" -}}
45+
{{- with .Values.components.catalogd.clusterRole.rules }}
46+
{{- toYamlPretty . }}
47+
{{- end }}
48+
{{- end }}
49+
50+
{{- define "olmv1.operatorController.role.rules" -}}
51+
{{- with .Values.components.operatorController.role.rules }}
52+
{{- toYamlPretty . }}
53+
{{- end }}
54+
{{- end }}
55+
56+
{{- define "olmv1.operatorController.clusterRole.rules" -}}
57+
{{- with .Values.components.operatorController.clusterRole.rules }}
58+
{{- toYamlPretty . }}
59+
{{- end }}
60+
{{- end }}

helm/olmv1/values.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ components:
1818
podArguments: {}
1919
service:
2020
annotations: {}
21+
clusterRole:
22+
rules: {}
23+
role:
24+
rules: {}
2125
catalogd:
2226
enabled: true
2327
image:
@@ -32,6 +36,10 @@ components:
3236
podArguments: {}
3337
service:
3438
annotations: {}
39+
clusterRole:
40+
rules: {}
41+
role:
42+
rules: {}
3543
certManager:
3644
enabled: true
3745
e2e:

0 commit comments

Comments
 (0)