CNI Plugins
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.
Obtain plugins
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.
Flavours
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.
From binary release
Builds are available for x86-64 Linux, but adding architectures is often trivial, so please ask if needed.
From source
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