Bug 1954972

Summary: TechPreviewNoUpgrade featureset can be undone
Product: OpenShift Container Platform Reporter: Qin Ping <piqin>
Component: kube-apiserverAssignee: Stefan Schimanski <sttts>
Status: CLOSED ERRATA QA Contact: Ke Wang <kewang>
Severity: medium Docs Contact:
Priority: medium    
Version: 4.8CC: aos-bugs, mfojtik, sttts, xxia
Target Milestone: ---Keywords: Reopened
Target Release: 4.8.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2021-07-27 23:04:50 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Qin Ping 2021-04-29 07:49:58 UTC
Description of problem:
Per the doc: https://docs.openshift.com/container-platform/4.7/nodes/clusters/nodes-cluster-enabling-features.html, TechPreviewNoUpgrade should cannot be undone, but in our test, we found it can be undone.

Version-Release number of selected component (if applicable):
4.8.0 nightly build

How reproducible:
Always.

Steps to Reproduce:
1. Setup an OCPcluster on AWS
2. Ran the cmd to enable some featuregates: oc patch  featuregate cluster -p '{"spec": {"featureSet": "TechPreviewNoUpgrade"}}' --type merge
3. Checked the kube-controller-manager, kube-apiserver, kube-scheduler COs and kubelet restarted with the exepected feature gates.
4. Ran the "oc edit featuregate cluster" cmd, then set the spec={}
5. Check the kube-controller-manager, kube-apiserver, kube-scheduler COs resarted without the feature gates defined in the `TechPreviewNoUpgrade` featureset, but kubelet didn't restart and change the feature gates config.
 
Actual results:
For storage CSI Migration feature, it needs the configuration is changed in the control plane COs and kubelet at the same time to enable or disable this feature.
But when we update the spec={}, for the kubelet didn't change the config, so the storage CSI Migration did a partially disable.

Expected results:
Not support `TechPreviewNoUpgrade` featureset undo.

Additional info:

Comment 1 Qin Ping 2021-04-29 09:56:51 UTC
Hi Stefan,

Could you explain more why it's not a bug?

We have 2 features might about this. One is CSI Migration, when the featureset is enabled and the featuregate.spec is set to {}, then the CSI Migration feature is not in the correct status. Another is Azure Disk CSI Driver, when the featureset is enabled and the featuregate.spec is set to {}, CSO(Cluster Storage Operator) will no unavailable. For the second one we tracked with bug: https://bugzilla.redhat.com/show_bug.cgi?id=1952826

Comment 2 Stefan Schimanski 2021-04-29 10:04:27 UTC
@Qin: you were absolute right. It's a bug and the fix was simple.

Comment 3 Qin Ping 2021-04-29 12:30:28 UTC
Stefan, thanks for checking again.

Comment 5 Ke Wang 2021-05-06 08:02:49 UTC
$ oc get clusterversion
NAME      VERSION                             AVAILABLE   PROGRESSING   SINCE   STATUS
version   4.8.0-0.nightly-2021-04-30-201824   True        False         5h28m   Cluster version is 4.8.0-0.nightly-2021-04-30-201824

Ran the cmd to enable some featuregates: oc patch  featuregate cluster -p '{"spec": {"featureSet": "TechPreviewNoUpgrade"}}' --type merge

After the kube-controller-manager, kube-apiserver, kube-scheduler COs and kubelet restarted with the exepected feature gates, tried to undone this operation, ran the "oc edit featuregate cluster" cmd, then set the spec={}, 

$ oc edit featuregate cluster
error: featuregates.config.openshift.io "cluster" is invalid
A copy of your changes has been stored to "/tmp/oc-edit-l4me0.yaml"
error: Edit cancelled, no valid changes were saved.

$ oc patch  featuregate cluster -p '{"spec": {}}' --type merge
featuregate.config.openshift.io/cluster patched

$ oc get featuregate cluster -o yaml | grep -A1  ^spec
spec:
  featureSet: TechPreviewNoUpgrade

No changes after applied the patch, the `TechPreviewNoUpgrade` featureset cannot be undone and checked the kube-controller-manager, kube-apiserver, kube-scheduler COs and kubelet didn't restart, so move the bug VERIFIED.

Comment 8 errata-xmlrpc 2021-07-27 23:04:50 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (Moderate: OpenShift Container Platform 4.8.2 bug fix and security update), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHSA-2021:2438