Replies: 4 comments 9 replies
-
SGTM. Usually, when using a Plugin, we would like to intervene at specific execution phases. This is similar to defining multiple request processing phases in NGINX. Of course, if we don't consider the execution phase, there can also be some simple mechanisms, similar to the forward-auth implemented in Ingress-NGINX. The request is forwarded to the plugins for processing and the response is returned to the client. |
Beta Was this translation helpful? Give feedback.
-
I think that maybe a place to start is to talk about what we're talking about when we say "plugin". We already have a number of extension points in the API, what's different here? Is this an arbitrary piece of code that can run at any point in the request routing process? If so, we're going to have to sit down and give the request routing process phases names (this is only kind of implied at the moment). If not, we need to talk about what a plugin is. Is a custom Filter a plugin? I guess I'm trying to say that I think that spending some time on basic terms here will pay off massively. I'd also like to see us not end up with multiple ways of configuring the same thing - I'll be honest that my first intuition about most WASM use cases I can think of are custom filters rather than something more generic, but I'm happy to talk more and be proved wrong. |
Beta Was this translation helpful? Give feedback.
-
thanks for raising this, great points made by everyone so from a Gateway API perspective, it would be great to give guidance to implementations on a standardized way to download artifacts, something like
similar to the guidance given for PolicyAttachment |
Beta Was this translation helpful? Give feedback.
-
Thanks to @howardjohn for directing me to this discussion; I didn't know it existed. IMO, the biggest distinction between "plugins" and "policies" is that in the former, the user injects custom data path processing AND that user wishes to control the stage within the datapath where this custom processing takes place. By contrast, policies are control-plane-managed configuration that provide user-configurable abstractions for the purposes of influencing the parameters of the policy (not the actual implementation). One of the open questions we would probably need to tackle is figuring out a standard way to represent the ordering/stages of proxy data path processing. Each proxy has different capabilities and likely slightly different ordering,, so it would be interesting to see what the overlap is |
Beta Was this translation helpful? Give feedback.
-
Many proxies have some sort of "plugin" capability, perhaps the most well-known mechanism I am aware of being WASM plugins via envoy proxy. A "plugin" in this context is generally some bit of custom logic which can be applied to traffic (e.g. "filters" and so forth) where the logic is injected via some object (e.g. WASM) which commonly is provided by end-users to enable custom logic beyond what the proxy originally intended.
Several proxies out there already support some kind of plugin capabilities:
Plugin capabilities, as defined here are potentially viable in both ingress and mesh uses cases.
I bring this up because I am interested in providing some standards for how plugins work in Gateway API (at some level) such that end-users have a generally familiar "Kubernetes" way of doing this regardless of which implementations they use.
My current goals are:
HTTPRoute
can have one or many "plugins" attached to it in the API, and provide rules for implementationsThere are some potential parallels to draw with Policy Attachment, by comparison my hope is that we can provide something that is:
Ultimately, we may be able to make a GEP out of these goals after we've had some time here to discuss it and iterate on them, and after we've generally gathered some consensus. It's not even clear to me yet if we even have enough common ground and portability to really make this happen, so that's basically the main open question of this discussion. Please do share your thoughts and feedback, and I would particularly like to hear from implementations who currently have a lot of plugin usage going on in their end-user ecosystems.
Beta Was this translation helpful? Give feedback.
All reactions