You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: enhancements/microshift/enabling-user-specified-featuregates.md
+19-17Lines changed: 19 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -66,7 +66,7 @@ MicroShift does not deploy these operators and must a different approach which i
66
66
67
67
The implementation includes:
68
68
69
-
1.**FeatureGate Configuration**: Extend MicroShift's configuration file to include `featureGates` section with fields inspired by OpenShift's FeatureGate CRD spec (`featureSet` and `customNoUpgrade`)
69
+
1.**FeatureGate Configuration**: Extend MicroShift's configuration file to include `apiServer.featureGates` section with fields inspired by OpenShift's FeatureGate CRD spec (`featureSet` and `customNoUpgrade`)
70
70
2.**Predefined Feature Sets**: Support for predefined feature sets like `TechPreviewNoUpgrade` and `DevPreviewNoUpgrade`
71
71
3.**Custom Feature Gates**: Support for individual feature gate enablement/disablement via `customNoUpgrade` configuration
72
72
4.**API Server Propagation**: All configured featureGates will be passed to the kube-apiserver, which handles propagation to other Kubernetes components (kubelet, kube-controller-manager, kube-scheduler). Service restarts are the responsibility of the cluster admin.
@@ -82,8 +82,8 @@ The implementation includes:
82
82
##### First Time Configuring Feature Gates
83
83
1. MicroShift Administrator identifies a need for specific feature gates (e.g., `CPUManagerPolicyAlphaOptions`)
84
84
2. Administrator chooses between two configuration approaches:
85
-
-**Predefined Feature Set**: Configure `featureGates.featureSet: TechPreviewNoUpgrade` or `DevPreviewNoUpgrade` for a curated set of preview features
86
-
-**Custom Feature Gates**: Configure `featureGates.featureSet: CustomNoUpgrade` and specify individual features in `featureGates.customNoUpgrade.enabled/disabled` lists
85
+
-**Predefined Feature Set**: Configure `apiServer.featureGates.featureSet: TechPreviewNoUpgrade` or `DevPreviewNoUpgrade` for a curated set of preview features
86
+
-**Custom Feature Gates**: Configure `apiServer.featureGates.featureSet: CustomNoUpgrade` and specify individual features in `apiServer.featureGates.customNoUpgrade.enabled/disabled` lists
87
87
3. Administrator updates `/etc/microshift/config.yaml` with the chosen configuration
88
88
4. Administrator restarts MicroShift service
89
89
5. MicroShift detects the custom FeatureGate configuration.
@@ -138,24 +138,26 @@ The resource consumption impact will be minimal as this enhancement only adds co
138
138
139
139
#### Configuration Schema Extension
140
140
141
-
The MicroShift configuration file will be extended to include a new `featureGates` section with a structure inspired by the OpenShift FeatureGate CRD specification. MicroShift users will configure feature gates in `/etc/microshift/config.yaml`:
141
+
The MicroShift configuration file will be extended to include a new `apiServer.featureGates` section with a structure inspired by the OpenShift FeatureGate CRD specification. MicroShift users will configure feature gates in `/etc/microshift/config.yaml`:
142
142
143
143
**Predefined Feature Set Configuration:**
144
144
```yaml
145
-
featureGates:
146
-
featureSet: TechPreviewNoUpgrade
145
+
apiServer:
146
+
featureGates:
147
+
featureSet: TechPreviewNoUpgrade
147
148
```
148
149
149
150
**Custom Feature Gates Configuration:**
150
151
```yaml
151
-
featureGates:
152
-
featureSet: CustomNoUpgrade
153
-
customNoUpgrade:
154
-
enabled:
155
-
- "CPUManagerPolicyAlphaOptions"
156
-
- "MemoryQoS"
157
-
disabled:
158
-
- "SomeDefaultEnabledFeature"
152
+
apiServer:
153
+
featureGates:
154
+
featureSet: CustomNoUpgrade
155
+
customNoUpgrade:
156
+
enabled:
157
+
- "CPUManagerPolicyAlphaOptions"
158
+
- "MemoryQoS"
159
+
disabled:
160
+
- "SomeDefaultEnabledFeature"
159
161
```
160
162
161
163
**Configuration Rules:**
@@ -204,8 +206,8 @@ Each component will then internally process these settings according to its capa
204
206
#### Validation and Error Handling
205
207
206
208
- **Configuration Parsing**: MicroShift will replicate OpenShift's schema rules as start-time validation checks:
207
-
- **Conflicting Feature Gate Settings**: A feature gate appears in both `.customNoUpgrade.enabled` and `.customNoUpgrade.disabled`
208
-
- **Conflicting Feature Set Settings**: Feature gates are defined under `.customNoUpgrade.[enabled|disabled]` but `.featureSet:` is not `customNoUpgrade`.
209
+
- **Conflicting Feature Gate Settings**: A feature gate appears in both `.apiServer.featureGates.customNoUpgrade.enabled` and `.apiServer.featureGates.customNoUpgrade.disabled`
210
+
- **Conflicting Feature Set Settings**: Feature gates are defined under `.apiServer.featureGates.customNoUpgrade.[enabled|disabled]` but `.apiServer.featureGates.featureSet:` is not `customNoUpgrade`.
209
211
- **API Server Validation**: The kube-apiserver does not validate the feature gates it receives from MicroShift before propagating them. This behavior is the same on OpenShift
210
212
- **Component-level Validation**: Unrecognized feature-gate values are ignored by components. The component will only log them as a warning
211
213
- **Startup Failures**: May occur when featureGate settings conflict (i.e. a featureGate is both enabled and disabled)
@@ -366,7 +368,7 @@ Any changes to the MicroShift configuration schema must be backwards compatible
366
368
### Reverting Custom Feature Gate Configurations To Default
367
369
368
370
**Recovery Procedures:**
369
-
- To restore MicroShift to a stable and supported state, users must run `$ sudo microshift-cleanup-data --all`, set `.featureGates: {}`, and restart MicroShift
371
+
- To restore MicroShift to a stable and supported state, users must run `$ sudo microshift-cleanup-data --all`, set `.apiServer.featureGates: {}`, and restart MicroShift
370
372
371
373
### Upgrade / Rollback
372
374
- Upgrades when custom feature gates are configured cause MicroShift to fail to start. See [Attempt to Upgrade Node with Custom Feature Gates](#attempt-to-upgrade-node-with-custom-feature-gates).
0 commit comments