Skip to content
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

APIs Release and Versioning Model #160

Closed
Tracked by #156
whitneygriffith opened this issue Oct 16, 2023 · 2 comments
Closed
Tracked by #156

APIs Release and Versioning Model #160

whitneygriffith opened this issue Oct 16, 2023 · 2 comments
Assignees

Comments

@whitneygriffith
Copy link
Contributor

whitneygriffith commented Oct 16, 2023

Istio has chosen to not use conversion webhooks to manage CRD versions due to its complexity and therefore the schemas of all versions of a CRD are identical.

As such, as long as the previous versions of a CRD is supported, field annotations will be used to denote the subset of fields that are Deprecated across all versions of the CRD.

An example of denoting a field as deprecated can be seen in the v1alpha3 gateway and the v1beta1 gateway.

There aren't infrastructure to support denoting a field based on their stage such as Alpha or Beta. However, work for this was proposed here but John doesn't know to what extent it was implemented.

Future API graduation will more than likely occur at the field level and as such we want to use our learnings from Telemetry API graduation to provide opionated guidance on how to do other similar graduations.

Options we want to explore here are:

  • Creating a separate API that is not forced to conform to the previous API versions. This can be done by using a new API name, API group and Release Channels as was done in K8s Gateway API

  • Building out the Istio Tooling (client facing and operational) to support field level annotations that denote a field is a certain stage and able to enforce/validate the desired version of an API used in a mesh. Some of this work was started here.

  • Untangling Istio's support of deprecated fields/APIs as part of [Goal] Istio Feature Deprecation Process #156

@whitneygriffith whitneygriffith converted this from a draft issue Oct 16, 2023
@whitneygriffith whitneygriffith changed the title Graduating an API: Create opioniated guidance on graduating a subset of fields in an API Graduating an API: Create opionionated guidance on graduating a subset of fields in an API Nov 13, 2023
@whitneygriffith whitneygriffith changed the title Graduating an API: Create opionionated guidance on graduating a subset of fields in an API Graduating an API: Create opinionated guidance on graduating a subset of fields in an API Nov 13, 2023
@whitneygriffith whitneygriffith moved this from Backlog to In Progress in Enhancements Nov 20, 2023
@whitneygriffith whitneygriffith self-assigned this Nov 20, 2023
@whitneygriffith
Copy link
Contributor Author

Proposed Istio APIs Release Model

@whitneygriffith whitneygriffith moved this from In Progress to In Review in Enhancements Jan 31, 2024
@whitneygriffith whitneygriffith changed the title Graduating an API: Create opinionated guidance on graduating a subset of fields in an API APIs Release and Versioning Model Jan 31, 2024
@whitneygriffith
Copy link
Contributor Author

whitneygriffith commented Feb 28, 2024

Release Channels will be the solution to this. This work is tracked here 173

@github-project-automation github-project-automation bot moved this from In Review to Done in Enhancements Feb 28, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Done
Development

No branches or pull requests

1 participant