diff --git a/roles/kubernetes-apps/csi_driver/vsphere/defaults/main.yml b/roles/kubernetes-apps/csi_driver/vsphere/defaults/main.yml
index d708019c3e654e6583150cba99ef4a283c37352b..95a2c5e9b8bae89d1aae140e115a1a1ffe8d450f 100644
--- a/roles/kubernetes-apps/csi_driver/vsphere/defaults/main.yml
+++ b/roles/kubernetes-apps/csi_driver/vsphere/defaults/main.yml
@@ -2,16 +2,17 @@
 external_vsphere_vcenter_port: "443"
 external_vsphere_insecure: "true"
 external_vsphere_kubernetes_cluster_id: "kubernetes-cluster-id"
-external_vsphere_version: "6.7u3"
+external_vsphere_version: "7.0u1"
 
-vsphere_syncer_image_tag: "v2.4.0"
-vsphere_csi_attacher_image_tag: "v3.3.0"
-vsphere_csi_controller: "v2.4.0"
-vsphere_csi_liveness_probe_image_tag: "v2.4.0"
-vsphere_csi_provisioner_image_tag: "v3.0.0"
-vsphere_csi_node_driver_registrar_image_tag: "v2.3.0"
-vsphere_csi_driver_image_tag: "v2.4.0"
-vsphere_csi_resizer_tag: "v1.3.0"
+vsphere_syncer_image_tag: "v2.5.1"
+vsphere_csi_attacher_image_tag: "v3.4.0"
+vsphere_csi_controller: "v2.5.1"
+vsphere_csi_liveness_probe_image_tag: "v2.6.0"
+vsphere_csi_provisioner_image_tag: "v3.1.0"
+vsphere_csi_snapshotter_image_tag: "v5.0.1"
+vsphere_csi_node_driver_registrar_image_tag: "v2.5.0"
+vsphere_csi_driver_image_tag: "v2.5.1"
+vsphere_csi_resizer_tag: "v1.4.0"
 
 vsphere_csi_controller_replicas: 1
 
diff --git a/roles/kubernetes-apps/csi_driver/vsphere/templates/vsphere-csi-controller-config.yml.j2 b/roles/kubernetes-apps/csi_driver/vsphere/templates/vsphere-csi-controller-config.yml.j2
index abf7841008b292fbdddbabd0293a5ed0a4a8e8fe..deb47d240bdd6c635b08712ce3e314864dbe6867 100644
--- a/roles/kubernetes-apps/csi_driver/vsphere/templates/vsphere-csi-controller-config.yml.j2
+++ b/roles/kubernetes-apps/csi_driver/vsphere/templates/vsphere-csi-controller-config.yml.j2
@@ -9,6 +9,11 @@ data:
   "improved-volume-topology": "true"
   "block-volume-snapshot": "false"
   "csi-windows-support": "false"
+{% if vsphere_csi_controller is version('v2.5.0', '>=') %}
+  "use-csinode-id": "true"
+  "pv-to-backingdiskobjectid-mapping": "false"
+  "cnsmgr-suspend-create-volume": "false"
+{% endif %}
 kind: ConfigMap
 metadata:
   name: internal-feature-states.csi.vsphere.vmware.com
diff --git a/roles/kubernetes-apps/csi_driver/vsphere/templates/vsphere-csi-controller-deployment.yml.j2 b/roles/kubernetes-apps/csi_driver/vsphere/templates/vsphere-csi-controller-deployment.yml.j2
index d6e8f6003eeabda23fba2d303d4f35da56159c33..a7ff4ffbf062a3e4d473fe845517440dc806f67b 100644
--- a/roles/kubernetes-apps/csi_driver/vsphere/templates/vsphere-csi-controller-deployment.yml.j2
+++ b/roles/kubernetes-apps/csi_driver/vsphere/templates/vsphere-csi-controller-deployment.yml.j2
@@ -75,10 +75,10 @@ spec:
             - "--v=4"
             - "--timeout=300s"
             - "--csi-address=$(ADDRESS)"
-            - "--leader-election"
             - "--handle-volume-inuse-error=false"
             - "--kube-api-qps=100"
             - "--kube-api-burst=100"
+            - "--leader-election"
           env:
             - name: ADDRESS
               value: /csi/csi.sock
@@ -190,12 +190,12 @@ spec:
             - "--v=4"
             - "--timeout=300s"
             - "--csi-address=$(ADDRESS)"
-            - "--leader-election"
-            - "--default-fstype=ext4"
 {% if vsphere_csi_controller is version('v2.2.0', '>=') %}
             - "--kube-api-qps=100"
             - "--kube-api-burst=100"
 {% endif %}
+            - "--leader-election"
+            - "--default-fstype=ext4"
             # needed only for topology aware setup
             #- "--feature-gates=Topology=true"
             #- "--strict-topology"
@@ -205,6 +205,23 @@ spec:
           volumeMounts:
             - mountPath: /csi
               name: socket-dir
+{% if vsphere_csi_controller is version('v2.5.0', '>=') %}
+        - name: csi-snapshotter
+          image: {{ kube_image_repo }}/sig-storage/csi-snapshotter:{{ vsphere_csi_snapshotter_image_tag }}
+          args:
+            - "--v=4"
+            - "--kube-api-qps=100"
+            - "--kube-api-burst=100"
+            - "--timeout=300s"
+            - "--csi-address=$(ADDRESS)"
+            - "--leader-election"
+          env:
+            - name: ADDRESS
+              value: /csi/csi.sock
+          volumeMounts:
+            - mountPath: /csi
+              name: socket-dir
+{% endif %}
       volumes:
       - name: vsphere-config-volume
         secret:
diff --git a/roles/kubernetes-apps/csi_driver/vsphere/templates/vsphere-csi-controller-rbac.yml.j2 b/roles/kubernetes-apps/csi_driver/vsphere/templates/vsphere-csi-controller-rbac.yml.j2
index ad55691850a73486b073dbfb6655eac0e748aa7a..b7c33169872a807dd729776e2982799dc530501e 100644
--- a/roles/kubernetes-apps/csi_driver/vsphere/templates/vsphere-csi-controller-rbac.yml.j2
+++ b/roles/kubernetes-apps/csi_driver/vsphere/templates/vsphere-csi-controller-rbac.yml.j2
@@ -10,8 +10,11 @@ metadata:
   name: vsphere-csi-controller-role
 rules:
   - apiGroups: [""]
-    resources: ["nodes", "persistentvolumeclaims", "pods", "configmaps"]
+    resources: ["nodes", "pods", "configmaps"]
     verbs: ["get", "list", "watch"]
+  - apiGroups: [""]
+    resources: ["persistentvolumeclaims"]
+    verbs: ["get", "list", "watch", "update"]
 {% if external_vsphere_version >= "7.0" %}
   - apiGroups: [""]
     resources: ["persistentvolumeclaims/status"]
@@ -66,7 +69,7 @@ rules:
     verbs: [ "watch", "get", "list" ]
   - apiGroups: [ "snapshot.storage.k8s.io" ]
     resources: [ "volumesnapshotcontents" ]
-    verbs: [ "create", "get", "list", "watch", "update", "delete" ]
+    verbs: [ "create", "get", "list", "watch", "update", "delete", "patch" ]
   - apiGroups: [ "snapshot.storage.k8s.io" ]
     resources: [ "volumesnapshotcontents/status" ]
     verbs: [ "update", "patch" ]
diff --git a/roles/kubernetes-apps/csi_driver/vsphere/templates/vsphere-csi-node-rbac.yml.j2 b/roles/kubernetes-apps/csi_driver/vsphere/templates/vsphere-csi-node-rbac.yml.j2
index 98e06529a979efe2cc1898679e5f13abea4eb1e9..c4c172d60782b86f166ed8e763d62f20b9c8ff59 100644
--- a/roles/kubernetes-apps/csi_driver/vsphere/templates/vsphere-csi-node-rbac.yml.j2
+++ b/roles/kubernetes-apps/csi_driver/vsphere/templates/vsphere-csi-node-rbac.yml.j2
@@ -12,7 +12,7 @@ metadata:
 rules:
   - apiGroups: ["cns.vmware.com"]
     resources: ["csinodetopologies"]
-    verbs: ["create", "watch"]
+    verbs: ["create", "watch", "get", "patch" ]
   - apiGroups: [""]
     resources: ["nodes"]
     verbs: ["get"]
diff --git a/roles/kubernetes-apps/csi_driver/vsphere/templates/vsphere-csi-node.yml.j2 b/roles/kubernetes-apps/csi_driver/vsphere/templates/vsphere-csi-node.yml.j2
index 3fae91e3dddbf15afa28ed5eaddefef25c5e3e32..c0ec36c2119038e2f40d0db58936d1f5fbea3e83 100644
--- a/roles/kubernetes-apps/csi_driver/vsphere/templates/vsphere-csi-node.yml.j2
+++ b/roles/kubernetes-apps/csi_driver/vsphere/templates/vsphere-csi-node.yml.j2
@@ -77,6 +77,8 @@ spec:
           value: "false"
         - name: X_CSI_DEBUG
           value: "true"
+        - name: X_CSI_SPEC_DISABLE_LEN_CHECK
+          value: "true"
         - name: LOGGER_LEVEL
           value: "PRODUCTION" # Options: DEVELOPMENT, PRODUCTION
 {% if external_vsphere_version >= "7.0u1" %}