Skip to content

Add MeshExtension API to extensions#3650

Merged
istio-testing merged 9 commits intoistio:masterfrom
liamawhite:extension-filter
Mar 25, 2026
Merged

Add MeshExtension API to extensions#3650
istio-testing merged 9 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 the MeshExtension API (formerly ExtensionFilter) to the extensions package, providing a unified mechanism for configuring WebAssembly and Lua filters with consistent targeting and configuration patterns. This 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

- Rename extension_filter.proto to mesh_extension.proto
- Update all references, comments, cue-gen tags, and doc annotations
- Update CRD kind from ExtensionFilter to MeshExtension
- Update release note
- Regenerate all artifacts
@liamawhite liamawhite changed the title Add ExtensionFilter API to extensions Add MeshExtension API to extensions Mar 24, 2026
@keithmattix
Copy link
Contributor

Ok, I know this is really bikeshedding.....but I don't really like MeshExtension, specifically because it's useable for gateways as well. What about trafficextension?

@ramaraochavali
Copy link
Contributor

but I don't really like MeshExtension, specifically because it's useable for gateways as well. What about trafficextension?

I am fine with that

- Rename mesh_extension.proto to traffic_extension.proto
- Update all references, comments, cue-gen tags, and doc annotations
- Update CRD kind from MeshExtension to TrafficExtension
- Rename release note file to add-traffic-extension.yaml
- Regenerate all artifacts
- Add ExecutionPhase as the canonical phase enum in traffic_extension.proto
- TrafficExtension.phase now uses ExecutionPhase
- Annotate PluginPhase in wasm.proto as kept for backward compat only
- Regenerate all artifacts
@liamawhite
Copy link
Member Author

Ok I think we should be good to go?

@keithmattix
Copy link
Contributor

@ramaraochavali one last review from you should do it!

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.

Thank you. This is great

@istio-testing istio-testing merged commit 9e4a5be into istio:master Mar 25, 2026
5 checks passed
liamawhite added a commit to liamawhite/istio that referenced this pull request Mar 25, 2026
The API PR (istio/api#3650) has been merged. This updates the codebase
to use the real upstream istio.io/api and istio.io/client-go modules,
removing the replace directives pointing to the liamawhite forks.

Key changes from the merged API:
- ExtensionFilter renamed to TrafficExtension
- PluginPhase renamed to ExecutionPhase (AUTHN/AUTHZ/STATS constants updated)
- Wasm/Lua fields moved into a FilterConfig oneof, requiring use of
  TrafficExtension_Wasm and TrafficExtension_Lua wrapper types
- TrafficExtension only has TargetRefs (plural), no singular TargetRef

Update all code, generated schema files, and tests accordingly.
liamawhite added a commit to liamawhite/istio that referenced this pull request Mar 25, 2026
The API PR (istio/api#3650) has been merged. This updates the codebase
to use the real upstream istio.io/api and istio.io/client-go modules,
removing the replace directives pointing to the liamawhite forks.

Key changes from the merged API:
- ExtensionFilter renamed to TrafficExtension
- PluginPhase renamed to ExecutionPhase (AUTHN/AUTHZ/STATS constants updated)
- Wasm/Lua fields moved into a FilterConfig oneof, requiring use of
  TrafficExtension_Wasm and TrafficExtension_Lua wrapper types
- TrafficExtension only has TargetRefs (plural), no singular TargetRef

Update all code, generated schema files, and tests accordingly.
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