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-api-machinery/4192-svm-in-tree/README.md
+26-21Lines changed: 26 additions & 21 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -94,22 +94,16 @@ This KEP aims to make it easy for users to perform storage migrations without ha
94
94
- Any modification regarding `StorageVersion` API for HA API servers
95
95
- Adding logic that relies on the hashed storage versions exposed via the discovery API
96
96
97
-
### UNCLEAR Goals and/or Non-Goals
98
-
99
-
- Automatic storage version migration for CRDs
100
-
- Make it easy for Kubernetes developers to drop old API schemas by guaranteeing that storage migration is run automatically on SV hash changes (should this also be on a timer or API server identity?)
101
-
- Automated Storage Version Migration via the hash exposed by the `StorageVersion` API
102
-
103
97
## Proposal
104
98
105
-
- Move the existing SVM controller logic in-tree into KCM
106
-
- Move the existing SVM REST APIs in-tree (possibly under a new API group to avoid conflicts with the old API being run concurrently)
107
-
-For Alpha, we will not trigger automatic storage version migration, and it will be deferred to the user.
99
+
- Move the existing SVM controller logic in-tree into KCM from its [original source](https://github.com/kubernetes-sigs/kube-storage-version-migrator).
100
+
- Move the existing SVM REST APIs in-tree (possibly under a new API group to avoid conflicts with the old API being run concurrently).
101
+
-Automatic storage version migration will be deferred to the user.
108
102
109
103
### User Stories (Optional)
110
104
111
-
#### Story 1**[UNCLEAR]**
112
-
As an end user of Kubernetes, we get automatic storage version migration whenever the storage version changes due to an api server upgrade/downgrade.
105
+
#### Story 1
106
+
As an end user of Kubernetes, I can trigger storage version migration for my resources.
113
107
114
108
#### Story 2
115
109
As an end user using encryption at rest, whenever the key change is detected we can run the storage migration to use the new key for encryption.
@@ -250,15 +244,6 @@ When transitioning the Storage Version Migrator in-tree, we will exclusively mov
250
244
#### GarbageCollectionCache
251
245
Kube ControllerManager's garbage collection cache contains the name and namespace for all resources, providing a suitable dataset for the migration process. This approach is detailed [here](https://docs.google.com/document/d/1lHDbrMCmNG1KXEpw6gMhDL8qWAWgeSlfW6gbCvD80uw/edit?usp=sharing). _We will use this approach for the Alpha release_.
252
246
253
-
### Rejected Alternative
254
-
#### Streaming List
255
-
Currently, the Migrator controller uses the `chunked List` method to retrieve the list of resources from the API server and subsequently perform storage migrations as needed. However, chunked lists are [resource-intensive]((https://github.com/kubernetes/enhancements/blob/master/keps/sig-api-machinery/3157-watch-list/README.md#motivation)) and can lead to a significant overload on the API server, potentially resulting in it being terminated due to out-of-memory (OOM) issues. To address this concern, we have proposed the adoption of an Alpha feature introduced in Kubernetes _v1.27_, known as [`Streaming List`](https://kubernetes.io/docs/reference/using-api/api-concepts/#streaming-lists).
256
-
257
-
When the Migrator controller is integrated in-tree, it will leverage the `Streaming List` approach to obtain and monitor resources while executing storage version migrations, as opposed to using the resource-intensive `chunked list` method. In cases where, for any reason, the client cannot establish a streaming watch connection with the API server, it will fall back to the standard `chunked list` method, retaining the older LIST/WATCH semantics.
258
-
259
-
- _Open Question_:
260
-
- Does `Streaming List` support inconsistent lists? Currently, with chunked lists, we receive inconsistent lists. We need to determine if we can achieve the same with Streaming List. Depending on the outcome, we may consider removing the [ContinueToken](https://github.com/kubernetes-sigs/kube-storage-version-migrator/blob/60dee538334c2366994c2323c0db5db8ab4d2838/pkg/apis/migration/v1alpha1/types.go#L63) from the API.
261
-
262
247
### RBAC for SVM
263
248
- Storage Version Migrator Controller
264
249
```yaml
@@ -539,7 +524,27 @@ NA
539
524
540
525
## Alternatives
541
526
542
-
NA
527
+
### Streaming List (considered, rejected)
528
+
The original Migrator controller used the _chunked List_ method to retrieve the
529
+
list of resources from the API server and subsequently performed storage migrations
530
+
as needed. However, chunked lists are [resource-intensive]((https://github.com/kubernetes/enhancements/blob/master/keps/sig-api-machinery/3157-watch-list/README.md#motivation))
531
+
and can lead to a significant overload on the API server, potentially resulting in
532
+
it being terminated due to out-of-memory (OOM) issues. To address this concern, we
533
+
have proposed the adoption of an Alpha feature introduced in Kubernetes _v1.27_,
534
+
known as [`Streaming List`](https://kubernetes.io/docs/reference/using-api/api-concepts/#streaming-lists).
535
+
536
+
When the Migrator controller would get integrated in-tree, it would leverage the `Streaming List`
537
+
approach to obtain and monitor resources while executing storage version migrations,
538
+
as opposed to using the resource-intensive `chunked list` method. In cases where,
539
+
for any reason, the client cannot establish a streaming watch connection with the
540
+
API server, it will fall back to the standard `chunked list` method, retaining the
541
+
older LIST/WATCH semantics.
542
+
543
+
- _Open Question for this approach_:
544
+
- Does `Streaming List` support inconsistent lists? Currently, with chunked lists,
545
+
we receive inconsistent lists. We need to determine if we can achieve the same
546
+
with Streaming List. Depending on the outcome, we may consider removing the
547
+
[ContinueToken](https://github.com/kubernetes-sigs/kube-storage-version-migrator/blob/60dee538334c2366994c2323c0db5db8ab4d2838/pkg/apis/migration/v1alpha1/types.go#L63) from the API.
0 commit comments