{"id":18513169,"url":"https://github.com/vmware-archive/cloud-director-named-disk-csi-driver","last_synced_at":"2026-04-04T15:27:14.415Z","repository":{"id":37937415,"uuid":"362260714","full_name":"vmware/cloud-director-named-disk-csi-driver","owner":"vmware","description":"Container Storage Interface (CSI) driver for VMware Cloud Director","archived":false,"fork":false,"pushed_at":"2024-04-12T22:41:22.000Z","size":13971,"stargazers_count":27,"open_issues_count":15,"forks_count":31,"subscribers_count":15,"default_branch":"main","last_synced_at":"2024-04-13T21:22:03.597Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vmware.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE-OF-CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2021-04-27T21:52:45.000Z","updated_at":"2024-04-19T13:40:42.026Z","dependencies_parsed_at":"2023-10-23T21:28:43.973Z","dependency_job_id":"376dcddb-9fb3-4378-bf95-9b351ed59032","html_url":"https://github.com/vmware/cloud-director-named-disk-csi-driver","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vmware%2Fcloud-director-named-disk-csi-driver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vmware%2Fcloud-director-named-disk-csi-driver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vmware%2Fcloud-director-named-disk-csi-driver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vmware%2Fcloud-director-named-disk-csi-driver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vmware","download_url":"https://codeload.github.com/vmware/cloud-director-named-disk-csi-driver/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247992893,"owners_count":21029999,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-06T15:36:43.117Z","updated_at":"2026-04-04T15:27:12.322Z","avatar_url":"https://github.com/vmware.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Container Storage Interface (CSI) driver for VMware Cloud Director Named Independent Disks\nThis repository contains the source code and build methods to build a Kubernetes CSI driver that helps provision [VMware Cloud Director Named Independent Disks](https://docs.vmware.com/en/VMware-Cloud-Director/10.3/VMware-Cloud-Director-Tenant-Portal-Guide/GUID-8F8BFCD3-071A-4E45-BAC0-A9B78F2C19CE.html) as a storage solution for Kubernetes Applications. This uses VMware Cloud Director API for functionality and hence needs an appropriate VMware Cloud Director Installation. This CSI driver will help enable common scenarios with persistent volumes and stateful-sets using VMware Cloud Director Shareable Named Disks.\n\nThe version of the VMware Cloud Director API and Installation that are compatible for a given CSI container image are provided in the following compatibility matrix:\n\n| CSI Version | CSE Version | VMware Cloud Director API |                              VMware Cloud Director Installation                              |                                                                                                                                                                                                                                    Notes                                                                                                                                                                                                                                     | Kubernetes Versions                                                                     |                                             docs                                              |\n|:-----------:|:-----------:|:-------------------------:|:--------------------------------------------------------------------------------------------:|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|:----------------------------------------------------------------------------------------|:---------------------------------------------------------------------------------------------:|\n|    main     |   4.2.0+    |           37.2+           |                                           10.4.2+                                            |                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | \u003cul\u003e\u003cli\u003e1.27\u003c/li\u003e\u003cli\u003e1.26\u003c/li\u003e\u003cli\u003e1.25\u003c/li\u003e\u003cli\u003e1.24\u003c/li\u003e\u003cli\u003e1.23\u003c/li\u003e\u003cli\u003e1.22\u003c/li\u003e\u003c/ul\u003e |  [CSI `main` docs](https://github.com/vmware/cloud-director-named-disk-csi-driver/tree/main)  |\n|    1.5.0    |   4.2.0+    |           36.0+           |                                          10.3.3.4+                                           |                                                                                                                                                                                 \u003cul\u003e\u003cli\u003eBump gopkg.in/yaml.v3 version (#221)\u003c/li\u003e\u003cli\u003eChanges to testing framework (multiple PR's)\u003c/li\u003e\u003c/ul\u003e                                                                                                                                                                                  | \u003cul\u003e\u003cli\u003e1.27\u003c/li\u003e\u003cli\u003e1.26\u003c/li\u003e\u003cli\u003e1.25\u003c/li\u003e\u003cli\u003e1.24\u003c/li\u003e\u003cli\u003e1.23\u003c/li\u003e\u003cli\u003e1.22\u003c/li\u003e\u003c/ul\u003e |  [CSI `main` docs](https://github.com/vmware/cloud-director-named-disk-csi-driver/tree/main)  |\n|    1.4.1    |    4.1.0    |           36.0+           |                                          10.3.3.4+                                           |                                                                                                                                                                                 \u003cul\u003e\u003cli\u003eBump gopkg.in/yaml.v3 version (#221)\u003c/li\u003e\u003cli\u003eChanges to testing framework (multiple PR's)\u003c/li\u003e\u003c/ul\u003e                                                                                                                                                                                  | \u003cul\u003e\u003cli\u003e1.25\u003c/li\u003e\u003cli\u003e1.24\u003c/li\u003e\u003cli\u003e1.23\u003c/li\u003e\u003cli\u003e1.22\u003c/li\u003e\u003cli\u003e1.21\u003c/li\u003e\u003c/ul\u003e              | [CSI `1.4.z` docs](https://github.com/vmware/cloud-director-named-disk-csi-driver/tree/1.4.z) |\n|    1.4.0    |    4.1.0    |           36.0+           |                                          10.3.3.4+                                           | \u003cul\u003e\u003cli\u003eSupport for packaging CSI CRS in a container for CSE airgap workflow\u003c/li\u003e\u003cli\u003eTesting Framework added\u003c/li\u003e\u003cli\u003eRun CSI only on Control-plane Nodes\u003c/li\u003e\u003cli\u003eChange CSI controller from stateful-set to deployment\u003c/li\u003e\u003cli\u003eSupport newer capvcdCluster RDE version\u003c/li\u003e\u003cli\u003eFix issues in XFS mount (support XFS)\u003c/li\u003e\u003cli\u003eSet description of named disks as ClusterID\u003c/li\u003e\u003cli\u003eupgrade golang version to 1.19\u003c/li\u003e\u003cli\u003eoptimize image size of CSI container image\u003c/li\u003e\u003c/ul\u003e | \u003cul\u003e\u003cli\u003e1.25\u003c/li\u003e\u003cli\u003e1.24\u003c/li\u003e\u003cli\u003e1.23\u003c/li\u003e\u003cli\u003e1.22\u003c/li\u003e\u003cli\u003e1.21\u003c/li\u003e\u003c/ul\u003e              | [CSI `1.4.z` docs](https://github.com/vmware/cloud-director-named-disk-csi-driver/tree/1.4.z) |\n|    1.3.2    |    4.0.z    |           36.0+           | 10.3.1+ \u003cbr/\u003e(10.3.1 needs hot-patch to prevent VCD cell crashes in multi-cell environments) |                                                                         \u003cul\u003e\u003cli\u003eAdd XFS filesystem support (Fixes [#122](https://github.com/vmware/cloud-director-named-disk-csi-driver/issues/122)) \u003c/li\u003e\u003cli\u003eUpdated CSI container registry references to use 'registry.k8s.io' ([k8s.gcr.io freeze announcement](https://kubernetes.io/blog/2023/02/06/k8s-gcr-io-freeze-announcement)) \u003c/li\u003e\u003c/ul\u003e                                                                         | \u003cul\u003e\u003cli\u003e1.22\u003c/li\u003e\u003cli\u003e1.21\u003c/li\u003e\u003cli\u003e1.20\u003c/li\u003e\u003cli\u003e1.19\u003c/li\u003e\u003c/ul\u003e                           |  [CSI 1.3.z docs](https://github.com/vmware/cloud-director-named-disk-csi-driver/tree/1.3.z)  |\n|    1.3.1    |    4.0.0    |           36.0+           | 10.3.1+ \u003cbr/\u003e(10.3.1 needs hot-patch to prevent VCD cell crashes in multi-cell environments) |                                                                                                                                                                        \u003cul\u003e\u003cli\u003eFixed issue where CSI failed to mount persistent volume to node if SCSI Buses inside node are not rescanned \u003c/li\u003e\u003c/ul\u003e                                                                                                                                                                        | \u003cul\u003e\u003cli\u003e1.22\u003c/li\u003e\u003cli\u003e1.21\u003c/li\u003e\u003cli\u003e1.20\u003c/li\u003e\u003cli\u003e1.19\u003c/li\u003e\u003c/ul\u003e                           |  [CSI 1.3.z docs](https://github.com/vmware/cloud-director-named-disk-csi-driver/tree/1.3.z)  |\n|    1.3.0    |    4.0.0    |           36.0+           | 10.3.1+ \u003cbr/\u003e(10.3.1 needs hot-patch to prevent VCD cell crashes in multi-cell environments) |                                                                                                                                                                      \u003cul\u003e\u003cli\u003eSupport for fsGroup\u003c/li\u003e\u003cli\u003eSupport for volume metrics\u003c/li\u003e\u003cli\u003eAdded secret-based way to get cluster-id for CRS\u003c/li\u003e\u003c/ul\u003e                                                                                                                                                                       | \u003cul\u003e\u003cli\u003e1.22\u003c/li\u003e\u003cli\u003e1.21\u003c/li\u003e\u003cli\u003e1.20\u003c/li\u003e\u003cli\u003e1.19\u003c/li\u003e\u003c/ul\u003e                           |  [CSI 1.3.z docs](https://github.com/vmware/cloud-director-named-disk-csi-driver/tree/1.3.z)  |\n|    1.2.1    |    3.1.x    |           36.0+           | 10.3.1+ \u003cbr/\u003e(10.3.1 needs hot-patch to prevent VCD cell crashes in multi-cell environments) |                                                                         \u003cul\u003e\u003cli\u003eAdd XFS filesystem support (Fixes [#122](https://github.com/vmware/cloud-director-named-disk-csi-driver/issues/122)) \u003c/li\u003e\u003cli\u003eUpdated CSI container registry references to use 'registry.k8s.io' ([k8s.gcr.io freeze announcement](https://kubernetes.io/blog/2023/02/06/k8s-gcr-io-freeze-announcement)) \u003c/li\u003e\u003c/ul\u003e                                                                         | \u003cul\u003e\u003cli\u003e1.22\u003c/li\u003e\u003cli\u003e1.21\u003c/li\u003e\u003cli\u003e1.20\u003c/li\u003e\u003cli\u003e1.19\u003c/li\u003e\u003c/ul\u003e                           |  [CSI 1.2.x docs](https://github.com/vmware/cloud-director-named-disk-csi-driver/tree/1.2.x)  |\n|    1.2.0    |    3.1.x    |           36.0+           | 10.3.1+ \u003cbr/\u003e(10.3.1 needs hot-patch to prevent VCD cell crashes in multi-cell environments) |                                                                                                                                                                                            \u003cul\u003e\u003cli\u003eAdd support for Kubernetes 1.22\u003c/li\u003e\u003cli\u003eSmall VCD url parsing fixes\u003c/li\u003e\u003c/ul\u003e                                                                                                                                                                                             | \u003cul\u003e\u003cli\u003e1.22\u003c/li\u003e\u003cli\u003e1.21\u003c/li\u003e\u003cli\u003e1.20\u003c/li\u003e\u003cli\u003e1.19\u003c/li\u003e\u003c/ul\u003e                           |  [CSI 1.2.x docs](https://github.com/vmware/cloud-director-named-disk-csi-driver/tree/1.2.x)  |\n|    1.1.1    |    3.1.x    |           36.0+           | 10.3.1+ \u003cbr/\u003e(10.3.1 needs hot-patch to prevent VCD cell crashes in multi-cell environments) |                                                                                                                                                                       \u003cul\u003e\u003cli\u003eFixed refresh-token based authentication issue observed when VCD cells are fronted by a load balancer (Fixes #26).\u003c/ul\u003e                                                                                                                                                                        | \u003cul\u003e\u003cli\u003e1.21\u003c/li\u003e\u003cli\u003e1.20\u003c/li\u003e\u003cli\u003e1.19\u003c/li\u003e\u003c/ul\u003e                                        |  [CSI 1.1.x docs](https://github.com/vmware/cloud-director-named-disk-csi-driver/tree/1.1.x)  |\n|    1.1.0    |    3.1.x    |           36.0+           | 10.3.1+ \u003cbr/\u003e(10.3.1 needs hot-patch to prevent VCD cell crashes in multi-cell environments) |                                                                                                                                                                                          \u003cul\u003e\u003cli\u003eRemove legacy Kubernetes dependencies.\u003c/li\u003e\u003cli\u003eSupport for CAPVCD RDEs.\u003c/li\u003e\u003c/ul\u003e                                                                                                                                                                                           | \u003cul\u003e\u003cli\u003e1.21\u003c/li\u003e\u003cli\u003e1.20\u003c/li\u003e\u003cli\u003e1.19\u003c/li\u003e\u003c/ul\u003e                                        |  [CSI 1.1.x docs](https://github.com/vmware/cloud-director-named-disk-csi-driver/tree/1.1.x)  |\n|    1.0.0    |    3.1.x    |           36.0+           | 10.3.1+ \u003cbr/\u003e(10.3.1 needs hot-patch to prevent VCD cell crashes in multi-cell environments) |                                                                                                                                                                                                              First cut with support for Named Independent Disks                                                                                                                                                                                                              | \u003cul\u003e\u003cli\u003e1.21\u003c/li\u003e\u003cli\u003e1.20\u003c/li\u003e\u003cli\u003e1.19\u003c/li\u003e\u003c/ul\u003e                                        |  [CSI 1.0.0 docs](https://github.com/vmware/cloud-director-named-disk-csi-driver/tree/1.0.0)  |\n\nThis extension is intended to be installed into a Kubernetes cluster installed with [VMware Cloud Director](https://www.vmware.com/products/cloud-director.html) as a Cloud Provider, by a user that has the rights as described in the sections below.\n\n**cloud-director-named-disk-csi-driver** is distributed as a container image hosted at [Distribution Harbor](https://projects.registry.vmware.com) as `projects.registry.vmware.com/vmware-cloud-director/cloud-director-named-disk-csi-driver:\u003cCSI version\u003e`\n\nThis driver is in a GA state and will be supported in production.\n\nNote: This driver is not impacted by the Apache Log4j open source component vulnerability.\n\n## CSI Feature matrix\n|         Feature          | Support Scope                                                                                                                                                                                  |\n|:------------------------:|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n|       Storage Type       | \u003cul\u003eIndependent Shareable Named Disks of VCD\u003c/ul\u003e                                                                                                                                              |\n|       Provisioning       | \u003cul\u003e\u003cli\u003eStatic Provisioning\u003c/li\u003e\u003cli\u003eDynamic Provisioning\u003c/li\u003e\u003c/ul\u003e                                                                                                                             |\n|       Access Modes       | \u003cul\u003e\u003cli\u003eReadOnlyMany\u003c/li\u003e\u003cli\u003eReadWriteOnce\u003c/li\u003e\u003c/ul\u003e                                                                                                                                           |\n|          Volume          | \u003cul\u003eBlock\u003c/ul\u003e                                                                                                                                                                                 |\n|        VolumeMode        | \u003cul\u003e\u003cli\u003eFileSystem\u003c/li\u003e\u003cli\u003eBlock\u003c/li\u003e\u003c/ul\u003e                                                                                                                                                     |\n| Volume Expansion Support | \u003cul\u003e\u003cli\u003eOFFLINE\u003c/li\u003e\u003cli\u003eONLINE\u003c/li\u003e\u003c/ul\u003e                                                                                                                                                       |\n|         Topology         | \u003cul\u003e\u003cli\u003eStatic Provisioning: reuses VCD topology capabilities\u003c/li\u003e\u003cli\u003eDynamic Provisioning: places disk in the OVDC of the `ClusterAdminUser` based on the StorageProfile specified.\u003c/li\u003e\u003c/ul\u003e |\n\n## Terminology\n1. VCD: VMware Cloud Director\n2. ClusterAdminRole: This is the role that has enough rights to create and administer a Kubernetes Cluster in VCD. This role can be created by cloning the [vApp Author Role](https://docs.vmware.com/en/VMware-Cloud-Director/10.3/VMware-Cloud-Director-Tenant-Portal-Guide/GUID-BC504F6B-3D38-4F25-AACF-ED584063754F.html) and then adding the following rights (details on adding the rights below can be found in the [CSE docs](https://github.com/rocknes/container-service-extension/blob/cse_3_1_docs/docs/cse3_1/RBAC.md#additional-required-rights)):\n   1. Full Control: VMWARE:CAPVCDCLUSTER\n   2. Edit: VMWARE:CAPVCDCLUSTER\n   3. View: VMWARE:CAPVCDCLUSTER\n3. ClusterAdminUser: For CSI functionality, there needs to be a set of additional rights added to the `ClusterAdminRole` as described in the \"Additional Rights for CSI\" section below. The Kubernetes Cluster needs to be **created** by a user belonging to this **enhanced** `ClusterAdminRole`. For convenience, let us term this user as the `ClusterAdminUser`.\n\n## VMware Cloud Director Configuration\nIn this section, we assume that the Kubernetes cluster is created using the Container Service Extension 4.0. However, that is not a mandatory requirement.\n\n### Additional Rights for CSI\nThe `ClusterAdminUser` should have view access to the vApp containing the Kubernetes cluster. Since the `ClusterAdminUser` itself creates the cluster, it will have this access by default.\nThis `ClusterAdminUser` needs to be created from a `ClusterAdminRole` with the following additional rights:\n1. Access Control =\u003e\n   1. User =\u003e Manage user's own API TOKEN\n2. Organization VDC =\u003e Create a Shared Disk\n\n## Troubleshooting\n### Log VCD requests and responses\nExecute the following command to log HTTP requests to VCD and HTTP responses from VCD -\n```shell\nkubectl set env -n kube-system StatefulSet/csi-vcd-controllerplugin -c vcd-csi-plugin GOVCD_LOG_ON_SCREEN=true -oyaml\nkubectl set env -n kube-system DaemonSet/csi-vcd-nodeplugin -c vcd-csi-plugin GOVCD_LOG_ON_SCREEN=true -oyaml\n```\nOnce the above command is executed, CSI containers will start logging the HTTP requests and HTTP responses made via go-vcloud-director SDK.\nThe container logs can be obtained using the command `kubectl logs -n kube-system \u003cCSI pod name\u003e`\n\nTo stop logging the HTTP requests and responses from VCD, the following command can be executed -\n```shell\nkubectl set env -n kube-system Deployment/csi-vcd-controllerplugin -c vcd-csi-plugin GOVCD_LOG_ON_SCREEN-\nkubectl set env -n kube-system DaemonSet/csi-vcd-nodeplugin -c vcd-csi-plugin GOVCD_LOG_ON_SCREEN-\n```\n\n**NOTE: Please make sure to collect the logs before and after enabling the wire log. The above commands update the CSI controller Deployment and CSI node-plugin DaemonSet, which creates a new CSI pods. The logs present in the old pods will be lost.**\n\n### Upgrade CSI\n\nTo perform an upgrade of the Container Storage Interface (CSI) from versions v1.2.0, v1.2.1, v1.3.0, v1.3.1, and v1.3.2, it is recommended to follow the following steps:\n1. Remove the current StatefulSet:\n```shell\nkubectl delete statefulset -n kube-system csi-vcd-controllerplugin\n```\n2. Apply the CSI 1.4 Controller CRS:\n```shell\nkubectl apply -f https://github.com/vmware/cloud-director-named-disk-csi-driver/blob/1.4.z/manifests/csi-controller-crs.yaml\n```\n**NOTE:**\n\n1. These steps ensure a successful upgrade of CSI to the latest version (v1.4.0) and guarantee that the new CSI Deployment is properly installed within the Kubernetes environment.\n2. it is recommended not to manually delete any Persistent Volumes (PVs) or Persistent Volume Claims (PVCs) associated with a StatefulSet.\n\n## Contributing\nPlease see [CONTRIBUTING.md](CONTRIBUTING.md) for instructions on how to contribute.\n\n\n## License\n[Apache-2.0](LICENSE.txt)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvmware-archive%2Fcloud-director-named-disk-csi-driver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvmware-archive%2Fcloud-director-named-disk-csi-driver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvmware-archive%2Fcloud-director-named-disk-csi-driver/lists"}