/nomad-driver-ch

Experimental Nomad Container Host driver plugin

Primary LanguageGoOtherNOASSERTION

Nomad Container Host (ch) Driver Plugin

This is a Nomad Driver plugin that allows HSDP Container Host instances to function as Nomad client nodes.

The initial focus is on getting things working on a single client. Once this is stable we will expand the scope of the project to cluster setups and possibly enabling auto scaling features.

The primary goal of this project is to build knowledge of Nomad and its internals and to validate Nomad as a possible alternative to Kubernetes which is much more complex and heavy weight.

Limitations and aspirations

The current Container Host architecture rules out any sort of multi-tenancy capability of the Nomad cluster so any deployment using this driver is effectively single tenant today. This is fine as there is very little overhead. Customers can theoretically spin up dozens of clusters side by side. Even though the driver is Container Host specific, any knowledge we gain should be applicable to any future hardened environment. Potentially, it can also be an interesting platform for on-premise or hybrid deployments.

Requirements

  • Nomad v1.1+
  • Go v1.17 or later (to build the plugin)

Building the Plugin

Clone the repository somewhere in your computer. This project uses Go modules so you will need to set the environment variable GO111MODULE=on or work outside your GOPATH if it is set to auto or not declared.

$ git clone https://github.com/loafoe/nomad-driver-ch

Enter the plugin directory.

Build the plugin.

$ go build .

Deploying Driver Plugins in Nomad

$ nomad agent -dev -config=./example/agent.hcl -plugin-dir=$(pwd)

# in another shell
$ nomad run ./example/example.nomad
$ nomad logs <ALLOCATION ID>

License

Apache 2.0