Skip to content

Conversation

@howardjohn
Copy link
Contributor

Description

Blocked by agentgateway/agentgateway#696

This adds HTTP as an ext_authz mode for Agentgateway

Change Type

/kind feature

Changelog

NONE

Additional Notes

@gateway-bot gateway-bot added kind/feature Categorizes issue or PR as related to a new feature. release-note-none labels Dec 3, 2025
@lgadban lgadban self-requested a review December 4, 2025 20:33
//
// +optional
// +kubebuilder:validation:MaxItems=64
AllowedRequestHeaders []ShortString `json:"allowedRequestHeaders,omitempty"`
Copy link
Contributor

Choose a reason for hiding this comment

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

on the envoy side this was a shared type between gRPC and HTTP, is it useful to do the same here?
i.e. should we move this out of the HTTP-specific type?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I kind of like it split since the docs are differnt for each (one defaults to all, the other does not) but I am fine either way.
tbh I don't get why anyone would not send all for gRPC but 🤷

Copy link
Contributor

Choose a reason for hiding this comment

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

I can buy the split for the different defaults (it was very hard to accurately portray that in the shared envoy type!) but just to make sure I'm not missing something, I don't see this current in the gRPC extauth type yet, correct?

And separately, given:

I kind of like it split since the docs are differnt for each (one defaults to all, the other does not) but I am fine either way.

I'm assuming this is to maintain the weird behavior envoy currently to e.g. enable compatibility with existing extauth servers?

//
// +optional
// +kubebuilder:validation:MaxProperties=64
Metadata map[string]shared.CELExpression `json:"metadata,omitempty"`
Copy link
Contributor

Choose a reason for hiding this comment

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

since this is a duplicated type between HTTP and gRPC is it worth moving up a level?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Its duplicated type but has entirely different behavior. One is the metadata to populate in the grpc request, and the grpc server returns the response metadata. In http, there is no metadata to send in the request or response, and this field instead sets response metadata based on the HTTP response.

Perhaps more explicit naming would help

Copy link
Contributor

Choose a reason for hiding this comment

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

Yeah, I wasn't paying close enough attention as was tricked by the similar naming.

Is there a more specific term for the agentgateway metadata?

Copy link
Contributor

Choose a reason for hiding this comment

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

it's long but maybe metadataFromResponse or something like that?

//
// +optional
// +kubebuilder:validation:MaxItems=64
AllowedRequestHeaders []ShortString `json:"allowedRequestHeaders,omitempty"`
Copy link
Contributor

Choose a reason for hiding this comment

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

I can buy the split for the different defaults (it was very hard to accurately portray that in the shared envoy type!) but just to make sure I'm not missing something, I don't see this current in the gRPC extauth type yet, correct?

And separately, given:

I kind of like it split since the docs are differnt for each (one defaults to all, the other does not) but I am fine either way.

I'm assuming this is to maintain the weird behavior envoy currently to e.g. enable compatibility with existing extauth servers?

//
// +optional
// +kubebuilder:validation:MaxProperties=64
Metadata map[string]shared.CELExpression `json:"metadata,omitempty"`
Copy link
Contributor

Choose a reason for hiding this comment

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

Yeah, I wasn't paying close enough attention as was tricked by the similar naming.

Is there a more specific term for the agentgateway metadata?

// If unset, by default the `envoy.filters.http.jwt_authn` key is set if the JWT policy is used as well, for compatibility.
// +kubebuilder:validation:MaxProperties=64
// +optional
Metadata map[string]shared.CELExpression `json:"metadata,omitempty"`
Copy link
Contributor

Choose a reason for hiding this comment

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

maybe forwardMetadata ?

//
// +optional
// +kubebuilder:validation:MaxProperties=64
Metadata map[string]shared.CELExpression `json:"metadata,omitempty"`
Copy link
Contributor

Choose a reason for hiding this comment

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

it's long but maybe metadataFromResponse or something like that?

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

Labels

kind/feature Categorizes issue or PR as related to a new feature. release-note-none

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants