istio/api

layered future: indicate whether a policy is implemented by the waypoint

Opened this issue · 7 comments

Describe the feature request

Implementations with variance from stock MUST adopt the mechanism used by the Gateway API specification to indicate whether a policy is successfully implemented by a Waypoint. See PolicyAncestorStatus and in particular PolicyConditionReason. For clarity stock OSS Istio will adopt the same mechanism and use the ACCEPTED state to indicate support for its own APIs.

Describe alternatives you've considered

Affected product area (please put an X in all that apply)

[ ] Configuration Infrastructure
[ ] Docs
[ ] Installation
[ ] Networking
[ ] Performance and Scalability
[X] Policies and Telemetry
[ ] Security
[ ] Test and Release
[ ] User Experience

Additional context
Istio’s Layered Future, Policy and Conformance

It looks like the way to do this might be to add new functionality to our generation tooling to support a flag like "pasgwstatus".

// +cue-gen:VirtualService:subresource:pasgwstatus

The k8s gw status stuff is not a new subresource, just a new struct within status

So just a new field in IstioStatus

Thanks John. The intent was to find a way to selectively add it. Are we OK with all the Istio resources getting these fields and we'll just ignore them if they're not useful then?

The crd is just

          status:
            type: object
            x-kubernetes-preserve-unknown-fields: true

anyways.

Also your example was for VirtualService -- I assume we actually want it for almost everything but VS (and GW/DR)?

Yeah, Virtual service is not where we want it. It was just a proto where I found the marker for a (admittedly sloppy) copy/paste example. Sorry for the confusion there.

This seems good - would we additionally want to consider implementing https://gateway-api.sigs.k8s.io/geps/gep-2162/ on the istio-waypoint GatewayClass if that hasn't been done already, and encourage implementing it for any pluggable waypoint implementations, to advertise which features are supported?