I am no longer working with Nomad, Consul, Kubernetes, or container runtime sysadmin, and so this repository is not maintained. Feel free to fork! If you're committed, email me to get the crate name transferred.
A library for writing CNI plugins in Rust, and some plugins built with it.
- Plugins:
- host-routes, to add routes to the host
- host-neigh, to add neighbours to the host
- ipam-delegated, to stack multiple IPAM plugins
- ipam-ds-nomad, a delegated IPAM plugin which selects IP pool configuration from a Nomad job's metadata
- ipam-ds-static, a delegated IPAM plugin which selects IP pool configuration from the network configuration
- ipam-da-consul, a delegated IPAM plugin which allocates IPs from a pool stored in Consul KV
- Guides:
- API documentation for the
cni-plugin
crate. - CNI information on the cni.dev website.
- Dual-licensed with Apache 2.0 and MIT.
Note that these plugins should not be considered solid implementations. They work, and I use them, and eventually they'll surely evolve into robust software, but for now consider them beta quality, and alpha stability.
The cni-plugins
library can be built with a feature release-logs
that
enables verbose logging to a file in release builds, which usually is reserved
for debug (development) builds. Warning/error logs are always copied to stderr.
It's up to each plugin to carry through the feature, but all in this repo do.
The pre-build binary releases available below also come in these two flavours,
with the -verbose
suffix for productions builds with verbose logging to file.
Logs are appended to /var/log/cni/name-of-plugin.log
in production, and to
name-of-plugin.log
in the working directory in development.
Builds are available for x86-64 Linux, but adding architectures is often trivial, so please ask if needed.
Clone this repo, install the Rust toolchain, and build with:
# Standard production binary
cargo build --release
# Log-enabled production binary
cargo build --release --features release-logs
# Debug binary
cargo build