Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

clustermesh: enable endpointslice sync by default on headless services #32021

Merged
merged 1 commit into from
Apr 19, 2024

Conversation

MrFreezeex
Copy link
Member

@MrFreezeex MrFreezeex commented Apr 17, 2024

Please ensure your pull request adheres to the following guidelines:

  • For first time contributors, read Submitting a pull request
  • All code is covered by unit and/or runtime tests where feasible.
  • All commits contain a well written commit description including a title,
    description and a Fixes: #XXX line if the commit addresses a particular
    GitHub issue.
  • If your commit description contains a Fixes: <commit-id> tag, then
    please add the commit author[s] as reviewer[s] to this issue.
  • All commits are signed off. See the section Developer’s Certificate of Origin
  • Provide a title or release-note blurb suitable for the release notes.
  • Are you a user of Cilium? Please add yourself to the Users doc
  • Thanks for contributing!

As it's highly likely that for an Headless Service the user wants to sync EndpointSlices we should set it by default in this case and make the behavior opt-out instead of opt-in.

It's highly unlikely that this change anything for existing setup as before endpoint slice synchronization were a thing Headless services were ignored. Also EndpointSlice sync is still guarded by a feature flag set in helm/in the configmap.

Make endpointslice clustermesh syncing opt-out for headless services 

@MrFreezeex MrFreezeex requested review from a team as code owners April 17, 2024 09:04
@maintainer-s-little-helper maintainer-s-little-helper bot added the dont-merge/needs-release-note-label The author needs to describe the release impact of these changes. label Apr 17, 2024
@MrFreezeex MrFreezeex force-pushed the headless-sync-epslice branch 4 times, most recently from c723f23 to 07c8798 Compare April 17, 2024 10:04
@MrFreezeex
Copy link
Member Author

/test

Copy link
Member

@YutaroHayakawa YutaroHayakawa left a comment

Choose a reason for hiding this comment

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

I'm not sure if this is sufficient to be enabled by default. AFAIK, Cilium Ingress/GWAPI works without this endpointslice synchronization, so this is only relevant for the people who wants to integrate third-party controllers which is I would say not a regular use case. What do you think @giorio94?

@giorio94
Copy link
Member

I'm not sure if this is sufficient to be enabled by default. AFAIK, Cilium Ingress/GWAPI works without this endpointslice synchronization, so this is only relevant for the people who wants to integrate third-party controllers which is I would say not a regular use case. What do you think @giorio94?

Headless services represent a special case, and they don't currently work as expected if marked as global, because coredns doesn't know about the remote backends (given that the corresponding epslices are not present locally). Given the above, I personally think it is fine to enable endpointslice synchronization by default for them (only if marked as global, obviously), especially because the endpointslice synchronization is already gated by a dedicated feature flag (disabled by default), and thus the change would not affect any existing deployment. Differently, I wouldn't enable endpointslice synchronization by default for all the other service types, as required only by third-party controllers, and potentially associated with scalability concerns.

Copy link
Member

@giorio94 giorio94 left a comment

Choose a reason for hiding this comment

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

Thanks!

@lambdanis lambdanis added the release-note/minor This PR changes functionality that users may find relevant to operating Cilium. label Apr 19, 2024
@maintainer-s-little-helper maintainer-s-little-helper bot removed the dont-merge/needs-release-note-label The author needs to describe the release impact of these changes. label Apr 19, 2024
@lambdanis lambdanis added the area/clustermesh Relates to multi-cluster routing functionality in Cilium. label Apr 19, 2024
Copy link
Contributor

@lambdanis lambdanis left a comment

Choose a reason for hiding this comment

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

Docs good. Should this change be highlighted in the upgrade notes too?

@MrFreezeex
Copy link
Member Author

MrFreezeex commented Apr 19, 2024

Should this change be highlighted in the upgrade notes too?

Hmmm that's a good point thanks, but I think it should not because the whole feature of endpointslice syncing was not available in the previous stable release so there is no existing users of this and it's still guarded by a helm config/feature flag disabled by default. So it changes the default but only if prior to that you enabled the feature flag (which wasn't here in any releases so far).

@MrFreezeex
Copy link
Member Author

/test

As it's highly likely that for an Headless Service the user wants to
sync EndpointSlices we should set it by default in this case and make the
behavior opt-out instead of opt-in.

It's highly unlikely that this change anything for existing setup as
before endpoint slice synchronization were a thing Headless services
were ignored. Also EndpointSlice sync is still guarded by a feature flag
set in helm/in the configmap.

Signed-off-by: Arthur Outhenin-Chalandre <arthur@cri.epita.fr>
@MrFreezeex
Copy link
Member Author

/ci-integration

@MrFreezeex
Copy link
Member Author

/ci-ginkgo

@MrFreezeex
Copy link
Member Author

(I rebased as an attempt to have less flakes in the CI)

@MrFreezeex
Copy link
Member Author

/test

@maintainer-s-little-helper maintainer-s-little-helper bot added the ready-to-merge This PR has passed all tests and received consensus from code owners to merge. label Apr 19, 2024
@julianwiedmann julianwiedmann added this pull request to the merge queue Apr 19, 2024
Merged via the queue into cilium:main with commit 5f0fafe Apr 19, 2024
62 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/clustermesh Relates to multi-cluster routing functionality in Cilium. ready-to-merge This PR has passed all tests and received consensus from code owners to merge. release-note/minor This PR changes functionality that users may find relevant to operating Cilium.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants