Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[manila-csi-plugin] Updated external-snapshotter to v2.1.1 and external-provisioner to v2.0.2 #1205

Merged
merged 8 commits into from
Oct 1, 2020

Conversation

gman0
Copy link
Member

@gman0 gman0 commented Sep 14, 2020

What this PR does / why we need it:
This PR bumps csi-manila's the external-snapshotter to v2.1.1 and external-provisioner to v2.0.2. This is a backwards incompatible change.

Which issue this PR fixes(if applicable):
fixes #1194 , #1232

Special notes for reviewers:

Release note:

manila-csi-plugin: Updated external-provisioner to v2.0.2 and external-snapshotter to v2.1.1

@k8s-ci-robot k8s-ci-robot added release-note Denotes a PR that will be considered when it comes time to generate release notes. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. size/M Denotes a PR that changes 30-99 lines, ignoring generated files. labels Sep 14, 2020
@theopenlab-ci
Copy link

theopenlab-ci bot commented Sep 14, 2020

Build succeeded.

@theopenlab-ci
Copy link

theopenlab-ci bot commented Sep 14, 2020

Build succeeded.

@theopenlab-ci
Copy link

theopenlab-ci bot commented Sep 14, 2020

Build failed.

@brtkwr
Copy link
Contributor

brtkwr commented Sep 15, 2020

This definitely needs a chart major version bump since its not backward compatible.

@dims dims removed their request for review September 17, 2020 12:51
@gman0 gman0 force-pushed the csimanila-csisnapshotter-v2 branch from f94c60c to 70d2425 Compare September 20, 2020 10:02
@theopenlab-ci
Copy link

theopenlab-ci bot commented Sep 20, 2020

Build succeeded.

@theopenlab-ci
Copy link

theopenlab-ci bot commented Sep 20, 2020

Build succeeded.

@gman0
Copy link
Member Author

gman0 commented Sep 20, 2020

Lint and Test Charts / Helm chart (pull_request) Failing

Installing chart 'openstack-manila-csi => (version: "1.2.0", path: "charts/manila-csi-plugin")'...
Creating namespace 'manila-csi-plugin-zgpx4pgefw'...
namespace/manila-csi-plugin-zgpx4pgefw created
Error: ClusterRole.rbac.authorization.k8s.io "manila-csi-plugin-zgpx4pgefw-openstack-manila-csi-nodeplugin-rules" is invalid: metadata.labels: Invalid value: "rbac.manila.csi.openstack.org/aggregate-to-manila-csi-plugin-zgpx4pgefw-openstack-manila-csi-nodeplugin": name part must be no more than 63 characters

@k8s-ci-robot k8s-ci-robot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Sep 23, 2020
@gman0 gman0 changed the title [DNM] [manila-csi-plugin] Updated external-snapshotter to v2.1.1 [DNM] [manila-csi-plugin] Updated external-snapshotter to v2.1.1 and external-provisioner to v2.0.2 Sep 28, 2020
external-provisioner needs VolumeSnapshots from snapshot.storage.k8s.io
with GET,LIST verbs for provisioning volumes from snapshots
This is necessary in order to support v1beta1 snapshots as a data source.
@gman0 gman0 force-pushed the csimanila-csisnapshotter-v2 branch from f543509 to 1ad2a15 Compare September 28, 2020 13:31
@k8s-ci-robot k8s-ci-robot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Sep 28, 2020
@theopenlab-ci
Copy link

theopenlab-ci bot commented Sep 28, 2020

Build succeeded.

@theopenlab-ci
Copy link

theopenlab-ci bot commented Sep 28, 2020

Build succeeded.

@theopenlab-ci
Copy link

theopenlab-ci bot commented Sep 28, 2020

Build succeeded.

@gman0 gman0 changed the title [DNM] [manila-csi-plugin] Updated external-snapshotter to v2.1.1 and external-provisioner to v2.0.2 [manila-csi-plugin] Updated external-snapshotter to v2.1.1 and external-provisioner to v2.0.2 Sep 30, 2020
@gman0
Copy link
Member Author

gman0 commented Sep 30, 2020

Copy link
Contributor

@brtkwr brtkwr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@brtkwr
Copy link
Contributor

brtkwr commented Sep 30, 2020

Do you intend to backport to release-1.19 branch?

@gman0
Copy link
Member Author

gman0 commented Sep 30, 2020

@brtknr I believe only bug fixes are eligible for backporting.

@ramineni would this qualify as a bug fix?

There are at least two scenarios where this might be considered as a bug:

  • cinder-csi and manila-csi cannot be deployed in a cluster at the same time. external-snapshotter v1 installs its own CRDs and those are not compatible with v2's.
  • manila-csi depends on cephfs-csi for CephFS shares. Latest cephfs-csi release deploys snapshotter v2, which means we're in the same situation as in the bulletpoint above. This has, regrettably, gone unnoticed in our CI as we're only testing with NFS - perhaps this should be improved as well.

Copy link
Contributor

@gouthampacha gouthampacha left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/lgtm

@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Sep 30, 2020
@gouthampacha
Copy link
Contributor

@ramineni would this qualify as a bug fix?

There are at least two scenarios where this might be considered as a bug:

  • cinder-csi and manila-csi cannot be deployed in a cluster at the same time. external-snapshotter v1 installs its own CRDs and those are not compatible with v2's.
  • manila-csi depends on cephfs-csi for CephFS shares. Latest cephfs-csi release deploys snapshotter v2, which means we're in the same situation as in the bulletpoint above. This has, regrettably, gone unnoticed in our CI as we're only testing with NFS - perhaps this should be improved as well.

I concur, realistically we'll see a lot of users that want to use cinder-csi and manila-csi simultaneously, and this is a valuable bug fix for the 1.19 branch.

@tombarron
Copy link
Contributor

/lgtm
/approve

@ramineni
Copy link
Contributor

ramineni commented Oct 1, 2020

@gman0 @gouthampacha Few clarifications

  1. I believe snapshot feature had some issues when we updated k8s to 1.19 . Does release-1.19 have workable snapshot feature?
  2. Is cephfs-csi is a seperate csi driver? And manila csi driver supports Cephfs shares now? I dont see it added in 1.19 release notes, I thought its not supported till 1.18.

And on the backport to release1.19.

  1. Its only a version bump of sidecars , so I'm ok to backport because of 2 reasons
    * helm charts are only released on release-1.19 branch, so incorporating to 1.19 would trigger stable chart release which could be used.
    * And I agree with @gman0 , it would be messy to deploy both csi drivers due to backward incompatible changes.

I believe you understand that , even if we backport we dont do minor releases of release branch, only we push updated docker image of respective plugin , which in this case is not needed as no code changes. Only helm release should suffice

@gman0
Copy link
Member Author

gman0 commented Oct 1, 2020

@ramineni

Is cephfs-csi is a seperate csi driver? And manila csi driver supports Cephfs shares now? I dont see it added in 1.19 release notes, I thought its not supported till 1.18.

Yes, it is a separate CSI driver https://github.com/ceph/ceph-csi . manila-csi has supported CephFS shares since the very beginning, see this PR #536. It also explains why/how we rely on 3rd party CSI drivers.

We still don't support CREATE_DELETE_SNAPSHOT for CephFS shares though.

I believe snapshot feature had some issues when we updated k8s to 1.19 . Does release-1.19 have workable snapshot feature?

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.0", GitCommit:"e19964183377d0ec2052d1f1fa930c4d7575bd50", GitTreeState:"clean", BuildDate:"2020-09-14T09:55:54Z", GoVersion:"go1.15.2", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.0", GitCommit:"e19964183377d0ec2052d1f1fa930c4d7575bd50", GitTreeState:"clean", BuildDate:"2020-09-08T11:12:27Z", GoVersion:"go1.15", Compiler:"gc", Platform:"linux/amd64"}
$ kubectl describe pods | grep "Image:"
    Image:         quay.io/k8scsi/nfsplugin:canary
    Image:         quay.io/k8scsi/snapshot-controller:v2.0.1
    Image:         quay.io/k8scsi/csi-provisioner:v2.0.2
    Image:         quay.io/k8scsi/csi-snapshotter:v2.1.1
    Image:         k8scloudprovider/manila-csi-plugin:v1.19.0
    Image:         quay.io/k8scsi/csi-node-driver-registrar:v1.1.0
    Image:         k8scloudprovider/manila-csi-plugin:v1.19.0
...
$ kubectl get volumesnapshot
NAME                 READYTOUSE   SOURCEPVC           SOURCESNAPSHOTCONTENT   RESTORESIZE   SNAPSHOTCLASS    SNAPSHOTCONTENT                                    CREATIONTIME   AGE
new-nfs-share-snap   true         new-nfs-share-pvc                           1Gi           csi-manila-nfs   snapcontent-70e66d75-fd64-4e3b-a804-f218a9eb0f8e   3m25s          3m26s
...
$ kubectl describe pvc new-nfs-share-snap-restore
Name:          new-nfs-share-snap-restore
Namespace:     default
StorageClass:  csi-manila-nfs
Status:        Bound
Volume:        pvc-b34618cc-174c-4087-b8b5-bcfbcc55966a
Labels:        <none>
Annotations:   pv.kubernetes.io/bind-completed: yes
               pv.kubernetes.io/bound-by-controller: yes
               volume.beta.kubernetes.io/storage-provisioner: nfs.manila.csi.openstack.org
Finalizers:    [kubernetes.io/pvc-protection]
Capacity:      1Gi
Access Modes:  RWX
VolumeMode:    Filesystem
DataSource:
  APIGroup:  snapshot.storage.k8s.io
  Kind:      VolumeSnapshot
  Name:      new-nfs-share-snap
Mounted By:  new-nfs-share-snap-restore-pod
Events:
  Type    Reason                 Age                 From                                                                                                          Message
  ----    ------                 ----                ----                                                                                                          -------
  Normal  Provisioning           3m                  nfs.manila.csi.openstack.org_ss-openstack-manila-csi-controllerplugin-0_f062a348-dece-4a66-a52a-b37b76a06c21  External provisioner is provisioning volume for claim "default/new-nfs-share-snap-restore"
  Normal  ExternalProvisioning   2m57s (x3 over 3m)  persistentvolume-controller                                                                                   waiting for a volume to be created, either by external provisioner "nfs.manila.csi.openstack.org" or manually created by system administrator
  Normal  ProvisioningSucceeded  2m53s               nfs.manila.csi.openstack.org_ss-openstack-manila-csi-controllerplugin-0_f062a348-dece-4a66-a52a-b37b76a06c21  Successfully provisioned volume pvc-b34618cc-174c-4087-b8b5-bcfbcc55966a

I've applied the changes from this PR to v1.19.0 chart and it seems to work fine.

I believe you understand that , even if we backport we dont do minor releases of release branch, only we push updated docker image of respective plugin , which in this case is not needed as no code changes. Only helm release should suffice

Yes, chart release is what we want and is sufficient.

@ramineni
Copy link
Contributor

ramineni commented Oct 1, 2020

@gman0 Thanks for clarifications.

I've applied the changes from this PR to v1.19.0 chart and it seems to work fine.

No, I meant without this PR , does snapshot feature work on v1.19.0

@brtkwr
Copy link
Contributor

brtkwr commented Oct 1, 2020

cinder-csi and manila-csi cannot be deployed in a cluster at the same time. external-snapshotter v1 installs its own CRDs and those are not compatible with v2's.
manila-csi depends on cephfs-csi for CephFS shares. Latest cephfs-csi release deploys snapshotter v2, which means we're in the same situation as in the bulletpoint above. This has, regrettably, gone unnoticed in our CI as we're only testing with NFS - perhaps this should be improved as well.

Based on the points above, not very well.

@gman0
Copy link
Member Author

gman0 commented Oct 1, 2020

@ramineni If there are only v1alpha1 snapshot CRDs installed in the cluster then yes. But there are cases where this is no longer true.

@ramineni
Copy link
Contributor

ramineni commented Oct 1, 2020

/approve

@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: ramineni, tombarron

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot k8s-ci-robot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Oct 1, 2020
@ramineni
Copy link
Contributor

ramineni commented Oct 1, 2020

@gman0 you can cherry-pick change to 1.19

@gman0
Copy link
Member Author

gman0 commented Oct 1, 2020

@ramineni Will do, thanks! Thanks guys for the feedback.

@k8s-ci-robot k8s-ci-robot merged commit b59a363 into kubernetes:master Oct 1, 2020
gman0 added a commit to gman0/cloud-provider-openstack that referenced this pull request Oct 1, 2020
…al-provisioner to v2.0.2 (kubernetes#1205)

* updated k8s manifests

* updated Helm chart

* updated examples

* updated docs

* fixed RBAC rules

external-provisioner needs VolumeSnapshots from snapshot.storage.k8s.io
with GET,LIST verbs for provisioning volumes from snapshots

* bumped chart's major version due to backwards incompatibility

* apiGroup is not versioned

* updated external-provisioner to v2.0.2

This is necessary in order to support v1beta1 snapshots as a data source.

Cherry-picked from b59a363
k8s-ci-robot pushed a commit that referenced this pull request Oct 5, 2020
…al-provisioner to v2.0.2 (#1205) (#1255)

* updated k8s manifests

* updated Helm chart

* updated examples

* updated docs

* fixed RBAC rules

external-provisioner needs VolumeSnapshots from snapshot.storage.k8s.io
with GET,LIST verbs for provisioning volumes from snapshots

* bumped chart's major version due to backwards incompatibility

* apiGroup is not versioned

* updated external-provisioner to v2.0.2

This is necessary in order to support v1beta1 snapshots as a data source.

Cherry-picked from b59a363
powellchristoph pushed a commit to powellchristoph/cloud-provider-openstack that referenced this pull request Jan 19, 2022
…al-provisioner to v2.0.2 (kubernetes#1205)

* updated k8s manifests

* updated Helm chart

* updated examples

* updated docs

* fixed RBAC rules

external-provisioner needs VolumeSnapshots from snapshot.storage.k8s.io
with GET,LIST verbs for provisioning volumes from snapshots

* bumped chart's major version due to backwards incompatibility

* apiGroup is not versioned

* updated external-provisioner to v2.0.2

This is necessary in order to support v1beta1 snapshots as a data source.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Indicates a PR has been approved by an approver from all required OWNERS files. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. lgtm "Looks good to me", indicates that a PR is ready to be merged. release-note Denotes a PR that will be considered when it comes time to generate release notes. size/M Denotes a PR that changes 30-99 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[manila-csi-plugin] Update csi-snapshotter sidecar to v2
6 participants