Pure Go language bindings for ClusterD. ClusterD is the continued development of Apache Mesos and preserves its core HTTP and Protocol Buffer APIs. Clusterd-go communicates directly with a running ClusterD master and its agent instances. The project provides an idiomatic Go API for building ClusterD frameworks.
The v1.0.0 release contains the current ClusterD v1 API definitions used by the clusterd source tree, including scheduler, master, agent, executor, maintenance, quota, allocator, and resource-provider APIs.
The generated bindings and JSON codecs are checked in so consumers do not need the Protocol Buffers toolchain to use the library.
New projects should use the ClusterD v1 API bindings, located in api/v1.
Unless otherwise indicated, the remainder of this README describes the ClusterD v1 API implementation.
Please vendor this library to avoid unpleasant surprises via go get ....
The legacy Mesos v0 API version of the bindings, located in api/v0, is more mature but will not see any major development besides critical compatibility and bug fixes.
mesos-N tags mark the start of support for a specific Mesos version while maintaining backwards compatibility with the previous major version.
This release targets the current ClusterD v1 HTTP and Protocol Buffer
wire contract. The legacy v0 bindings remain available under api/v0 for
older Apache Mesos and ClusterD deployments.
- The SchedulerDriver API implemented
- The ExecutorDriver API implemented
- Example programs on how to use the API
- Modular design for easy readability/extensibility
- Go 1.26 or newer; https://go.dev/dl/
- ClusterD (the continued development of Apache Mesos), compatible with the v1 API
The checked-in generated code does not require protoc for normal builds.
Maintainers regenerating the bindings need protoc, protoc-gen-gogo, and
ffjson.
Users of this library are encouraged to vendor it or pin the v1.0.0 tag.
# download the source code
$ git clone https://github.com/m3scluster/clusterd-go.git
$ cd clusterd-go
# build the example binaries
$ make install$ make testThe project also supports the standard Go checks:
$ go test ./...
$ go vet ./...
$ go build ./...For Protocol Buffer regeneration, use the repository's make protobufs
target followed by make ffjson. The generated files must be reviewed with
git diff --check before committing.
Contributions are welcome. Please refer to CONTRIBUTING.md for guidelines.
This project is Apache License 2.0.
