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

Fleet: expose sharding feature #11665

Open
weyfonk opened this issue Aug 19, 2024 · 0 comments
Open

Fleet: expose sharding feature #11665

weyfonk opened this issue Aug 19, 2024 · 0 comments
Labels
kind/enhancement QA/dev-automation Issues that engineers have written automation around so QA doesn't have look at this

Comments

@weyfonk
Copy link
Contributor

weyfonk commented Aug 19, 2024

Is your feature request related to a problem? Please describe.
Fleet supports sharding since 0.10. For now, users running Fleet through Rancher need to make use of the rancher-config config map as described here to be able to install Fleet with sharding support enabled. This should be easier and made accessible to all users, including those more comfortable with the web UI.

Sharding is meant to spread the load on controllers (both fleet-controller and gitjob controllers), enabling users to decide which shard, or which part of a Fleet deployment, will process a given workload. Sharding works in two steps:

  1. At Fleet installation time, a set of shards is configured, each with their ID and (optional) node selector. This results in Fleet creating as many sets of [fleet-controller + gitjob] pods as there are configured shards (0 to n), plus, in all cases, a set of such pods for unsharded workloads;
  2. When creating a GitRepo resource, a user can then label it with fleet.cattle.io/shard-ref: my-awesome-shard-ID to ensure that it will be deployed by the controllers which bear the corresponding shard name. In particular:
    • If that label is not specified, then the workload will be processed by the pods deployed for unsharded workloads.
    • If that label has a value which does not match any existing shard ID (ie no Fleet controller deployment exists for that shard ID), then the GitRepo will not be deployed by any Fleet controller.

Describe the solution you'd like
This enhancement would contain the following components:

  • UI to expose settings for Fleet sharding, enabling users to set the following for each shard:
    • ID, eg. shard0
    • (optional, at user's discretion) Node selector, eg. {"kubernetes.io/hostname": "k3d-upstream-server-0"}
  • enhancement to the existing UI for creating a GitRepo, taking the new fleet.cattle.io/shard-ref label into account and enabling only the following values:
    • any shard ID configured at Fleet installation time
    • an empty value (for unsharded workloads)

Describe alternatives you've considered
See problem description above: sharding is usable on the command line, but this may not be suitable for all users.

Additional context
More information here. Please feel free to reach out to the Fleet team if any of this is unclear.

Jira: UXUI-236

@github-actions github-actions bot added the QA/dev-automation Issues that engineers have written automation around so QA doesn't have look at this label Aug 19, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/enhancement QA/dev-automation Issues that engineers have written automation around so QA doesn't have look at this
Projects
None yet
Development

No branches or pull requests

1 participant