Bug 1821635 - Disable inclusion of ose-csi-external-resizer container as part of provisoner pods in OCS 4.3
Summary: Disable inclusion of ose-csi-external-resizer container as part of provisoner...
Keywords:
Status: CLOSED WONTFIX
Alias: None
Product: Red Hat OpenShift Container Storage
Classification: Red Hat Storage
Component: ocs-operator
Version: 4.3
Hardware: Unspecified
OS: Unspecified
unspecified
high
Target Milestone: ---
: ---
Assignee: Jose A. Rivera
QA Contact: Raz Tamir
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2020-04-07 09:38 UTC by Neha Berry
Modified: 2020-06-24 14:56 UTC (History)
10 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2020-06-24 14:56:14 UTC
Embargoed:


Attachments (Terms of Use)

Description Neha Berry 2020-04-07 09:38:26 UTC
Description of problem (please be detailed as possible and provide log
snippests):
--------------------------------------------------------------

This BZ is related to Bug 1818124. The 
It was notes that in OCS 4.3 builds, the provisioner pods for rbd and cephfs have a new "csi-external-resizer" container even though this functionality is not yet part of OCS 4.3.

As discussed in https://bugzilla.redhat.com/show_bug.cgi?id=1818124#c21 , we are raising this BZ to add the changes related to disabling this resizer for OCS 4.3

-----Some outputs------


# oc get deployment.apps csi-cephfsplugin-provisioner -o yaml | grep -i image:
        image: registry.redhat.io/openshift4/ose-csi-external-attacher@sha256:39cf69b150f37604b2efbf0d6e24bf46665f3481706be323f81a48ffa368513b
        image: registry.redhat.io/openshift4/ose-csi-external-resizer-rhel7@sha256:e7302652fe3f698f8211742d08b2dcea9d77925de458eb30c20789e12ee7ae33
        image: registry.redhat.io/openshift4/ose-csi-external-provisioner-rhel7@sha256:2e9f573c928ae3ebb6856a856f5cb76b52b296cea4555a30fa3b008a16bfe979
        image: quay.io/rhceph-dev/cephcsi@sha256:c669e22dda850c5e1a2719b925787b73f6a512878a226381279614cd2da7d6c3
        image: quay.io/rhceph-dev/cephcsi@sha256:c669e22dda850c5e1a2719b925787b73f6a512878a226381279614cd2da7d6c3

# oc get deployment.apps csi-rbdplugin-provisioner -o yaml | grep -i image:
        image: registry.redhat.io/openshift4/ose-csi-external-provisioner-rhel7@sha256:2e9f573c928ae3ebb6856a856f5cb76b52b296cea4555a30fa3b008a16bfe979
        image: registry.redhat.io/openshift4/ose-csi-external-resizer-rhel7@sha256:e7302652fe3f698f8211742d08b2dcea9d77925de458eb30c20789e12ee7ae33
        image: registry.redhat.io/openshift4/ose-csi-external-attacher@sha256:39cf69b150f37604b2efbf0d6e24bf46665f3481706be323f81a48ffa368513b
        image: quay.io/rhceph-dev/cephcsi@sha256:c669e22dda850c5e1a2719b925787b73f6a512878a226381279614cd2da7d6c3
        image: quay.io/rhceph-dev/cephcsi@sha256:c669e22dda850c5e1a2719b925787b73f6a512878a226381279614cd2da7d6c3





Version of all relevant components (if applicable):
-------------------------------------------------------
OCS = ocs-operator:4.3.0-394.ci

Does this issue impact your ability to continue to work with the product
(please explain in detail what is the user impact)?
-------------------------------------------------------------------
Not sure if it is redundant or can have an impact. Engg can clarify

Is there any workaround available to the best of your knowledge?
-------------------------------------------------------------------
No

Rate from 1 - 5 the complexity of the scenario you performed that caused this
bug (1 - very simple, 5 - very complex)?

--------------------------------------------------------------
2

Can this issue reproducible?
------------------------------
Yes

Can this issue reproduce from the UI?
---------------------------------------
yes

If this is a regression, please provide more details to justify this:
--------------------------------------------------------------------
This container was not part of OCS 4.2 releases.

Steps to Reproduce:
------------------------

1. Create an OCS 4.3 cluster from UI
2. Check the containers in rbd and cephfs provisioner pods. The CSI_resizer container is also present even though resize is not supported in OCS 4.3
3.


Actual results:
--------------------

The CSI provisioner pods use the DS image of CSI_EXTERNAL_RESIZER but it is not supposed to be part of CSI pod in OCS 4.3

Expected results:
-----------------------------------
Resizer container should not be part of provisioner pod in OCS 4.3

Additional info:
========================


- name: CSI_ENABLE_SNAPSHOTTER
                    value: "false"
                  - name: ROOK_CSI_CEPH_IMAGE
                    value: quay.io/rhceph-dev/cephcsi@sha256:c669e22dda850c5e1a2719b925787b73f6a512878a226381279614cd2da7d6c3
                  - name: ROOK_CSI_REGISTRAR_IMAGE
                    value: registry.redhat.io/openshift4/ose-csi-driver-registrar@sha256:dc468bebfd0e1339f348ee46bdc3d12855017be5debcdc8fafb4b0fad1f2f5a2
                  - name: ROOK_CSI_RESIZER_IMAGE
                    value: registry.redhat.io/openshift4/ose-csi-external-resizer-rhel7@sha256:e7302652fe3f698f8211742d08b2dcea9d77925de458eb30c20789e12ee7ae33
                  - name: ROOK_CSI_PROVISIONER_IMAGE
                    value: registry.redhat.io/openshift4/ose-csi-external-provisioner-rhel7@sha256:2e9f573c928ae3ebb6856a856f5cb76b52b296cea4555a30fa3b008a16bfe979
                  - name: ROOK_CSI_ATTACHER_IMAGE
                    value: registry.redhat.io/openshift4/ose-csi-external-attacher@sha256:39cf69b150f37604b2efbf0d6e24bf46665f3481706be323f81a48ffa368513b
                  image: quay.io/rhceph-dev/rook-ceph@sha256:6c8c73ce39cdb8fd60ded4ab6740384fdcd007d515930cc00ecebdef30dd0e11
                  name: rook-ceph-operator

Comment 5 Madhu Rajanna 2020-04-07 10:17:00 UTC
Rook PR https://github.com/rook/rook/pull/4409
OCS-operator PR https://github.com/openshift/ocs-operator/pull/352

Comment 8 Travis Nielsen 2020-04-07 13:32:27 UTC
While the resizer is not officially supported in the release, I would push back on this change for several reasons:
- We have a downstream resizer available so we are not unexpectedly shipping an upstream image
- This late in the release cycle we should only be taking blockers. This is a nice-to-have, not a blocker. No functionality is blocked, nothing crashes because it is enabled, no negative consequence for shipping it. 
- Any code change this late in the release is a risk. Do we really want to risk a regression after we have already been delayed?
- The feature is being widely used upstream. This doesn't mean we support it, but it means lower risk if someone does use the unsupported feature.

Alternatively to removing the resizer, can we consider sanity testing the resizer and say the feature is experimental? This is a really popular feature.

Comment 9 Michael Adam 2020-04-07 14:08:25 UTC
So while the resizer container is not needed for ocs 4.3 since we don't support the feature yet, the question is whether it does any harm. 

With the feature not supported in OCS 4.3 yet, one danger might be that customers could end up using it just because the component is there. PV resize is tech preview in OCP 4.3 (and 4.4. too, and will be in 4.5). However, the feature is enabled by default. https://github.com/openshift/origin/blob/release-4.3/vendor/k8s.io/kubernetes/pkg/features/kube_features.go#L539.

Per my understanding, not having the resizer container running would be a way to disable the feature. But do we need to block 4.3 to remove this container?

Just consider that we now also have an e2e test case for resizing under review:  https://github.com/red-hat-storage/ocs-ci/pull/1778

So my proposal is: Could we consider just having it for 4.3 (and not mentioning it...) and have it happy-path tested as TP for 4.4 which is supposed to come very soon?

Comment 10 Michael Adam 2020-04-07 14:09:46 UTC
(In reply to Travis Nielsen from comment #8)
> While the resizer is not officially supported in the release, I would push
> back on this change for several reasons:
> - We have a downstream resizer available so we are not unexpectedly shipping
> an upstream image
> - This late in the release cycle we should only be taking blockers. This is
> a nice-to-have, not a blocker. No functionality is blocked, nothing crashes
> because it is enabled, no negative consequence for shipping it. 
> - Any code change this late in the release is a risk. Do we really want to
> risk a regression after we have already been delayed?
> - The feature is being widely used upstream. This doesn't mean we support
> it, but it means lower risk if someone does use the unsupported feature.

Agree to all the above.

> Alternatively to removing the resizer, can we consider sanity testing the
> resizer and say the feature is experimental? This is a really popular
> feature.

Indeed! As mentioned, an automated test case is being proposed to the ocs-ci: https://github.com/red-hat-storage/ocs-ci/pull/1778

Comment 11 Neha Berry 2020-04-07 14:17:21 UTC
@travis

Then, with the resizer container still present,  will the scenario for Comment#7 hold & ceph PVs can get resized from UI? Also, this new size will be visible from both OCP and ceph backend ?

We haven't tested PV resize in OCS 4.3, hence wanted to confirm the implications.

A code change so late in release cycle is risky though :)

Comment 12 Michael Adam 2020-04-07 14:39:04 UTC
(In reply to Neha Berry from comment #11)
> @travis
> 
> Then, with the resizer container still present,  will the scenario for
> Comment#7 hold & ceph PVs can get resized from UI?

Yes.

> Also, this new size will be visible from both OCP and ceph backend ?

AFAICT, yes.

> We haven't tested PV resize in OCS 4.3, hence wanted to confirm the implications.
> 
> A code change so late in release cycle is risky though :)

That's why the proposal to do the automated ci-test and call it experimental (or so). Maybe TP in 4.4?

Comment 13 Michael Adam 2020-04-07 15:22:26 UTC
As just decided in the PgM meeting: We are not going to do anything for 4.3 here.
The feature can only be used of the storage class needs to be changed to use this.
So moving out of 4.3.
I think we should also close this since we instead of removing the feature we will strive to support it.

Comment 14 Travis Nielsen 2020-04-07 17:13:16 UTC
Removing needsinfo since Michael answered the questions.

Comment 15 Elad 2020-04-12 13:28:00 UTC
Hi Michael,

PV resize will not be supported in OCS4.4 so we should fix this for 4.4

Comment 16 Travis Nielsen 2020-04-13 20:23:43 UTC
@Elad There are many features that are supported upstream that are not supported downstream. Why is it so critical to disable this feature? In 4.5 we want to support it anyway. Maybe that means we should say it is tech preview now.

Comment 17 Jose A. Rivera 2020-04-14 14:24:02 UTC
This is not critical to resolve for OCS 4.4, and we should not be doing any further feature development for that release anyway. It is harming nothing, and cannot be accessed without considerable configuration on the admin's part. In particular, PV resizing is not even supported in OCP 4.4 anyway, and the downstream CSI sidecar images should reflect this accordingly. Since we intend to support it anyway, it is a waste of time to disable it for a matter of weeks. At best we should document that we explicitly don't support this.

Comment 18 Raz Tamir 2020-04-15 07:54:32 UTC
This feature was never tested so the tech preview suggestion is good but off the table.
The fact we are exposing a feature that will land officially in the product in future release doesn't mean we can jeopardize the existing release we are working on.

Just to put things is perspective,
- OCS 4.4 should be released on May 6th and OCS 4.5 should be released on mid-July - 2.5 months between the releases
- The resizer image is not a downstream iiuc and therefore should not be part of OCS (a downstream product)
- PV resize as a tech preview in 4.4 is too late for ask at this point as we are 2 weeks before releasing 4.4 and we don't want to put this date at risk in case we will find more bugs around that area.

This needs to be addressed in 4.4

Comment 19 Jose A. Rivera 2020-04-15 14:14:22 UTC
I respectfully disagree and will not be giving devel_ack+. As you said, we are two weeks away from releasing 4.4 and don't want to make such a big change to the code for something that is IMO as trivial as this. The resize won't work as-is, even if you configure a StorageClass to use it it will be ignored by the platform.

Comment 20 Raz Tamir 2020-04-16 14:05:28 UTC
Thanks Jose,

I have a few questions:
1) Comment #9 states that pv resize is a tech preview in 4.3 (which is not) - does it mean this feature will work from UI? I know that we reported a bg to disable it and it was actually passed verification (by me)
2) If this staying with use until 4.5, does it mean the feature is again enabled in 4.4?
3) How easy is it to perform PV resize at this point? - I hope your answer will be impossible as it shouldn't be part of any release before 4.5

Comment 21 Humble Chirammal 2020-04-17 17:55:23 UTC
(In reply to Jose A. Rivera from comment #19)
> I respectfully disagree and will not be giving devel_ack+. As you said, we
> are two weeks away from releasing 4.4 and don't want to make such a big
> change to the code for something that is IMO as trivial as this. The resize
> won't work as-is, even if you configure a StorageClass to use it it will be
> ignored by the platform.

Above is not correct. If you adjust the storage class as mentioned earlier, resize *will*
work. I dont see any reason for its to NOT work in an OCS 4.4 setup. With that,
we are unwantedly opening up a slot for admins/users to try something. Yes, 
we can document it, but I dont know how effective it is?. 

Regarding this features' support state in future versions like OCP/OCS 4.5, even though it is Beta' at this stage, there is uncertainty on when this will be GA'd. 
There are some corner issues ( for example, you can not cancel a `failed` resize operation..etc) which 
upstream is still chasing on and trying to reach consensus, which has *not* yet happened.
So we never know when this will be promoted to GA at all. With all that, my take here is
this sidecar has to be disabled in OCS 4.4.

Comment 22 Michael Adam 2020-04-21 08:09:00 UTC
(In reply to Humble Chirammal from comment #21)
> (In reply to Jose A. Rivera from comment #19)
> > I respectfully disagree and will not be giving devel_ack+. As you said, we
> > are two weeks away from releasing 4.4 and don't want to make such a big
> > change to the code for something that is IMO as trivial as this. The resize
> > won't work as-is, even if you configure a StorageClass to use it it will be
> > ignored by the platform.
> 
> Above is not correct. If you adjust the storage class as mentioned earlier,
> resize *will*
> work.

That's the point with "as is": I understand that as "out of the box".
AFAIK, in OCS 4.4, we only support the default storage classes that are generated at install.
And those storage classes don't have the resize enabled.

So it does not work out of the box. You have to change the storageclass to enable it.
With that, I think it's safe to leave this as is.

I would like to close this bug as WONTFIX.

@Raz, @Elad?


> I dont see any reason for its to NOT work in an OCS 4.4 setup. With
> that,
> we are unwantedly opening up a slot for admins/users to try something. Yes, 
> we can document it, but I dont know how effective it is?. 
> 
> Regarding this features' support state in future versions like OCP/OCS 4.5,
> even though it is Beta' at this stage, there is uncertainty on when this
> will be GA'd. 
> There are some corner issues ( for example, you can not cancel a `failed`
> resize operation..etc) which 
> upstream is still chasing on and trying to reach consensus, which has *not*
> yet happened.
> So we never know when this will be promoted to GA at all. With all that, my
> take here is
> this sidecar has to be disabled in OCS 4.4.

Comment 23 Raz Tamir 2020-04-21 08:19:57 UTC
Hi Michael,

I don't understand why this is so important to leave this as part of 4.4?
Why we can't just disable this sidecar?

Comment 24 Jose A. Rivera 2020-04-24 13:45:24 UTC
To start, we cannot simply do a configuration to disable the sidecar, this required code change in the Ceph-CSI drivers. The only configuration we can do is not specify a container image, but then it would default to the upstream version: https://github.com/rook/rook/blob/master/pkg/operator/ceph/csi/spec.go#L293-L299

One more issue is that this is not something we want to do in the upstream. We don't want to disable the resizer sidecar just because the downstream product doesn't want it, so it would have to be a downstream-only patch. Even if we do that, it sounds like it would be a tricky code change to do in the Ceph-CSI drivers, and it may be a big enough change to introduce unwanted risk.

Madhu, Humble, does that sound fair?

And our point still stands: this is a non-issue. Nothing is being affected, and the feature can't really be used even if they try.

Comment 25 Madhu Rajanna 2020-04-24 14:01:41 UTC
(In reply to Jose A. Rivera from comment #24)
> To start, we cannot simply do a configuration to disable the sidecar, this
> required code change in the Ceph-CSI drivers. The only configuration we can
> do is not specify a container image, but then it would default to the
> upstream version:
> https://github.com/rook/rook/blob/master/pkg/operator/ceph/csi/spec.go#L293-
> L299
> 
> One more issue is that this is not something we want to do in the upstream.
> We don't want to disable the resizer sidecar just because the downstream
> product doesn't want it, so it would have to be a downstream-only patch.
> Even if we do that, it sounds like it would be a tricky code change to do in
> the Ceph-CSI drivers, and it may be a big enough change to introduce
> unwanted risk.
> 
Yes, to disable it we have to do a lot of code changes in cephcsi(specific to downstream).

if we want to really disable it better to remove the deployment on resizer sidecar in rook downstream

the code changes will be minimal in rook compare to cephcsi.


> Madhu, Humble, does that sound fair?
> 
> And our point still stands: this is a non-issue. Nothing is being affected,
> and the feature can't really be used even if they try.

Comment 26 Humble Chirammal 2020-04-24 14:27:04 UTC
(In reply to Jose A. Rivera from comment #24)
> To start, we cannot simply do a configuration to disable the sidecar, this
> required code change in the Ceph-CSI drivers. The only configuration we can
> do is not specify a container image, but then it would default to the
> upstream version:
> https://github.com/rook/rook/blob/master/pkg/operator/ceph/csi/spec.go#L293-
> L299

Jose, I dont think we ever considered or pointing to disable it in the code path of 'Ceph CSI' 
or it shouldnt be way as long as the intention here is to 'block' the request reaching the resizer and beyond. 
It was not the method we followed when we disabled snapshotter side car too. The 
change was in rook template and OCS operator to set the knob.

> 
> One more issue is that this is not something we want to do in the upstream.
> We don't want to disable the resizer sidecar just because the downstream
> product doesn't want it, so it would have to be a downstream-only patch.

yeah, indeed thats the plan if we have ack here.

> Even if we do that, it sounds like it would be a tricky code change to do in
> the Ceph-CSI drivers, and it may be a big enough change to introduce
> unwanted risk.
> 
> Madhu, Humble, does that sound fair?

As mentioned above, disabling in CSI is not the way we are referring to.

> 
> And our point still stands: this is a non-issue. Nothing is being affected,
> and the feature can't really be used even if they try.

As referenced in my previous comment, if admin wants 3 extra params can enable it for him. But, yeah 
he is going out of support knowingly.

Comment 27 Michael Adam 2020-04-28 10:41:42 UTC
(In reply to Raz Tamir from comment #23)
> Hi Michael,
> 
> I don't understand why this is so important to leave this as part of 4.4?
> Why we can't just disable this sidecar?

It is not important to keep it in 4.4.
The point is (summarizing the above comments):

1) It is not easy to disable the sidecar, it would mean several possibly bigger code changes across various components.
2) These code changes are only going to be downstream, which is something that we want to usually avoid, because it will make future backports a lot more difficult.

Such bigger, downstream-only patches are risky. So we do not want to keep the sidecar, but we want to avoid the risk and work.

So yes, the functionality would be there, but in order to use it, the customer has to consciously and actively *edit the storage class* to an unsupported state.
I don't see that we have a severe problem here.

Comment 28 Raz Tamir 2020-05-05 07:15:08 UTC
ok,

removing the blocker flag

Comment 29 Michael Adam 2020-05-06 09:55:01 UTC
Moving to 4.5 for a final discussion / decision what to do in 4.5+ :

I don't think we should ever do this as

1) the patch is not trivial
2) the patch will be downstream only
    ==> I.e. further patch backports will potentially be a lot more work
3) for the time being at least, we are protected by only supporting the default created storage classes and defaulting to resize not supported

==> I suggest to close this as WONTFIX

@Humble, @Madhu - what do you think?

Comment 31 Humble Chirammal 2020-05-06 11:12:18 UTC
(In reply to Michael Adam from comment #29)
> Moving to 4.5 for a final discussion / decision what to do in 4.5+ :
> 
> I don't think we should ever do this as
> 
> 1) the patch is not trivial
> 2) the patch will be downstream only
>     ==> I.e. further patch backports will potentially be a lot more work
> 3) for the time being at least, we are protected by only supporting the
> default created storage classes and defaulting to resize not supported
> 
> ==> I suggest to close this as WONTFIX
> 
> @Humble, @Madhu - what do you think?

If our support statement is, we support *only* the *default* storage class created by the "ocs-operator" ( without any manual tweaking), we are good.

We don't need to address this in OCS 4.5.

https://github.com/openshift/ocs-operator/pull/488

Above PR could add the required secret to the default SC, but still `allowVolumeExpansion` is `false` by default.

Comment 32 Yaniv Kaul 2020-06-24 14:56:14 UTC
Closing this BZ - we want the resize functioality, TP or not, in 4.5.


Note You need to log in before you can comment on or make changes to this bug.