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

Multi-Release-Epic: Sharding #1225

Closed
24 of 37 tasks
sttts opened this issue Jun 7, 2022 · 1 comment
Closed
24 of 37 tasks

Multi-Release-Epic: Sharding #1225

sttts opened this issue Jun 7, 2022 · 1 comment
Assignees
Labels
area/sharding Issues or PRs related to sharding changes epic Represents a larger feature with multiple stories feature-completion milestone-blocker Blocks closing out a milestone
Milestone

Comments

@sttts
Copy link
Member

sttts commented Jun 7, 2022

Demo Objective

  • kcp admin should be able to add shards for added capacity, each with its own etcd server.
  • shards should keep working (to be defined what this means exactly) when other shards die or are unavailable.
  • Add shard proxying and add (1-shard) sharded CI job with front-proxy #1203 the front-proxy knows how to forward workspace requests to shards
  • add (hard-coded) replication of certain object between shards:
    • defining ClusterWorkspace X in the parent workspace parent(X) on the shard the workspace X lives on.
    • APIExport that are bound by at least one non-local binding

Action Items

========= WIP, but won't merge by v0.6 =========

  • @p0lyn0mial hardcode second informer with non-local data.
  • @p0lyn0mial prototype and experiment with informer merging, and how to enable existing controller to work with second informer
  • get 2-shard e2e-sharded into place in CI, with limited test coverage
  • get ClusterWorkspace, APIExports, APIBindings, auth to work
    • @p0lyn0mial APIBindings on shards can bind APIExport on other shard
    • @p0lyn0mial ClusterWorkspaces can be scheduled to second shard

========= up to here for v0.7 ==========

add identities configmap in system:shard @p0lyn0mial

implement replication controller / cache server

========= up to here for v0.8 ==========

implement replication controller / cache server (continued)

authorization

  • shards should only be able to write their shard partition of the cache

subscription model

  • implement subscription model @sttts
type CachingInformer interface {
    Informer

    KeepWatching(clusterName logicalcluster.Name, labelSelector, ttl time.Time)
}

data removal

unused resources could be automatically removed

shard management, a few loose ideas:

what will decide when a new shard needs to be created ?
which cluster it gets deployed to ?
making other shards aware of the new shard ?

(in parallel, best effort) add some other controller(s), e.g. ClusterWorkspaces

[ ] wire informer both ways @p0lyn0mial

  • this includes a controller to cope with not-yet-synced informers

[ ] start the second informer (aka. TemporaryRootShardKcpSharedInformerFactory) in a dedicated post-start-hook @p0lyn0mial

Testing

  • get all e2e green with two shards

Backlog:

Stories

  • CRDB implements ThingReplicationClaim
  • etcd implements ThingReplicationClaim

Context

@sttts sttts added area/sharding Issues or PRs related to sharding changes epic Represents a larger feature with multiple stories milestone-blocker Blocks closing out a milestone labels Jun 7, 2022
@sttts sttts added this to the v0.6.0 milestone Jun 7, 2022
@sttts sttts added this to kcp Jun 7, 2022
@sttts sttts moved this to New in kcp Jun 7, 2022
@sttts sttts modified the milestones: v0.6.0, v0.7.0 Jul 12, 2022
@ncdc ncdc modified the milestones: v0.7, v0.8 Aug 8, 2022
@ncdc ncdc modified the milestones: v0.8, v0.9 Aug 30, 2022
@stevekuznetsov
Copy link
Contributor

Superseded by #1999

Repository owner moved this from New to Done in kcp Sep 16, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/sharding Issues or PRs related to sharding changes epic Represents a larger feature with multiple stories feature-completion milestone-blocker Blocks closing out a milestone
Projects
Status: Done
Development

No branches or pull requests

4 participants