[ir] Init Structure#115
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #115 +/- ##
=========================================
Coverage 100.00% 100.00%
=========================================
Files 1 1
Lines 5 5
=========================================
Hits 5 5 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Why doesn't HttpListener have an address field that represents an IPv4/IPv6 address?
There was a problem hiding this comment.
I actually think we may need to put that in the parent structure maybe? In the Gateway API, it's possible to describe:
- listeners bound to no specific address (that is, the data plane should just figure it out)
- one or more listeners bound to one or more addresses.
So, we will need to be able to describe "this listener or these listeners should be attached to this address or these addresses" in the IR somehow.
There was a problem hiding this comment.
I added Address into HttpListener for now, both the approaches of moving address+port to top level or within listener spec all depend on what Gateway API translator prefers when breaking up the cases referred by
@youngnick, will defer to @skriss for his preference since he is designing the GW API translator
danehans
left a comment
There was a problem hiding this comment.
This is a good start. I provided feedback throughout.
youngnick
left a comment
There was a problem hiding this comment.
I agree this is a great start, my feedback is below.
There was a problem hiding this comment.
I actually think we may need to put that in the parent structure maybe? In the Gateway API, it's possible to describe:
- listeners bound to no specific address (that is, the data plane should just figure it out)
- one or more listeners bound to one or more addresses.
So, we will need to be able to describe "this listener or these listeners should be attached to this address or these addresses" in the IR somehow.
There was a problem hiding this comment.
I think we should try to keep xDS-isms out of the IR as much as possible, so this should probably have a different name.
We could just call it Gateway, GatewayConfig or something that doesn't overload a name, maybe?
There was a problem hiding this comment.
I envisioned this IR to be specific to xDS (consumed by the xDS translator that generates xDS), and another one for the Provisioner, if we want to club the two into one, agree, we need to come up with a higher level noun
danehans
left a comment
There was a problem hiding this comment.
The IR API semantics appear to align more closely with Istio Gateway and Virtual Service APIs than Gateway API Gateway and HTTPRoute APIs. Why?
There was a problem hiding this comment.
Can multiple listeners have the same hostname? I see that LDS and the Gateway spec require each listener to have a unique name, should we do the same with this IR?
There was a problem hiding this comment.
There was a problem hiding this comment.
With this structure, a route can contain only one rule. Why not support multiple rules where each rule can match, route, etc?
There was a problem hiding this comment.
below field Matchers []route.HeaderMatcher allows the Gateway API translator to add/ AND multiple match params, the Gateway API allows the user to express OR matches too which might be a legit user facing concern, at the IR layer, we are targeting layered translations and OR rules are not needed here, imho the Gateway API translator should handle this
cc @skriss
IR is not meant to mimic an exact Front end API, but be similar enough that other front end APIs / translators can translate to it, with the same intent of converting the IR to xDS. I made these changes with translating Gateway API in mind, sounds like a bonus 😊 if it also is similar to Istio APIs . |
danehans
left a comment
There was a problem hiding this comment.
Thanks for all the effort to get this done.
Relates to envoyproxy#32 Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Signed-off-by: Arko Dasgupta <arko@tetrate.io>
* rm TLSMode, bring it back when its needed * use internal match field * create more match fields for path and query params Signed-off-by: Arko Dasgupta <arko@tetrate.io>
Relates to #32
Signed-off-by: Arko Dasgupta arko@tetrate.io