Documentation Request: Building distributed systems with SwarmKit
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 3.7k
- Forks
- 676
- Avg merge
- 4d 9h
- Merged PRs (30d)
- 6
Description
I'm hoping someone can point me in the right direction here, as most of the documentation and issues appear to be related to SwarmKit's place within the Docker Swarm ecosystem rather than as an independent platform on which to build distributed systems.
I'm keen to play with SwarmKit, hoping I can use it as a library so that I don't need to reimplement raft/encryption/etc.
Worker Nodes are responsible for running Tasks using an Executor. SwarmKit comes with a default Docker Container Executor that can be easily swapped out.
Manager Nodes on the other hand accept specifications from the user and are responsible for reconciling the desired state with the actual cluster state.
This functionality appears to satisfy exactly what I'm looking for, but I can't find any docs or examples of how these Executors would be implemented.
I would assume this involves building a custom ServiceSpec and handing it off to a custom Executor, but being new to Go I'm not really sure where to start. I'm not keen on forking SwarmKit to achieve what I'm looking to do, so if anyone can provide an example of using SwarmKit as a dependency on a project with a custom executor, and retaining the daemon/cli tools I'd be extremely grateful.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with SwarmKit's Worker Nodes and Executor model, the Manager Nodes' reconciliation flow, and the custom ServiceSpec and Executor entry points mentioned in the issue. Compare the existing Docker Container Executor and daemon/CLI tools, then document or exemplify using SwarmKit as a dependency with a custom executor while retaining those tools.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- docker, go
- Domain
- distributed-systems, documentation
- Issue type
- Documentation
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100