-
Notifications
You must be signed in to change notification settings - Fork 43
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
docs: adds RELEASES.md #99
Merged
Merged
Changes from all commits
Commits
Show all changes
11 commits
Select commit
Hold shift + click to select a range
7a92cc2
docs: adds compatibility promises
mathetake d721681
fix
mathetake ab615f2
fix
mathetake 7b63778
fix
mathetake 23048b9
fix
mathetake fc41e41
fix
mathetake 682c488
fix
mathetake 37bdfca
fix
mathetake a482fad
adds notes about release cycle
mathetake 44b806a
lint
mathetake 3d7556c
more
mathetake File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
# Notes on Releases | ||
|
||
## Release Cycles | ||
|
||
Since Envoy AI Gateway depends on the Envoy Gateway and Envoy Proxy, we will follow the release cycle of the Envoy Gateway. | ||
In other words, we aim to cut the release of the Envoy AI Gateway a few days or a week after the new version of the Envoy Gateway | ||
is released. Therefore, the release cycle of the Envoy AI Gateway will be approximately every 2-3 months. | ||
|
||
We do not distinguish between major and patch releases. We will increment the minor version number by one for each release | ||
except that we will cut the v1.0.0 release when we have a first stable control plane API, i.e. the introduction of | ||
package `api/v1`. Until then, we will use the version number v0.3.x, v0.4.y, etc. See the [support policy](#Support-Policy) for more details. | ||
|
||
The patch version will be incremented when we have a bug fix or a minor feature addition. The end of life for the version | ||
will be 2 releases after the release of the version. For example, if we release the version v0.1.0, the end of life for | ||
the version will be when we release the version v0.3.0. | ||
|
||
The main branch will always use the latest version of the Envoy Gateway hence the latest version of the Envoy, and | ||
the main version will be available just like the tagged released versions in the GitHub Container Registry where | ||
we also host the helm chart. | ||
|
||
## Support Policy | ||
|
||
This document focuses on compatibility concerns of those using Envoy AI Gateway. | ||
It is important to note that the support policy is subject to change at any time. The support policy is as follows: | ||
|
||
First of all, there are four areas of compatibility that we are concerned with: | ||
* [Using envoyproxy/ai-gateway as a Go package](#public-go-package). | ||
* [Deploying the Envoy AI Gateway controller through the Kubernetes Custom Resource Definition (CRD)](#Custom-Resource-Definitions). | ||
* [Upgrading the Envoy AI Gateway controller](#Upgrading-the-Envoy-AI-Gateway-controller). | ||
* [Envoy Gateway vs Envoy AI Gateway compatibility](#Envoy-Gateway-vs-Envoy-AI-Gateway-compatibility). | ||
|
||
### Public Go package | ||
|
||
Since we do not envision this repository ends up as a transitive dependency, i.e. only used as a direct dependency such as | ||
in a custom control plane, etc., we assume that any consumer of the project should have the full control over the | ||
source code depending on the project. This allows us to declare deprecation and introduce the breaking changes | ||
in the version after the next one since they can migrate the code at their discretion. For example, any public API that is | ||
marked as deprecated in the version N will be removed in the version N+2. We document how users should | ||
migrate to the new API will be documented in the release notes if applicable, but we do not guarantee that the migration | ||
path will be provided. | ||
|
||
### Custom Resource Definitions | ||
|
||
The Custom Resource Definitions (CRDs) are defined in api/${version}/*.go files. The CRDs are versioned as v1alpha1, v1alpha2, etc. | ||
**For alpha versions**, we simply employ the same deprecation policy as the Go package. In other words, the APIs will be marked as | ||
deprecated in the version N and will be removed in the version N+2 but without any guarantee of migration path. | ||
Migration paths for alpha versions will be the best effort and will be documented in the release notes. | ||
**For beta versions**, For beta versions, it is the same as the alpha versions, but we will provide a migration path in the release notes. | ||
**For stable versions**, we will never break the APIs unless there is a critical security issue. | ||
We will provide a migration path in the release notes in case we need to break the APIs. | ||
|
||
### Upgrading the Envoy AI Gateway controller | ||
|
||
We guarantee that simply upgrading the controller will not break the existing configuration assuming there's | ||
no _un-migrated_ resources including breaking change left in the k8s API server. In other words, after the | ||
proper use of the API and migration path described above, the user should be able to upgrade the controller | ||
without any issue. However, this does mean that we do NOT guarantee that the existing configuration will work | ||
across more than two version of the controller. For example if you are using the version N of the controller, | ||
and you want to upgrade to the version N+2, you should first upgrade to the version N+1 while following the | ||
migration path if applicable, and then upgrade to the version N+2. | ||
|
||
### Envoy Gateway vs Envoy AI Gateway compatibility | ||
|
||
Since Envoy AI Gateway is built on top of Envoy Gateway, the compatibility between the two is important. | ||
We use the latest released version of Envoy Gateway as the base of the Envoy AI Gateway when we release a new version. | ||
Since Envoy Gateway is a stable project and supposed to work across versions, we do not expect any compatibility issue | ||
as long as the Envoy Gateway version is also up-to-date prior to the upgrade of the Envoy AI Gateway. |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.
There are people asking if envoy ai gateway is compatible with Istio
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.
that's where the public
filterconfig
package, which is decoupled from EG/k8s specifics, comes into play! In fact my colleagues are working on the extproc integration in another control plane 👍 Basically, as long as we write extproc (or dynamic module in the future) in a decoupled way, it should be possible for other control plane to deploy the ai filter implemented here (which i believe is good for both testability and adoption like this)