Skip to content

Conversation

dprotaso
Copy link
Contributor

@dprotaso dprotaso commented Feb 3, 2025

Part of #1713

Merge #3589 beforehand (to make this diff easier)

Note: this required two different client sets because if you try to generate a client set containing the stable group (gateway.networking.k8s.io) and experimental (gateway.networking.k8s-x.io) client-gen uses gateway part from both api groups for naming in the client set and it creates a conflict

  • refactor codegen scripts to make it easier to generate two clients (to be removed)
  • add listenerset types
  • adjust GEP to match go type
  • run deepcopy-gen & register-gen
  • perform code generation

Release Note

Introduces ListenerSet API & Generate Clients (in the group gateway.networking.k8s-x.io)

@k8s-ci-robot k8s-ci-robot added the do-not-merge/release-note-label-needed Indicates that a PR should not merge because it's missing one of the release note labels. label Feb 3, 2025
@k8s-ci-robot k8s-ci-robot added cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. kind/gep PRs related to Gateway Enhancement Proposal(GEP) size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. release-note Denotes a PR that will be considered when it comes time to generate release notes. and removed do-not-merge/release-note-label-needed Indicates that a PR should not merge because it's missing one of the release note labels. labels Feb 3, 2025
@dprotaso
Copy link
Contributor Author

dprotaso commented Feb 3, 2025

I'm going to pull

refactor codegen scripts to make it easier to generate two clients

Into a separate PR

@dprotaso
Copy link
Contributor Author

dprotaso commented Feb 3, 2025

/hold for #3589

@dprotaso dprotaso changed the title ListenerSet APIs + Generated Clients [wip] ListenerSet APIs + Generated Clients Feb 3, 2025
@k8s-ci-robot k8s-ci-robot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Feb 3, 2025
@dprotaso dprotaso changed the title [wip] ListenerSet APIs + Generated Clients ListenerSet APIs + Generated Clients Feb 3, 2025
@k8s-ci-robot k8s-ci-robot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Feb 3, 2025
@dprotaso
Copy link
Contributor Author

dprotaso commented Feb 4, 2025

/hold need to add the Gateway changes

@dprotaso
Copy link
Contributor Author

dprotaso commented Feb 4, 2025

/hold cancel

@k8s-ci-robot k8s-ci-robot added do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. and removed do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. labels Feb 4, 2025
@shaneutt shaneutt self-assigned this Feb 6, 2025
@shaneutt shaneutt self-requested a review February 6, 2025 15:52
@dprotaso
Copy link
Contributor Author

dprotaso commented Feb 6, 2025

Note: this required two different client sets because if you try to generate a client set containing the stable group (gateway.networking.k8s.io) and experimental (gateway.networking.k8s-x.io) client-gen uses gateway part from both api groups for naming in the client set and it creates a conflict

Ok - I figured out there's a marker

+groupGoName=SomeUniqueShortName

So we could have a single clientset that has stable and experimental apis - let me know what people prefer

Copy link
Member

@shaneutt shaneutt left a comment

Choose a reason for hiding this comment

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

I think overall we're heading in a good direction here, but I think we need to reiterate what feels like a more obvious question as I read more: "What is a Gateway after this, really?"

Personally I'll have to think on this quite a bit and come back around to it 🤔

@dprotaso
Copy link
Contributor Author

Namespace support is in a follow up PR #3632

Copy link
Member

@shaneutt shaneutt left a comment

Choose a reason for hiding this comment

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

We still need to update the GEP status to Experimental.

Copy link
Member

@shaneutt shaneutt 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 @dprotaso for working this one for many months, through issues, discussions, zoom syncs, and PRs. Also thank you for #3632 I think it'll be fantastic if we can get that into 1.3 as well.

Once everyone's current comments are resolved, I think this is ready to move into experimental and start getting feedback from implementations.

/approve

@k8s-ci-robot k8s-ci-robot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Feb 25, 2025
Copy link
Member

@robscott robscott left a comment

Choose a reason for hiding this comment

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

Thanks @dprotaso! One nit, otherwise LGTM.

@robscott robscott added this to the v1.3.0 milestone Feb 26, 2025
@youngnick
Copy link
Contributor

LGTM with @robscott's requested changes.

Copy link
Member

@mlavacca mlavacca left a comment

Choose a reason for hiding this comment

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

Once the remaining comments are resolved, lgtm!

@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: dprotaso, mlavacca, robscott, shaneutt

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:
  • OWNERS [mlavacca,robscott,shaneutt]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@dprotaso
Copy link
Contributor Author

All comments are resolved - PTAL and once this is merged I'll rebase the other PR.

@robscott
Copy link
Member

Thanks @dprotaso!

/lgtm
/hold cancel

@k8s-ci-robot k8s-ci-robot removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Feb 26, 2025
@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Feb 26, 2025
@k8s-ci-robot k8s-ci-robot merged commit 79af272 into kubernetes-sigs:main Feb 26, 2025
13 checks passed
@dprotaso dprotaso deleted the listenerset branch February 26, 2025 19:30
EyalPazz pushed a commit to EyalPazz/gateway-api that referenced this pull request Feb 27, 2025
* add listenerset types

* adjust GEP to match go type

* run deepcopy-gen & register-gen

* perform code generation

* Add ListenerSetList type

* remove TODO for cel validation that allows an optional port

* add Gateway allowedListeners property

* Add 'None' as an allowable option for FromNamespaces

* combine into a single client

* fix group name to be x-k8s.io

* add a blurb about listener conflict

* listener names don't need to be unique across listenersets and gateways

* change use of ListenerSet conditions to a MUST requirement

* add a Programmed Reason of ParentNotProgrammed

* fix typo

* parentRef is not optional

* add a note about Gateway Listener list MAY drop MinItems=1 requirement

* Update GEP to experimental

* update GEP metadata

* AllowedListeners is no longer a list
EyalPazz pushed a commit to EyalPazz/gateway-api that referenced this pull request Feb 27, 2025
* add listenerset types

* adjust GEP to match go type

* run deepcopy-gen & register-gen

* perform code generation

* Add ListenerSetList type

* remove TODO for cel validation that allows an optional port

* add Gateway allowedListeners property

* Add 'None' as an allowable option for FromNamespaces

* combine into a single client

* fix group name to be x-k8s.io

* add a blurb about listener conflict

* listener names don't need to be unique across listenersets and gateways

* change use of ListenerSet conditions to a MUST requirement

* add a Programmed Reason of ParentNotProgrammed

* fix typo

* parentRef is not optional

* add a note about Gateway Listener list MAY drop MinItems=1 requirement

* Update GEP to experimental

* update GEP metadata

* AllowedListeners is no longer a list
k8s-ci-robot pushed a commit that referenced this pull request Mar 4, 2025
* apis: add implementation for GEP-3388 HTTPRoute Retry Budget

* fmt and add descriptions for parameters

* Move GEP 3388 to Experimental

* make generate

* Minor change

* Require both parameters of RequestRate

* Begin fixing Retry description. Add defaults, some validation, in CommonRetryPolicy

* Taking the liberty of renaming CommonRetryPolicy to RetryConstraint

* Shamelessly copying from backendlbpolicy and backendtlspolicy to conform with api structure

* Fleshing out the description for RetryConstraint

* refactor codegen scripts to make it easier to generate two clients

* Attempting to match the experimental API structure that dprotaso made in #3588

* Delete files that were generated before moving to apisx

* undo commenting

* Working to fix code gen following merge

* Fix api group name

* capitalize RFC 2119 keyword

* Addressing comments from code review

* missing file

* fix imports

* Modify descriptions; add greater validation

* Update apisx/v1alpha2/backendtrafficpolicy.go

Co-authored-by: Rob Scott <[email protected]>

* Not complete, but adding CEL tests for backend traffic policy

* fix missing retryConstraint in test struct; add tests for invalid config

* move to apis/v1alpha1

* add main_test

* rename file

* fix missing quotes :)

* fix CEL condition

* move validation message to interval field directly

* remove unused apisx/v1alpha2 file

* remove more files from before merging experimental api versions

---------

Co-authored-by: Dave Protasowski <[email protected]>
Co-authored-by: Rob Scott <[email protected]>
gcs278 added a commit to gcs278/gateway-api that referenced this pull request Mar 7, 2025
GEP-1713 was previously listed as provisional, but PR kubernetes-sigs#3588 moved it to experimental.
gcs278 added a commit to gcs278/gateway-api that referenced this pull request Mar 7, 2025
GEP-1713 was previously listed as provisional in the website, but PR kubernetes-sigs#3588
moved it to experimental.
k8s-ci-robot pushed a commit that referenced this pull request Mar 10, 2025
GEP-1713 was previously listed as provisional in the website, but PR #3588
moved it to experimental.
EyalPazz pushed a commit to EyalPazz/gateway-api that referenced this pull request Mar 18, 2025
GEP-1713 was previously listed as provisional in the website, but PR kubernetes-sigs#3588
moved it to experimental.
// Gateway.
NamespacesFromSame FromNamespaces = "Same"
// No Routes/ListenerSets may be attached to this Gateway.
NamespacesFromNone FromNamespaces = "None"
Copy link
Contributor

Choose a reason for hiding this comment

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

@dprotaso what's the user case for None?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Indicates a PR has been approved by an approver from all required OWNERS files. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. kind/gep PRs related to Gateway Enhancement Proposal(GEP) lgtm "Looks good to me", indicates that a PR is ready to be merged. release-note Denotes a PR that will be considered when it comes time to generate release notes. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants