Skip to content

Add ExtensionFilter API to extensions#3650

Open
liamawhite wants to merge 5 commits intoistio:masterfrom
liamawhite:extension-filter
Open

Add ExtensionFilter API to extensions#3650
liamawhite wants to merge 5 commits intoistio:masterfrom
liamawhite:extension-filter

Conversation

@liamawhite
Copy link
Member

@liamawhite liamawhite commented Feb 12, 2026

Please provide a description of this PR:

Adds native support for Lua filters as described in the following design doc.

Related implementation PR is here.

@liamawhite liamawhite requested a review from a team as a code owner February 12, 2026 17:30
@istio-testing istio-testing added the do-not-merge/work-in-progress Block merging of a PR because it isn't ready yet. label Feb 12, 2026
@istio-policy-bot
Copy link

😊 Welcome @liamawhite! This is either your first contribution to the Istio api repo, or it's been
a while since you've been here.

You can learn more about the Istio working groups, Code of Conduct, and contribution guidelines
by referring to Contributing to Istio.

Thanks for contributing!

Courtesy of your friendly welcome wagon.

@istio-testing istio-testing added the size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. label Feb 12, 2026
- Move top-level TrafficSelector to extension_filter.proto
- Keep WasmPlugin.TrafficSelector nested for backward compat
- Remove targetRef from ExtensionFilter
- Add release notes
@istio-policy-bot istio-policy-bot added the lifecycle/stale Indicates a PR or issue hasn't been manipulated by an Istio team member for a while label Mar 17, 2026
@istio-policy-bot istio-policy-bot removed the lifecycle/stale Indicates a PR or issue hasn't been manipulated by an Istio team member for a while label Mar 17, 2026
@liamawhite liamawhite changed the title [WIP] Add ExtensionFilter API to extensions Add ExtensionFilter API to extensions Mar 17, 2026
@liamawhite liamawhite removed the do-not-merge/work-in-progress Block merging of a PR because it isn't ready yet. label Mar 17, 2026
…mment

- Renumber ExtensionFilter fields to be contiguous (targetRefs=2, phase=3, priority=4, match=5)
- Wrap wasm/lua in oneof filter_config for type-safe mutual exclusion
- Clarify priority tiebreaker ordering (creationTimestamp, then name/namespace)
- Regenerate pb.go, pb.html, and CRD YAML
Copy link
Contributor

@ramaraochavali ramaraochavali left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Couple of naming questions for discussion

// -->
// +kubebuilder:validation:XValidation:message="only one of targetRefs or selector can be set",rule="(has(self.selector)?1:0)+(has(self.targetRefs)?1:0)<=1"
// +kubebuilder:validation:XValidation:message="exactly one of wasm or lua must be set",rule="has(self.wasm) != has(self.lua)"
message ExtensionFilter {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Filter in the name seems an implementation detail. Can we call it more generic like TrafficExtension/MeshExtension/ProxyExtensoin/ExtensionPolicy?

// +kubebuilder:validation:XValidation:message="exactly one of wasm or lua must be set",rule="has(self.wasm) != has(self.lua)"
message ExtensionFilter {
// Optional. Criteria used to select the specific set of pods/VMs on which
// this plugin configuration should be applied. If omitted, this
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: "this plugin" needs to change

repeated istio.type.v1beta1.PolicyTargetReference targetRefs = 2;

// Determines where in the filter chain this `ExtensionFilter` is to be injected.
PluginPhase phase = 3;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Again the PluginPhase seems WASM plugin specific. Should we call ExecutionPhase or Phase?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/XL Denotes a PR that changes 500-999 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants