Skip to content

Commit a1bc015

Browse files
committed
Add graduation plan
1 parent 203e738 commit a1bc015

File tree

2 files changed

+22
-11
lines changed

2 files changed

+22
-11
lines changed

keps/sig-storage/1710-selinux-relabeling/README.md

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -680,10 +680,13 @@ All these e2e tests use only CSI volumes. All in-tree volume types that support
680680
* Alpha of Phase 2 + 3:
681681
* Implemented `SELinuxChangePolicy` **with a separate alpha feature gate `SELinuxChangePolicy`** as preparation for `SELinuxMount` feature gate graduation.
682682
* Implemented SELinuxController.
683-
* Beta of Phase 2, alpha of phase 3:
683+
* Beta of Phase 2 + 3 (`SELinuxChangePolicy` is beta and enabled by default; `SELinuxMount` is beta, but disabled by default).
684684
* Telemetry numbers from OpenShift show that <5% of clusters would need to change any of their Pods.
685-
* GA:
685+
* This phase signalizes that the feature is ready for real testing. Only non-breaking parts (`SELinuxChangePolicy`) are enabled by default.
686+
* GA of Phase 2 (`SELinuxChangePolicy` + `SELinuxMountReadWriteOncePod` are GA and locked to default):
686687
* All known issues fixed. Otherwise, we will GA Phase 1 only.
688+
* GA of Phase 3 (`SELinuxMount` is GA and locked to default):
689+
* At least 1 release after `SELinuxChangePolicy` is GA to give cluster admins enough time to apply `SELinuxChangePolicy` to their Pods.
687690
* Telemetry numbers from OpenShift show that <2% of clusters would need to change any of their Pods (i.e. most clusters already applied opt-out).
688691

689692
### Upgrade / Downgrade Strategy
@@ -723,9 +726,9 @@ _This section must be completed when targeting alpha to a release._
723726
* **How can this feature be enabled / disabled in a live cluster?**
724727
- [X] Feature gate (also fill in values in `kep.yaml`)
725728
- Feature gate name: `SELinuxMountReadWriteOncePod` (beta in 1.28)
726-
- Feature gate name: `SELinuxChangePolicy` (alpha in 1.30)
729+
- Feature gate name: `SELinuxChangePolicy` (alpha in 1.30, proposing beta in 1.33)
727730
- To enable `SELinuxChangePolicy` feature gate, `SELinuxMountReadWriteOncePod` **must** be enabled too.
728-
- Feature gate name: `SELinuxMount` (alpha in 1.30)
731+
- Feature gate name: `SELinuxMount` (alpha in 1.30, proposing beta in 1.33)
729732
- To enable `SELinuxMount` feature gate, `SELinuxMountReadWriteOncePod` and `SELinuxChangePolicy` **must** be enabled too.
730733
- Components depending on the feature gate: apiserver (API validation only), kubelet
731734
- [ ] Other
@@ -740,6 +743,7 @@ _This section must be completed when targeting alpha to a release._
740743
automations, so be extremely careful here.
741744

742745
**Yes.** See [Conflict with other Pods](#conflicts-with-other-pods) for details.
746+
We offer metrics + events + proactive opt-out per Pod before the breaking part (`SELinuxMount`) is enabled by default.
743747

744748
* **Can the feature be disabled once it has been enabled (i.e. can we rollback
745749
the enablement)?**
@@ -908,7 +912,8 @@ previous answers based on experience in the field._
908912

909913
* **Will enabling / using this feature result in any new API calls?**
910914

911-
No new API calls are required. Kubelet / CSI volume plugin already has CSIDriver informer.
915+
* No new API calls are required in kubelet, its CSI volume plugin already has CSIDriver informer.
916+
* KCM will emit new events when SELinuxWarningController is enabled. It already has Pod, PV, PVC, CSIDriver informers and does not do other API calls.
912917

913918
* **Will enabling / using this feature result in introducing new API types?**
914919

@@ -921,8 +926,9 @@ previous answers based on experience in the field._
921926

922927
* **Will enabling / using this feature result in increasing size or count of the existing API objects?**
923928

924-
CSIDriver gets one new field. We expect only few CSIDriver objects in a cluster.
925-
PodSpec gets one new field, and we expect it to be `null` for the vast majority of Pods.
929+
* CSIDriver gets one new field. We expect only few CSIDriver objects in a cluster.
930+
* PodSpec gets one new field, and we expect it to be `null` for the vast majority of Pods.
931+
* Event(s) will be created for every conflicting Pod pair when SELinuxWarningController is enabled.
926932

927933
* **Will enabling / using this feature result in increasing time taken by any
928934
operations covered by [existing SLIs/SLOs][]?**
@@ -939,7 +945,7 @@ previous answers based on experience in the field._
939945
This through this both in small and large cases, again with respect to the
940946
[supported limits][].
941947

942-
No. Kubelet already has a cache of desired / existing mounts, we need to add
948+
No. KCM and Kubelet already has a cache of desired / existing mounts, we need to add
943949
a string with SELinux label to each one, which should be negligible.
944950

945951
* **Can enabling / using this feature result in resource exhaustion of some node
@@ -980,6 +986,7 @@ _This section must be completed when targeting beta graduation to a release._
980986

981987
- *Kubelet des not start new Pods*
982988
- Detection: `volume_manager_selinux_container_errors_total`, `volume_manager_selinux_pod_context_mismatch_errors_total` or `volume_manager_selinux_volume_context_mismatch_errors_total` grows.
989+
In addition, each such Pod has an event about SELinux label mismatch.
983990
- Mitigations: What can be done to stop the bleeding, especially for already
984991
running user workloads?
985992
Workloads that run keep running, only new Pods can't start.
@@ -1010,6 +1017,9 @@ _This section must be completed when targeting beta graduation to a release._
10101017
* We discovered that sharing volumes between privileged and unprivileged containers as described [here](#privileged-containers) is a valid use case.
10111018
we cannot mount *all* volumes with `-o context` and it must be an explicit opt-out using `SELinuxChangePolicy: Recursive`.
10121019
* Implement `SELinuxChangePolicy` as an alpha field.
1020+
* 1.33: Graduate `SELinuxMount` to beta / disabled by default, `SELinuxChangePolicy` to beta / enabled by default.
1021+
* Add e2e tests for the SELinuxWarningController.
1022+
* Test on non-Fedora based Linux distribution (e.g. Debian) with SELinux enabled.
10131023

10141024
## Drawbacks [optional]
10151025

keps/sig-storage/1710-selinux-relabeling/kep.yaml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,17 @@ approvers:
1818
- "@saad-ali"
1919
see-also:
2020
- /keps/sig-storage/695-skip-permission-change/README.md
21-
stage: alpha
22-
latest-milestone: "v1.32"
21+
stage: beta
22+
latest-milestone: "v1.33"
2323
milestone:
2424
alpha: "v1.24" # SELinuxMountReadWriteOncePod
2525
beta: "v1.27" # SELinuxMountReadWriteOncePod
2626
stable: "v1.34" # Very optimistic plan for SELinuxMountReadWriteOncePod GA, needs SELinuxMount very close to GA
2727

2828
# alpha: "v1.30" # SELinuxMount
2929
# alpha: "v1.32" # SELinuxChangePolicy
30-
30+
# beta: "v1.33" # SELinuxChangePolicy (enabled by default)
31+
# beta: "v1.33" # SELinuxMount (disabled by default)
3132
feature-gates:
3233
- name: SELinuxMountReadWriteOncePod
3334
components:

0 commit comments

Comments
 (0)