A library for writing CNI plugins in Rust, and some plugins built with it.
- 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
API documentation for the
- 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.
cni-plugins library can be built with a feature
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,
-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.
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