Skip to content

Commit 012db47

Browse files
Promite Single Own Feature Gate to GA
1 parent 9eac616 commit 012db47

File tree

13 files changed

+173
-191
lines changed

13 files changed

+173
-191
lines changed

docs/draft/howto/single-ownnamespace-install.md

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
## Description
22

33
!!! note
4-
This feature is still in *alpha* the `SingleOwnNamespaceInstallSupport` feature-gate must be enabled to make use of it.
5-
See the instructions below on how to enable it.
4+
The `SingleOwnNamespaceInstallSupport` feature gate is enabled by default. Use this guide to configure bundles that need Single or Own namespace install modes.
65

76
---
87

@@ -31,28 +30,6 @@ include *installModes*.
3130

3231
[![OwnNamespace Install Demo](https://asciinema.org/a/Rxx6WUwAU016bXFDW74XLcM5i.svg)](https://asciinema.org/a/Rxx6WUwAU016bXFDW74XLcM5i)
3332

34-
## Enabling the Feature-Gate
35-
36-
!!! tip
37-
38-
This guide assumes OLMv1 is already installed. If that is not the case,
39-
you can follow the [getting started](../../getting-started/olmv1_getting_started.md) guide to install OLMv1.
40-
41-
---
42-
43-
Patch the `operator-controller` `Deployment` adding `--feature-gates=SingleOwnNamespaceInstallSupport=true` to the
44-
controller container arguments:
45-
46-
```terminal title="Enable SingleOwnNamespaceInstallSupport feature-gate"
47-
kubectl patch deployment -n olmv1-system operator-controller-controller-manager --type='json' -p='[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": "--feature-gates=SingleOwnNamespaceInstallSupport=true"}]'
48-
```
49-
50-
Wait for `Deployment` rollout:
51-
52-
```terminal title="Wait for Deployment rollout"
53-
kubectl rollout status -n olmv1-system deployment/operator-controller-controller-manager
54-
```
55-
5633
## Configuring the `ClusterExtension`
5734

5835
A `ClusterExtension` can be configured to install bundle in `Single-` or `OwnNamespace` mode through the

docs/draft/tutorials/explore-available-content-metas-endpoint.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,9 @@ Then you can query the catalog by using `curl` commands and the `jq` CLI tool to
9191
...
9292
```
9393
94+
9495
!!! important
95-
Currently, OLM 1.0 does not support the installation of extensions that use webhooks or that target a single or specified set of namespaces.
96+
OLM 1.0 supports installing extensions that define webhooks. Targeting a single or specified set of namespaces is handled by the `SingleOwnNamespaceInstallSupport` feature gate, which is enabled by default.
9697
9798
3. Return list of packages which support `AllNamespaces` install mode, do not use webhooks, and where the channel head version uses `olm.csv.metadata` format:
9899

docs/project/olmv1_limitations.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@ hide:
88
Currently, OLM v1 only supports installing operators packaged in [OLM v0 bundles](https://olm.operatorframework.io/docs/tasks/creating-operator-bundle/)
99
, also known as `registry+v1` bundles. Additionally, the bundled operator, or cluster extension:
1010

11-
* **must** support installation via the `AllNamespaces` install mode.
12-
* **must not** use webhooks.
11+
* **must** support installation via the `AllNamespaces` install mode, or rely on the default-enabled `SingleOwnNamespaceInstallSupport` feature gate to target a specific namespace.
1312
* **must not** declare dependencies using any of the following file-based catalog properties:
1413
* `olm.gvk.required`
1514
* `olm.package.required`

docs/tutorials/explore-available-content.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,9 @@ Then you can query the catalog by using `curl` commands and the `jq` CLI tool to
9191
...
9292
```
9393
94+
9495
!!! important
95-
Currently, OLM 1.0 does not support the installation of extensions that use webhooks or that target a single or specified set of namespaces.
96+
OLM 1.0 supports installing extensions that define webhooks. Targeting a single or specified set of namespaces is handled by the `SingleOwnNamespaceInstallSupport` feature gate, which is enabled by default.
9697
9798
3. Return list of packages that support `AllNamespaces` install mode and do not use webhooks:
9899

hack/demo/own-namespace-demo-script.sh

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,7 @@ kubectl apply -f "$(dirname "${BASH_SOURCE[0]}")/../../manifests/experimental.ya
1212
# wait for experimental CRDs to be available
1313
kubectl wait --for condition=established --timeout=60s crd/clusterextensions.olm.operatorframework.io
1414

15-
# enable 'SingleOwnNamespaceInstallSupport' feature gate
16-
kubectl patch deployment -n olmv1-system operator-controller-controller-manager --type='json' -p='[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": "--feature-gates=SingleOwnNamespaceInstallSupport=true"}]'
17-
18-
# wait for operator-controller to become available
15+
# SingleOwnNamespaceInstallSupport is enabled by default; ensure controller is healthy
1916
kubectl rollout status -n olmv1-system deployment/operator-controller-controller-manager
2017

2118
# create install namespace
@@ -57,10 +54,6 @@ kubectl delete clusterextension argocd-operator --ignore-not-found=true
5754
kubectl delete namespace argocd-system --ignore-not-found=true
5855
kubectl delete clusterrolebinding argocd-installer-crb --ignore-not-found=true
5956

60-
# remove feature gate from deployment
61-
echo "Removing feature gate from operator-controller..."
62-
kubectl patch deployment -n olmv1-system operator-controller-controller-manager --type='json' -p='[{"op": "remove", "path": "/spec/template/spec/containers/0/args", "value": "--feature-gates=SingleOwnNamespaceInstallSupport=true"}]' || true
63-
6457
# restore standard CRDs
6558
echo "Restoring standard CRDs..."
6659
kubectl apply -f "$(dirname "${BASH_SOURCE[0]}")/../../manifests/base.yaml"

hack/demo/single-namespace-demo-script.sh

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,7 @@ kubectl apply -f "$(dirname "${BASH_SOURCE[0]}")/../../manifests/experimental.ya
1212
# wait for experimental CRDs to be available
1313
kubectl wait --for condition=established --timeout=60s crd/clusterextensions.olm.operatorframework.io
1414

15-
# enable 'SingleOwnNamespaceInstallSupport' feature gate
16-
kubectl patch deployment -n olmv1-system operator-controller-controller-manager --type='json' -p='[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": "--feature-gates=SingleOwnNamespaceInstallSupport=true"}]'
17-
18-
# wait for operator-controller to become available
15+
# SingleOwnNamespaceInstallSupport is enabled by default; ensure controller is healthy
1916
kubectl rollout status -n olmv1-system deployment/operator-controller-controller-manager
2017

2118
# create install namespace
@@ -60,10 +57,6 @@ kubectl delete clusterextension argocd-operator --ignore-not-found=true
6057
kubectl delete namespace argocd-system argocd --ignore-not-found=true
6158
kubectl delete clusterrolebinding argocd-installer-crb --ignore-not-found=true
6259

63-
# remove feature gate from deployment
64-
echo "Removing feature gate from operator-controller..."
65-
kubectl patch deployment -n olmv1-system operator-controller-controller-manager --type='json' -p='[{"op": "remove", "path": "/spec/template/spec/containers/0/args", "value": "--feature-gates=SingleOwnNamespaceInstallSupport=true"}]' || true
66-
6760
# restore standard CRDs
6861
echo "Restoring standard CRDs..."
6962
kubectl apply -f "$(dirname "${BASH_SOURCE[0]}")/../../manifests/base.yaml"

helm/experimental.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
# to pull in resources or additions
88
operatorControllerFeatures:
99
- WebhookProviderCertManager
10-
- SingleOwnNamespaceInstallSupport
1110
- PreflightPermissions
1211
- HelmChartSupport
1312
- BoxcutterRuntime

helm/tilt.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ options:
1414

1515
operatorControllerFeatures:
1616
- WebhookProviderCertManager
17-
- SingleOwnNamespaceInstallSupport
1817
- PreflightPermissions
1918
- HelmChartSupport
2019

internal/operator-controller/features/features.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ var operatorControllerFeatureGates = map[featuregate.Feature]featuregate.Feature
3333
// registry+v1 cluster extensions with single or own namespaces modes
3434
// i.e. with a single watch namespace.
3535
SingleOwnNamespaceInstallSupport: {
36-
Default: false,
37-
PreRelease: featuregate.Alpha,
36+
Default: true,
37+
PreRelease: featuregate.GA,
3838
LockToDefault: false,
3939
},
4040

manifests/experimental-e2e.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2184,7 +2184,6 @@ spec:
21842184
- --metrics-bind-address=:8443
21852185
- --leader-elect
21862186
- --feature-gates=WebhookProviderCertManager=true
2187-
- --feature-gates=SingleOwnNamespaceInstallSupport=true
21882187
- --feature-gates=PreflightPermissions=true
21892188
- --feature-gates=HelmChartSupport=true
21902189
- --feature-gates=BoxcutterRuntime=true

0 commit comments

Comments
 (0)