New API version: v1alpha3
- Dominant language
- Go
- Stars
- 16.7k
- Forks
- 4.7k
- Avg merge
- 17h 21m
- Merged PRs (30d)
- 68
Description
I want to restart the new API version discussion that we had in #9178
As I think we'll do a number of changes, an umbrella issue is appropriate and this one should serve as that.
I want v1alpha3 to not be roundtrip-compatible with v1alpha2. However, both should roundtrip with the unversioned spec without data loss. This is the same that we see k/api doing.
This means we need to use a lot of conversion functions to convert between the versioned and unversioned specs.
I want the unversioned spec to contain what templates etc require. That means the unversioned spec can contain fields that the versioned do not, but that nodeup add as required. This can replace some of the template functions we have.
A consequence of this is that validation need to happen on each of the versioned specs, not the unversioned one.
We should also add support for versioned `get ig/cluster` so users can choose which one to export and modify.
To get started we need to:
- [ ] Add a `version` flag to `kops get` so users can choose between v1alpha2 and v1alpha3
- [ ] Copy v1alpha2 to v1alpha3
- [ ] Migrate validation logic to use v1alpha2 instead of unversioned spec (move `validation` package as sub package to `v1alpha2`?)
- [ ] Register the v1alpha3 api version if a given feature gate has been set
Contributor guide
Research direction
Start by reading the prior discussion in issue #9178 and the umbrella requirements here, especially the v1alpha2/v1alpha3 conversion and validation goals. Done means completing the version flag, API copy, versioned validation, and feature-gated v1alpha3 registration described in the checklist.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- api, backend-api-design, cli
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100