shipwright-io / build

Shipwright - a framework for building container images on Kubernetes
https://shipwright.io
Apache License 2.0
626 stars 107 forks source link

[FEATURE] Provide Storage Version Migration from v1alpha1 to v1beta1 #1603

Open SaschaSchwarze0 opened 1 month ago

SaschaSchwarze0 commented 1 month ago

Is there an existing feature request for this?

Is your feature request related to a problem or use-case? Please describe.

With v0.13 we changed the storage version of Shipwright Build from v1alpha1 to v1beta1. Users who started with an older version will find the following in the the CRD status:

status:
  storedVersions:
  - v1alpha1
  - v1beta1

As long as v1alpha1 is in there, it is not possible to apply a CRD where v1alpha1 does not exist anymore.

Describe the solution that you would like.

Kubernetes v1.30 actually brought storage version migration: https://kubernetes.io/docs/tasks/manage-kubernetes-objects/storage-version-migration/ (I never tried it)

For users of older version we need to provide a Job definition similar to what Knative does: https://kubernetes.io/docs/tasks/manage-kubernetes-objects/storage-version-migration/.

We can even use their image because its code is generic. If we prefer we could also copy the code. Code is here: https://github.com/knative/pkg/tree/main/apiextensions/storageversion

Describe alternatives you have considered.

We could also make that part of our controller startup, would be maybe an alterantive where our users must not care at all.

Anything else?

No response

karanibm6 commented 1 month ago

/assign @karanibm6