-
Notifications
You must be signed in to change notification settings - Fork 104
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
KEP-19: Versioning for operator packages #1028
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it's a good start, it just needs a bit more content because I have a lots of questions I don't know answer to
Before diving into the implementation details, I wanted to talk about the overall "versioning context". Having KUDO API version indexed, only solve a smaller part of the versioning chaos. Below a scenario that I would like to discuss: tl;dr:
|
Here is the same scenario from @mpereira (this time for Cassandra) in form of the table which resets operator version Semver every time a new major Cassandra version is released. |
We will need an alternative registry for KUDO once this gets implemented as to not break 0.8.0, yeah? |
This should not break 0.8.0, as it's only adding field to the index, which is backwards-compatible. However, once there are newer API versions, it becomes a bit more complicated: While operators versions that are compatible with 0.8.0 will still get list in the index, the user needs to explicitly select these versions (using the |
An alternative would be the have separate URLs for each API version, e.g. |
Ah, yes, I misread the On the surface, I do like the idea of having separate registries for each API version - although this presents a challenge when a user wants to upgrade from one Operator API version to another. I would see that as a major version change inside the same repository, and the KUDO tool could be aware of what API versions it works with and ones it doesn't (which could be useful for CLI tooling). |
Been thinking about it for a while, actually I like having separate registries for each API versions a bit more. It would allow use to have backwards-incompatible changes to the repo index in the future. I'll update the KEP accordingly. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We had a lot of discussion at eng week that are not capture here... for instance: it was proposed that we change the version to lead with underlying tech and have incrementing version
for each tech version. I'm not sure I see that completely captured here. What is definitely missing is what to do when there is multiple underlying tech versions or none.
keps/0019-package-api-versioning.md
Outdated
|
||
From these versions, currently only the `version` field can be used when installing packages with `kubectl kudo install`. Furthermore, a package repository index only contains `appVersion` and `version` fields in its entries. This limits the possible installation scenarios. | ||
At least the following installation scenarios should be supported: | ||
1. A package repository could contain operators for older `apiVersion` and than the currently released KUDO. A user should be able to install these operators with older versions of KUDO. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree with this statement in general.. however :) . it isn't the whole story. A version of KUDO should have awareness of which apiVersions
it supports. Then I expect that it could at some point deprecate an apiVersion
. It would be better to state the problem this way IMO. kudo 2.1.1 supports apiVersions 2.0, 2.1, 2.2 AND support 1.9 in deprecated warning mode AND does NOT support <= 1.8. In this way kudo should have 3 apiVersions sets it manages...
- active support
- deprecate support
- no longer supported
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good point! I'll clarify this in the KEP.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
After thinking about it for 18 days 😆, IMO this shouldn't be part of this KEP. Let's focus this KEP on operator packages. How and which API versions are supported by KUDO and what a deprecation cycle for these APIs would look like should be part of a separate KEP. @kensipe wdyt?
Co-Authored-By: Ken Sipe <kensipe@gmail.com>
Co-Authored-By: Murilo Pereira <murilo@murilopereira.com>
eca30bc
to
3f9fa23
Compare
I've updated the KEP to present the "composite version" approach, as per our discussions. Many of the existing comments are outdated and I resolved them. If anyone feels that this is still not covered here, please unresolve these conversations. |
There are still some open questions:
|
@mpereira, this makes sense, yes. I'm fine with having a parameter |
If
My suggestion is to first try to sort operator versions as semver, then select the latest operator version. If that doesn't work, the installation will be aborted due to ambiguous operator versions and the user will be prompted to also supply an operator version. |
Changing Parsing the One thing to keep in mind when implementing this: We currently generate the |
@ANeumann82, I agree, making Good point regarding the version in |
Since this KEP is so sensitive, we're waiting on a supermajority of approvals to merge. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Godspeed! 🚢
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nice work! 🚢
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @nfnt.
Thanks everyone for the healthy discussion and suggestions and helping to get this KEP into shape. I'm merging this now and will have an implementation soon. |
KEP-19 describes operator package versioning Co-Authored-By: Ken Sipe <kensipe@gmail.com> Co-Authored-By: Murilo Pereira <murilo@murilopereira.com> Co-authored-by: Zain Malik <zmalikshxil@gmail.com> Signed-off-by: Andreas Neumann <aneumann@mesosphere.com>
What this PR does / why we need it:
By adding a KUDO API version to package indexes, we will avoid that changes to the operator schema will affect existing KUDO versions and package definitions.
Closes #163