moby / moby/swarmkit

Documentation Request: Building distributed systems with SwarmKit

Open
#2,885 1 comment 1 reaction 0 assignees View on GitHub

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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.