This repository takes inspiration from the Kubernetes in Docker (kind) project. It provides a quick and easy playground for HashiCorp's Nomad orchestrator, enabling multi-node clusters for testing, development, and failure scenario simulation.
- Multi-node Nomad clusters - Run server and client nodes in Docker containers
- Integrated service discovery - Consul integration for service mesh capabilities
- Simple CLI - Intuitive commands for cluster lifecycle management
- Multiple clusters - Run multiple isolated clusters simultaneously
- Named profiles - Save and reuse cluster configurations
- Nomad (server and client nodes)
- Consul (service discovery and configuration)
- Vault (secrets management)
Bits and pieces adapted from:
- https://github.com/kubernetes-sigs/kind
- https://github.com/multani/docker-nomad
- https://github.com/hashicorp/docker-consul
make buildThis builds the hind binary to ./bin/hind.
Build all required Docker images:
./bin/hind build allOr build specific images:
./bin/hind build nomad # Build Nomad image
./bin/hind build consul # Build Consul imageStart a cluster (default name is "default"):
./bin/hind startStart a named cluster with custom configuration:
./bin/hind start dev --clients=3List all running clusters:
./bin/hind listGet details about a specific cluster:
./bin/hind get devStop a cluster (keeps containers for restart):
./bin/hind stop devDelete a cluster completely:
./bin/hind rm devOnce your cluster is running, access the web interfaces:
# Nomad UI
open http://localhost:4646/ui
# Consul UI
open http://localhost:8500/uiAfter starting a cluster, you can submit jobs to Nomad:
nomad run jobs/example.hcl./bin/hind build <image> # Build a specific image (nomad, consul, etc.)
./bin/hind build all # Build all images./bin/hind start [cluster-name] # Create and start a cluster
--clients int # Number of client nodes (default: 1)
--version string # Hind image version to use (default: "latest")
--timeout duration # Timeout for starting cluster (default: 5m)
--verbose # Enable verbose output
./bin/hind list # List all clusters
./bin/hind get <name> # Get details about a cluster
./bin/hind stop <name> # Stop a cluster
./bin/hind rm <name> # Delete a cluster completely
./bin/hind version # Show version informationThis project requires:
- Go 1.21+ - For building the CLI
- Docker - For running containers
- make - For build automation
- Colima 0.6.x+ with cgroups v2 enabled
- Docker CLI
- Nomad CLI - For submitting jobs and interacting with Nomad
- Consul CLI - For service discovery operations
This project has been tested on:
- macOS with Colima 0.6.x+ (Docker 24.0+, cgroups v2)
The key requirement is cgroups v2 support on the Docker host.
- Cluster state is persisted in
~/.hind/clusters/<cluster-name>/ - Port conflicts may occur when running multiple clusters simultaneously
# Build the CLI
make build
# Run tests
make test
# Format and vet code
go fmt ./...
go vet ./...See CLAUDE.md for development guidelines and project structure.
MIT