Kuadrant / Kuadrant/architecture
Extension SDK for Direct Policies
- Dominant language
- No language data
- Stars
- 3
- Forks
- 16
- Avg merge
- 7d 11h
- Merged PRs (30d)
- 2
Description
## Summary
The Extension SDK enables extensions to dynamically register any gRPC service and orchestrate multi-phase calls during request processing. The SDK will be leveraging gRPC Server Reflection to discover schemas automatically, so extensions don't need to provide proto files, and wasm-shim converts CEL expressions to protobuf messages dynamically. Extensions become self-service - call RegisterService(), define OnRequest and OnResponse logic with metadata passing between phases, and it works without touching wasm-shim.
Once the extension sdk will have this capabilities, the existing TokenRateLimitPolicy will benefit from the multi-phase orchestration in order to comply with the functional requirements. Hence, a "migration" of the policy with the new extension will also be part of the epic's goal.
## Sub-issues
### Register Upstream
Document tracking proposal and work found [here](https://github.com/Kuadrant/kuadrant-operator/pull/1786)
- Extend RegisteredDataStore with upstream storage - kuadrant/kuadrant-operator#1790
- Implement server-side RegisterUpstreamMethod handler - kuadrant/kuadrant-operator#1791
- Add RegisterUpstreamMethod RPC to gRPC proto - kuadrant/kuadrant-operator#1792
- Implement client-side RegisterUpstreamMethod on ExtensionController - kuadrant/kuadrant-operator#1795
- Add RegisterUpstreamMethod to KuadranctCtx interface and UpstreamConfig type - kuadrant/kuadrant-operator#1796
- Create RegisterUpstreamMethod demo walkthrough and interactive script - kuadrant/kuadrant-operator#1797
### gRPC Reflection and Dynamic Message Building
Document tracking proposal and work found [here](https://github.com/Kuadrant/kuadrant-operator/pull/1817)
- Operator reflection and caching - kuadrant/kuadrant-operator#1841
- Operator reflection and caching - kuadrant/kuadrant-operator#1842
- Dynamic Service Type - kuadrant/wasm-shim#319
- Descriptor fetching - kuadrant/wasm-shim#320
### Action Pipeline
Document tracking proposal and work found [here](https://github.com/Kuadrant/kuadrant-operator/pull/1895)
- Rename RegisterUpstreamMethod to RegisterActionMethod - kuadrant/kuadrant-operator#1899
- Add ActionMethodConfig with Name and MessageTemplate fields - kuadrant/kuadrant-operator#1900
- Define action types and Pipeline interface - kuadrant/kuadrant-operator#1901
- Add PipelineOnRequest and PipelineOnResponse RPCs to gRPC proto - kuadrant/kuadrant-operator#1902
- Implement PipelineActionStore - kuadrant/kuadrant-operator#1903
- Implement server-side pipeline handlers with CEL intention validation - kuadrant/kuadrant-operator#1904
- Implement client-side NewPipeline and PipelineImpl - kuadrant/kuadrant-operator#1905
- Add ActionType discriminator to wasm Action struct - kuadrant/kuadrant-operator#1906
- Extend extension reconcilers for pipeline action to wasm Action translation - kuadrant/kuadrant-operator#1907
- Update wasm-shim to dispatch on ActionType - kuadrant/kuadrant-operator#1908
Contributor guide
Assessment
This issue has not been assessed yet.