Overview
Bootstrap end-to-end testing for the Kuadrant Extensions SDK using PipelinePolicy — an out-of-tree extension that declaratively defines action pipelines (gRPC upstreams, request-phase actions, response-phase actions) via a CRD.
PipelinePolicy is the first out-of-tree extension built with the SDK. Testing it validates both the extension's functionality and the SDK's developer experience for third-party consumers.
Scope
This epic covers:
- Model & fixtures — Python class for PipelinePolicy, pytest fixtures for creating and managing PipelinePolicy resources, and a basic happy-path smoke test.
- Comprehensive test cases — Deeper coverage of all action types, edge cases, error paths, targeting modes, and interactions with other Kuadrant policies.
Out of scope: Deployment and installation of the extension (CRDs, RBAC, initContainer patching). The extension is pre-installed on the test cluster via the helm chart.
CRD Spec Summary
| Field |
Description |
targetRef |
Gateway API LocalPolicyTargetReferenceWithSectionName (HTTPRoute or Gateway) |
actionMethods[] |
gRPC upstream definitions (name, url, service, method, messageTemplate) |
request[] |
Ordered request-phase actions: allow (CEL predicate) or grpc_method (call upstream) |
response[] |
Ordered response-phase actions: add_headers or with_response_code |
Sub-issues
Overview
Bootstrap end-to-end testing for the Kuadrant Extensions SDK using PipelinePolicy — an out-of-tree extension that declaratively defines action pipelines (gRPC upstreams, request-phase actions, response-phase actions) via a CRD.
PipelinePolicy is the first out-of-tree extension built with the SDK. Testing it validates both the extension's functionality and the SDK's developer experience for third-party consumers.
Scope
This epic covers:
Out of scope: Deployment and installation of the extension (CRDs, RBAC, initContainer patching). The extension is pre-installed on the test cluster via the helm chart.
CRD Spec Summary
targetRefLocalPolicyTargetReferenceWithSectionName(HTTPRoute or Gateway)actionMethods[]request[]allow(CEL predicate) orgrpc_method(call upstream)response[]add_headersorwith_response_codeSub-issues