Skip to content

Commit 292c0db

Browse files
authored
Support disabling feature-gates (#2271)
The Helm manifests only support _enabling_ feature-gates. To allow for flexibility in configuring mutually-exclusive feature-gates and additional parameters that might be needed, add Helm templating for disabled feature gates and extra arguments to the deployments. NOTE: This deprecates the old location of feature-gate config, and moves it to a new location. This is necessary to keep downstream from breaking during this transition. Signed-off-by: Todd Short <tshort@redhat.com>
1 parent 0e96fb3 commit 292c0db

8 files changed

+61
-25
lines changed

helm/experimental.yaml

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,25 @@
33
# Declare variables to be passed into your templates.
44

55
# List of enabled experimental features for operator-controller
6-
# Use with {{- if has "FeatureGate" .Values.operatorControllerFeatures }}
6+
# Use with {{- if has "FeatureGate" .Values.options.operatorController.features.enabled }}
77
# to pull in resources or additions
8-
operatorControllerFeatures:
9-
- WebhookProviderCertManager
10-
- SingleOwnNamespaceInstallSupport
11-
- PreflightPermissions
12-
- HelmChartSupport
13-
- BoxcutterRuntime
14-
8+
options:
9+
operatorController:
10+
features:
11+
enabled:
12+
- WebhookProviderCertManager
13+
- SingleOwnNamespaceInstallSupport
14+
- PreflightPermissions
15+
- HelmChartSupport
16+
- BoxcutterRuntime
17+
disabled:
18+
- WebhookProviderOpenshiftServiceCA
1519
# List of enabled experimental features for catalogd
16-
# Use with {{- if has "FeatureGate" .Values.catalogdFeatures }}
20+
# Use with {{- if has "FeatureGate" .Values.options.catalogd.features.enabled }}
1721
# to pull in resources or additions
18-
catalogdFeatures:
19-
- APIV1MetasHandler
20-
22+
catalogd:
23+
features:
24+
enabled:
25+
- APIV1MetasHandler
2126
# This can be one of: standard or experimental
22-
options:
2327
featureSet: experimental

helm/olmv1/templates/deployment-olmv1-system-catalogd-controller-manager.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,15 @@ spec:
4848
{{- range .Values.catalogdFeatures }}
4949
- --feature-gates={{- . -}}=true
5050
{{- end }}
51+
{{- range .Values.options.catalogd.features.enabled }}
52+
- --feature-gates={{- . -}}=true
53+
{{- end }}
54+
{{- range .Values.options.catalogd.features.disabled }}
55+
- --feature-gates={{- . -}}=false
56+
{{- end }}
57+
{{- range .Values.options.catalogd.deployment.extraArguments }}
58+
- {{ . -}}
59+
{{- end }}
5160
{{- if .Values.options.certManager.enabled }}
5261
- --tls-cert=/var/certs/tls.crt
5362
- --tls-key=/var/certs/tls.key

helm/olmv1/templates/deployment-olmv1-system-operator-controller-controller-manager.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,15 @@ spec:
4747
{{- range .Values.operatorControllerFeatures }}
4848
- --feature-gates={{- . -}}=true
4949
{{- end }}
50+
{{- range .Values.options.operatorController.features.enabled }}
51+
- --feature-gates={{- . -}}=true
52+
{{- end }}
53+
{{- range .Values.options.operatorController.features.disabled }}
54+
- --feature-gates={{- . -}}=false
55+
{{- end }}
56+
{{- range .Values.options.operatorController.deployment.extraArguments }}
57+
- {{ . -}}
58+
{{- end }}
5059
{{- if .Values.options.certManager.enabled }}
5160
- --tls-cert=/var/certs/tls.crt
5261
- --tls-key=/var/certs/tls.key

helm/olmv1/templates/rbac/clusterrolebinding-operator-controller-manager-rolebinding.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,15 @@ metadata:
88
labels:
99
app.kubernetes.io/name: operator-controller
1010
{{- include "olmv1.labels" $ | nindent 4 }}
11-
{{- if has "BoxcutterRuntime" .Values.operatorControllerFeatures }}
11+
{{- if or (has "BoxcutterRuntime" .Values.options.operatorController.features.enabled) (has "BoxcutterRuntime" .Values.operatorControllerFeatures) }}
1212
name: operator-controller-manager-admin-rolebinding
1313
{{- else }}
1414
name: operator-controller-manager-rolebinding
1515
{{- end }}
1616
roleRef:
1717
apiGroup: rbac.authorization.k8s.io
1818
kind: ClusterRole
19-
{{- if has "BoxcutterRuntime" .Values.operatorControllerFeatures }}
19+
{{- if or (has "BoxcutterRuntime" .Values.options.operatorController.features.enabled) (has "BoxcutterRuntime" .Values.operatorControllerFeatures) }}
2020
name: cluster-admin
2121
{{- else }}
2222
name: operator-controller-manager-role

helm/olmv1/values.yaml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,18 @@ options:
88
enabled: true
99
deployment:
1010
image: quay.io/operator-framework/operator-controller:devel
11+
extraArguments: []
12+
features:
13+
enabled: []
14+
disabled: []
1115
catalogd:
1216
enabled: true
1317
deployment:
1418
image: quay.io/operator-framework/catalogd:devel
19+
extraArguments: []
20+
features:
21+
enabled: []
22+
disabled: []
1523
certManager:
1624
enabled: false
1725
e2e:
@@ -25,10 +33,10 @@ options:
2533
# This can be one of: standard or experimental
2634
featureSet: standard
2735

36+
# Deprecated: The list of features
2837
operatorControllerFeatures: []
2938
catalogdFeatures: []
3039

31-
3240
# The set of namespaces
3341
namespaces:
3442
olmv1:

helm/tilt.yaml

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,16 @@ options:
1111
tilt:
1212
enabled: true
1313
featureSet: experimental
14-
15-
operatorControllerFeatures:
16-
- WebhookProviderCertManager
17-
- SingleOwnNamespaceInstallSupport
18-
- PreflightPermissions
19-
- HelmChartSupport
20-
21-
catalogdFeatures:
22-
- APIV1MetasHandler
14+
operatorController:
15+
features:
16+
enabled:
17+
- WebhookProviderCertManager
18+
- SingleOwnNamespaceInstallSupport
19+
- PreflightPermissions
20+
- HelmChartSupport
21+
disabled:
22+
- WebhookProviderOpenshiftServiceCA
23+
catalogd:
24+
features:
25+
enabled:
26+
- APIV1MetasHandler

manifests/experimental-e2e.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2188,6 +2188,7 @@ spec:
21882188
- --feature-gates=PreflightPermissions=true
21892189
- --feature-gates=HelmChartSupport=true
21902190
- --feature-gates=BoxcutterRuntime=true
2191+
- --feature-gates=WebhookProviderOpenshiftServiceCA=false
21912192
- --tls-cert=/var/certs/tls.crt
21922193
- --tls-key=/var/certs/tls.key
21932194
- --catalogd-cas-dir=/var/ca-certs

manifests/experimental.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2101,6 +2101,7 @@ spec:
21012101
- --feature-gates=PreflightPermissions=true
21022102
- --feature-gates=HelmChartSupport=true
21032103
- --feature-gates=BoxcutterRuntime=true
2104+
- --feature-gates=WebhookProviderOpenshiftServiceCA=false
21042105
- --tls-cert=/var/certs/tls.crt
21052106
- --tls-key=/var/certs/tls.key
21062107
- --catalogd-cas-dir=/var/ca-certs

0 commit comments

Comments
 (0)