Kuadrant / Kuadrant/architecture

Extension SDK for Direct Policies

Open
#143 0 comments 0 reactions 1 assignee Claimed by @crstrn13 View on GitHub
kind/epic
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.