-
Notifications
You must be signed in to change notification settings - Fork 347
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
Allow users to configure xDS resources #24
Comments
Here's one way to do it
|
A key point from the above EnvoyFilter reference:
I believe @LukeShu shared concerns about exposing xDS config through the API. I can see the need to support this but IMHO it's a long-term goal since the project has a ton of work to implement the initial system design and support the core/extended Gateway APIs. |
Yes, one of the reasons I've been very reluctant to do anything like this for Contour in the past is because the HTTPConnectionManager filter chains have to be constructed carefully to get the outcomes we want; I feel like it's a bit too easy to create a config that has a bad interaction with a designed behavior. |
IMO I would avoid any kind of patch semantics at all. I think it's too confusing and error prone. The way I would model this is:
IMO this is the best path forward. |
cool, sg, should we start off with the same approach - all official EG or all BYO, for Bootstrap as well ? |
+1 for consistency |
I definitely agree with @mattklein123 - part of the point of the upstream API is to have extension points to allow users to model concepts that we may use xDS to implement - there are a number of extension points and the Policy APIs for this exact reason. |
This issue has been automatically marked as stale because it has not had activity in the last 30 days. It will be closed in the next 7 days unless it is tagged "help wanted" or "no stalebot" or other activity occurs. Thank you for your contributions. |
This issue has been automatically closed because it has not had activity in the last 37 days. If this issue is still valid, please ping a maintainer and ask them to label it as "help wanted" or "no stalebot". Thank you for your contributions. |
@youngnick What Policy APIs you are referring here ? Kubernetes Gateway API policy attachment ? https://gateway-api.sigs.k8s.io/references/policy-attachment/ |
This issue has been automatically marked as stale because it has not had activity in the last 30 days. It will be closed in the next 7 days unless it is tagged "help wanted" or "no stalebot" or other activity occurs. Thank you for your contributions. |
Relates to envoyproxy#24 Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Relates to envoyproxy#24 Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Relates to envoyproxy#24 Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Relates to envoyproxy#24 Signed-off-by: Arko Dasgupta <arko@tetrate.io>
* feat: EnvoyPatchPolicy API Relates to #24 Signed-off-by: Arko Dasgupta <arko@tetrate.io> * wip design doc Signed-off-by: Arko Dasgupta <arko@tetrate.io> * wrap up design Signed-off-by: Arko Dasgupta <arko@tetrate.io> * lint Signed-off-by: Arko Dasgupta <arko@tetrate.io> * update implementation Signed-off-by: Arko Dasgupta <arko@tetrate.io> * address comments Signed-off-by: Arko Dasgupta <arko@tetrate.io> * lint Signed-off-by: Arko Dasgupta <arko@tetrate.io> * charts Signed-off-by: Arko Dasgupta <arko@tetrate.io> --------- Signed-off-by: Arko Dasgupta <arko@tetrate.io> Co-authored-by: Xunzhuo <bitliu@tencent.com>
Relates to envoyproxy#24 Signed-off-by: Arko Dasgupta <arko@tetrate.io>
* Implement JSON Patch in Xds Translator Relates to #24 Signed-off-by: Arko Dasgupta <arko@tetrate.io> * use temp variable to unmarshal into Signed-off-by: Arko Dasgupta <arko@tetrate.io> * lint Signed-off-by: Arko Dasgupta <arko@tetrate.io> * fix test Signed-off-by: Arko Dasgupta <arko@tetrate.io> * use apiextensionsv1.JSON Signed-off-by: Arko Dasgupta <arko@tetrate.io> * routeConfig test Signed-off-by: Arko Dasgupta <arko@tetrate.io> * add entire resource and more test cases Signed-off-by: Arko Dasgupta <arko@tetrate.io> * lint Signed-off-by: Arko Dasgupta <arko@tetrate.io> * move marshaller out of for loop Signed-off-by: Arko Dasgupta <arko@tetrate.io> * address comments Signed-off-by: Arko Dasgupta <arko@tetrate.io> --------- Signed-off-by: Arko Dasgupta <arko@tetrate.io> Co-authored-by: zirain <zirain2009@gmail.com>
Relates to envoyproxy#24 Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Relates to envoyproxy#24 Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Relates to envoyproxy#24 Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Relates to #24 Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Relates to envoyproxy#24 Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Relates to envoyproxy#24 Signed-off-by: Arko Dasgupta <arko@tetrate.io>
* `egctl x translate` support for EnvoyPatchPolicy Relates to #24 Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Relates to envoyproxy#24 Signed-off-by: Arko Dasgupta <arko@tetrate.io>
* Add user docs for EnvoyPatchPolicy Relates to #24 Signed-off-by: Arko Dasgupta <arko@tetrate.io> * nits Signed-off-by: Arko Dasgupta <arko@tetrate.io> * wrap up Signed-off-by: Arko Dasgupta <arko@tetrate.io> * lint Signed-off-by: Arko Dasgupta <arko@tetrate.io> * address comments && fix config Signed-off-by: Arko Dasgupta <arko@tetrate.io> --------- Signed-off-by: Arko Dasgupta <arko@tetrate.io>
* Add user docs for EnvoyPatchPolicy Relates to envoyproxy#24 Signed-off-by: Arko Dasgupta <arko@tetrate.io> * nits Signed-off-by: Arko Dasgupta <arko@tetrate.io> * wrap up Signed-off-by: Arko Dasgupta <arko@tetrate.io> * lint Signed-off-by: Arko Dasgupta <arko@tetrate.io> * address comments && fix config Signed-off-by: Arko Dasgupta <arko@tetrate.io> --------- Signed-off-by: Arko Dasgupta <arko@tetrate.io> (cherry picked from commit 27b0939)
* refactor: set defaults in Deployment, else k8s sets them for you, creating infinite reconciliation loop (#1594) * fix: envoy proxy resource apply bug. Signed-off-by: qicz <qiczzhu@gmail.com> * update pointer. Signed-off-by: qicz <qiczzhu@gmail.com> * add comment Signed-off-by: qicz <qiczzhu@gmail.com> * update cm cmp logic. Signed-off-by: qicz <qiczzhu@gmail.com> * fix lint Signed-off-by: qicz <qiczzhu@gmail.com> * add probe field default value. Signed-off-by: qicz <qiczzhu@gmail.com> * fix uts Signed-off-by: qicz <qiczzhu@gmail.com> * align probe Signed-off-by: qicz <qiczzhu@gmail.com> * optimize deploy compare logic Signed-off-by: qicz <qiczzhu@gmail.com> * add compare deploy uts Signed-off-by: qicz <qiczzhu@gmail.com> * rm cm binarydata cmp Signed-off-by: qicz <qiczzhu@gmail.com> * rm deploy cmp logic Signed-off-by: qicz <qiczzhu@gmail.com> * fix ut Signed-off-by: qicz <qiczzhu@gmail.com> * fix lint Signed-off-by: qicz <qiczzhu@gmail.com> --------- Signed-off-by: qicz <qiczzhu@gmail.com> Signed-off-by: qi <qiczzhu@gmail.com> (cherry picked from commit 9ba9103) * DeepCopy resources that require status updates (#1723) * Was seeing constant churn between provider runner publishing resources and gateway-api runner receiving them. * Tried to debug it by printing the o/p of `cmp.Diff` between current and previous values ``` diff --git a/internal/gatewayapi/runner/runner.go b/internal/gatewayapi/runner/runner.go index 050394ba..50d09f6f 100644 --- a/internal/gatewayapi/runner/runner.go +++ b/internal/gatewayapi/runner/runner.go @@ -8,6 +8,7 @@ package runner import ( "context" + "github.com/google/go-cmp/cmp" "k8s.io/apimachinery/pkg/runtime/schema" "sigs.k8s.io/gateway-api/apis/v1beta1" "sigs.k8s.io/yaml" @@ -49,6 +50,7 @@ func (r *Runner) Start(ctx context.Context) error { } func (r *Runner) subscribeAndTranslate(ctx context.Context) { + prev := &gatewayapi.Resources{} message.HandleSubscription(r.ProviderResources.GatewayAPIResources.Subscribe(ctx), func(update message.Update[string, *gatewayapi.Resources]) { val := update.Value @@ -56,6 +58,9 @@ func (r *Runner) subscribeAndTranslate(ctx context.Context) { if update.Delete || val == nil { return } + diff := cmp.Diff(prev, val) + r.Logger.WithValues("output", "diff").Info(diff) + prev = val.DeepCopy() // Translate and publish IRs. t := &gatewayapi.Translator{ ``` Here's the o/p and its empty ``` 2023-07-27T23:55:29.795Z INFO gateway-api runner/runner.go:62 {"runner": "gateway-api", "output": "diff"} ``` * Using a DeepCopy for resources that were updating the `Status` subresource seems to have solved the issue, which implies that watchable doesnt like clients to mutate the value, even though they are meant to be a `DeepCopy` Fixes: #1715 Signed-off-by: Arko Dasgupta <arko@tetrate.io> (cherry picked from commit 5b72451) * observability: add container port for metrics (#1736) container port Signed-off-by: zirain <zirain2009@gmail.com> (cherry picked from commit 4bba03a) * docs: Add user docs for EnvoyPatchPolicy (#1733) * Add user docs for EnvoyPatchPolicy Relates to #24 Signed-off-by: Arko Dasgupta <arko@tetrate.io> * nits Signed-off-by: Arko Dasgupta <arko@tetrate.io> * wrap up Signed-off-by: Arko Dasgupta <arko@tetrate.io> * lint Signed-off-by: Arko Dasgupta <arko@tetrate.io> * address comments && fix config Signed-off-by: Arko Dasgupta <arko@tetrate.io> --------- Signed-off-by: Arko Dasgupta <arko@tetrate.io> (cherry picked from commit 27b0939) * e2e & misc fixes for EnvoyPatchPolicy (#1738) * Add E2E for EnvoyPatchPolicy * Use LocalReplyConfig to return a custom status code `406` when there is no valid route match Signed-off-by: Arko Dasgupta <arko@tetrate.io> (cherry picked from commit a7784c5) --------- Signed-off-by: Arko Dasgupta <arko@tetrate.io> Co-authored-by: qi <qiczzhu@gmail.com> Co-authored-by: zirain <zirain2009@gmail.com>
Users might want to directly configure xDS Resources in case Envoy Gateway's API doesn't support their use case.
They might want to add/merge/remove/replace xDS resources that are pushed by Envoy Gateway into Envoy Proxy.
Projects such as Istio provide APIs such as EnvoyFilter to fulfill these use cases.
Outlining work items
egctl
for offline verification feat:egctl x translate
support for EnvoyPatchPolicy #1682The text was updated successfully, but these errors were encountered: