You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: keps/sig-storage/3294-provision-volumes-from-cross-namespace-snapshots/README.md
+12-2Lines changed: 12 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -91,6 +91,7 @@ tags, and then generate with `hack/update-toc.sh`.
91
91
-[Risks and Mitigations](#risks-and-mitigations)
92
92
-[Secret Handling](#secret-handling)
93
93
-[Security](#security)
94
+
-[Conflict on installing <code>VolumePopulator</code> CR for <code>VolumeSnapshotLink</code> across CSI drivers](#conflict-on-installing--cr-for--across-csi-drivers)
94
95
-[Design Details](#design-details)
95
96
-[Example flow of how this proposal works](#example-flow-of-how-this-proposal-works)
96
97
-[API](#api)
@@ -239,7 +240,7 @@ Define an API to specify a cross-namespace `VolumeSnapshot` as a `DataSourceRef`
239
240
240
241
- To specify a non-standard API as a `DataSourceRef` of a PVC, [AnyVolumeDataSource feature](https://kubernetes.io/blog/2021/08/30/volume-populators-redesigned/) is used,
241
242
- To specify a cross-namespace `VolumeSnapshot`, a new `VolumeSnapshotLink` CRD is introduced (Please also see [API](#api)),
242
-
- To restrict only allowed `VolumeSnapshot` to be consumed from other namespaces, [`ReferenceGrant` CRD (formerly `ReferenceGrant`)](https://gateway-api.sigs.k8s.io/v1alpha2/references/spec/#gateway.networking.k8s.io%2fv1alpha2.ReferenceGrant) is used,
243
+
- To restrict only allowed `VolumeSnapshot` to be consumed from other namespaces, [`ReferenceGrant` CRD (formerly `ReferencePolicy`)](https://gateway-api.sigs.k8s.io/v1alpha2/references/spec/#gateway.networking.k8s.io%2fv1alpha2.ReferenceGrant) is used,
243
244
- To actually populate a PV from a `VolumeSnapshot` referenced from `VolumeSnapshotLink` CRD, a populator for each CSI driver is used,
244
245
- As a reference populator implementation, [CSI external provisioner](https://github.com/kubernetes-csi/external-provisioner) is extended to handle the `VolumeSnapshotLink` CRD (Please also see [Populator implementation](#populator-implementation)).
245
246
@@ -310,6 +311,15 @@ In addition, there will be cases that `ReferenceGrant` may be created/deleted/re
310
311
If all the processes succeed without any error, it succeeds even the `ReferenceGrant` is deleted in the middle of the processes.
311
312
If any errors happened in the processes and the controller retries, it may detect that there is no `ReferenceGrant` . Then, it won't use the `VolumeSnapshot` until the `ReferenceGrant` that allows the access is re-created.
312
313
314
+
#### Conflict on installing `VolumePopulator` CR for `VolumeSnapshotLink` across CSI drivers
315
+
316
+
This feature requires installing VolumePopulator` CR for `VolumeSnapshotLink` and is enabled per CSI driver basis.
317
+
Therefore, on enabling this feature for each CSI driver, it is expected that `VolumePopulator` CR for `VolumeSnapshotLink` is created before each CSI driver installation.
318
+
As a result, there may be a conflict in creating it for each driver, if there are any differences in their definitions, like alpha API and beta API.
319
+
320
+
To avoid this issue, it should be avoided to manage VolumePopulator` CR for `VolumeSnapshotLink` in each CSI driver's repository.
321
+
It should be managed in another single repository and the same CR should be used per cluster basis.
322
+
313
323
## Design Details
314
324
315
325
<!--
@@ -424,7 +434,7 @@ As a reference implementation, only (a) will be implemented in the community.
424
434
425
435
Regardless of the implementation,
426
436
-`VolumeSnapshotLink` CRD and `ReferenceGrant` CRD must exist in the cluster before the populator is deployed.
427
-
-`VolumePopulator`CRD to allow popluating from `VolumeSnapshotLink` CRD needs to be created to enable this feature, as AnyVolumeDataSource feature defines. The `VolumePopulator`CRD needed for this feature will be as follows:
437
+
-`VolumePopulator`CR to allow popluating from `VolumeSnapshotLink` CRD needs to be created to enable this feature, as AnyVolumeDataSource feature defines. The `VolumePopulator`CR needed for this feature will be as follows:
0 commit comments