Skip to content

Commit 0bddfb6

Browse files
committed
KEP-4192:SVM: remove old goals, move alternative to alternatives
Signed-off-by: Stanislav Láznička <[email protected]>
1 parent 7003ef5 commit 0bddfb6

File tree

1 file changed

+26
-21
lines changed
  • keps/sig-api-machinery/4192-svm-in-tree

1 file changed

+26
-21
lines changed

keps/sig-api-machinery/4192-svm-in-tree/README.md

Lines changed: 26 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -94,22 +94,16 @@ This KEP aims to make it easy for users to perform storage migrations without ha
9494
- Any modification regarding `StorageVersion` API for HA API servers
9595
- Adding logic that relies on the hashed storage versions exposed via the discovery API
9696

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-
10397
## Proposal
10498

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.
108102

109103
### User Stories (Optional)
110104

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.
113107

114108
#### Story 2
115109
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
250244
#### Garbage Collection Cache
251245
Kube Controller Manager'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_.
252246
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-
262247
### RBAC for SVM
263248
- Storage Version Migrator Controller
264249
```yaml
@@ -539,7 +524,27 @@ NA
539524
540525
## Alternatives
541526
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.
543548
544549
## Infrastructure Needed (Optional)
545550

0 commit comments

Comments
 (0)