feat(kuma-cp) XDS extensions and new matcher strategy #1493
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.
Summary
Introducing Hooks, a way to extend Kuma with XDS modification. You can create a new project, have Kuma as a dependency, build a Bootstrap plugin that plugs in XDS hook.
Right now I created one Hook that operates on ResourceSet which allows essentially to do everything you want with XDS resources (add, modify, remove).
The ResourceSetHook may have a slight performance hit, because you need to iterate over all resources of one type. Let's say you want to modify inbound listener, you need to iterate over all listeners. I don't think this is noticeable performance hit, but I left a room to introduce more specific Hooks for builders if needed.
I also introduced a new matching strategy. Instead of matching DataplanePolicy on any inbound and applying on a all resources of the dataplane, you can now match DataplanePolicy on individual inbounds.
Documentation