Skip to content

fix(gateway-api): honor server_side_apply when installing Gateway API CRDs - #13448

Open
mehrdadbn9 wants to merge 1 commit into
kubernetes-sigs:masterfrom
mehrdadbn9:fix/gateway-api-server-side
Open

fix(gateway-api): honor server_side_apply when installing Gateway API CRDs#13448
mehrdadbn9 wants to merge 1 commit into
kubernetes-sigs:masterfrom
mehrdadbn9:fix/gateway-api-server-side

Conversation

@mehrdadbn9

Copy link
Copy Markdown
Contributor

What type of PR is this?

/kind bug

What this PR does / why we need it

The Gateway API CRD install task used the kube module, which always runs client-side kubectl apply. The server_side_apply variable (repo convention in roles/kubernetes-apps/utils/vars/main.yml) is ignored by this task.

When the Gateway API CRDs are re-applied across playbook runs (channel upgrades, re-runs), client-side apply keeps growing the last-applied-configuration annotation on the httproutes.gateway.networking.k8s.io CRD. Once it passes the 262144-byte etcd annotation limit, apply fails:

The CustomResourceDefinition "httproutes.gateway.networking.k8s.io" is invalid: metadata.annotations: Too long: may not be more than 262144 bytes

This leaves the cluster without HTTPRoute support, as reported.

This task now runs kubectl apply --server-side={{ server_side_apply | default(false) | lower }}, honors the existing repo variable, adds retries, and derives changed state from kubectl output (configured / created / serverside-applied).

Which issue(s) this PR fixes

Relates to #13086 (CRD annotation growth failure mode; full repro details in the issue).

Special notes for your reviewer

  • Default stays false, so existing behavior is unchanged for users who never set the variable; users who set server_side_apply: true now get SSA here like everywhere else.
  • I did not add --force-conflicts: SSA on CRDs from a single controller should not conflict; can add if reviewers prefer.
  • kube module usages elsewhere (metallb, cluster_roles, nvidia) have the same latent pattern but smaller/no CRD YAMLs; left untouched to keep this PR minimal.

Does this PR introduce a user-facing change?

The Gateway API addon task now honors the server_side_apply variable; repeated installs no longer bloat the last-applied-configuration annotation on Gateway API CRDs past the etcd 256KB limit.

… CRDs

The Gateway API install task used the kube module, which always runs
client-side kubectl apply. Users who enable server_side_apply expect
server-side apply, but this task ignored the setting. Repeated
client-side applies grow the last-applied-configuration annotation on
the httproutes CRD past the 262144-byte etcd limit and the install
fails with 'metadata.annotations: Too long'.

Switch the task to kubectl apply --server-side=<var> (default false,
matching repo convention in kubernetes-apps/utils/vars/main.yml), add
retries, and detect changed state from kubectl output.

Relates to issue 13086.

Signed-off-by: Mehrdad Biukian Naeini <mehrdadbiukian@gmail.com>
@kubernetes-prow kubernetes-prow Bot added release-note Denotes a PR that will be considered when it comes time to generate release notes. kind/bug Categorizes issue or PR as related to a bug. labels Sep 1, 2026
@kubernetes-prow

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: mehrdadbn9
Once this PR has been reviewed and has the lgtm label, please assign yankay for approval. For more information see the Code Review Process.

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

Details Needs approval from an approver in each of these files:

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

@kubernetes-prow kubernetes-prow Bot added needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. size/S Denotes a PR that changes 10-29 lines, ignoring generated files. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. labels Sep 1, 2026
@kubernetes-prow

Copy link
Copy Markdown
Contributor

Hi @mehrdadbn9. Thanks for your PR.

I'm waiting for a kubernetes-sigs member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work.

Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@yankay

yankay commented Sep 2, 2026

Copy link
Copy Markdown
Member

/ok-to-test

@kubernetes-prow kubernetes-prow Bot added ok-to-test Indicates a non-member PR verified by an org member that is safe to test. and removed needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. labels Sep 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. kind/bug Categorizes issue or PR as related to a bug. ok-to-test Indicates a non-member PR verified by an org member that is safe to test. release-note Denotes a PR that will be considered when it comes time to generate release notes. size/S Denotes a PR that changes 10-29 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants