2022-02-10 09:50:38 -05:00
|
|
|
# Netavark: A container network stack
|
|
|
|
|
|
|
|
|
|
This document is currently written with Fedora as a reference. As Netavark
|
|
|
|
|
gets shipped in other distros, this should become a distro-agnostic
|
|
|
|
|
document.
|
|
|
|
|
|
|
|
|
|
## Fedora Users
|
|
|
|
|
Netavark is available as an officlal Fedora package on Fedora 35 and newer versions
|
|
|
|
|
and is only meant to be used with Podman v4 and newer releases.
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
$ sudo dnf install netavark
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
**NOTE:** Fedora 35 users will not be able to install Podman v4 using the default yum
|
|
|
|
|
repositories. Please consult the Podman packaging docs for instructions on how
|
|
|
|
|
to fetch Podman v4.0 on Fedora 35.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
After installation, if you would like to migrate all your containers to use
|
|
|
|
|
Netavark, you will need to set `network_backend = "netavark"` under
|
|
|
|
|
the `[network]` section in your containers.conf (typically located at:
|
|
|
|
|
`/usr/share/containers/containers.conf`
|
|
|
|
|
|
|
|
|
|
If you would like to test the latest unreleased upstream code, try the
|
|
|
|
|
podman-next COPR
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
$ sudo dnf copr enable rhcontainerbot/podman-next
|
|
|
|
|
|
|
|
|
|
$ sudo dnf install netavark
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
**CAUTION:** The podman-next COPR provides the latest unreleased sources of Podman,
|
|
|
|
|
Netavark and Aardvark-dns as rpms which would override the versions provided by
|
|
|
|
|
the official packages.
|
|
|
|
|
|
|
|
|
|
## Distro Packagers
|
|
|
|
|
|
2022-02-22 13:41:01 -06:00
|
|
|
The vendored sources for netavark will be attached to each netavark release as
|
|
|
|
|
a tarball. You can download them with the following:
|
|
|
|
|
|
2024-01-25 14:27:38 +05:30
|
|
|
`https://github.com/containers/netavark/releases/download/v{version}/netavark-v{version}-vendor.tar.gz`
|
2022-02-22 13:41:01 -06:00
|
|
|
|
2022-02-24 15:10:28 +01:00
|
|
|
And then create a cargo config file to point it to the vendor dir.
|
|
|
|
|
```
|
|
|
|
|
tar xvf %{SOURCE}
|
|
|
|
|
mkdir -p .cargo
|
|
|
|
|
cat >.cargo/config << EOF
|
|
|
|
|
[source.crates-io]
|
|
|
|
|
replace-with = "vendored-sources"
|
|
|
|
|
|
|
|
|
|
[source.vendored-sources]
|
|
|
|
|
directory = "vendor"
|
|
|
|
|
EOF
|
|
|
|
|
```
|
|
|
|
|
|
2022-02-10 09:50:38 -05:00
|
|
|
The Fedora packaging sources for Netavark are available at the [Netavark
|
|
|
|
|
dist-git](https://src.fedoraproject.org/rpms/netavark).
|
|
|
|
|
|
|
|
|
|
The Fedora packaged versions of the rust crates that Netavark depends on are
|
|
|
|
|
frequently out of date, for example, rtnetlink, sha2, zbus and zvariant at the
|
|
|
|
|
time of initial package creation. So, the Fedora package builds Netavark using
|
|
|
|
|
the dependencies vendored upstream, found in the `vendor` subdirectory.
|
|
|
|
|
|
|
|
|
|
The `netavark` binary is installed to `/usr/libexec/podman/netavark`.
|
|
|
|
|
|
|
|
|
|
## Dependency on aardvark-dns
|
|
|
|
|
The netavark package has a `Recommends` on the `aardvark-dns` package. The
|
|
|
|
|
aardvark-dns package will be installed by default with netavark, but netavark
|
|
|
|
|
will be functional without it.
|
|
|
|
|
|
|
|
|
|
## Relationship with the CNI Plugins package
|
|
|
|
|
|
|
|
|
|
While Netavark is a replacement for CNI Plugins (available as
|
|
|
|
|
`containernetworking-plugins` on Fedora), the `netavark` package should be
|
|
|
|
|
recommended for new installations but will not conflict with
|
|
|
|
|
`containernetworking-plugins`. To avoid that conflict, we have made the following
|
|
|
|
|
changes to the Fedora packages.
|
|
|
|
|
|
|
|
|
|
1. netavark package includes:
|
|
|
|
|
```
|
|
|
|
|
Provides: container-network-stack = 2
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
2. containernetworking-plugins package includes:
|
|
|
|
|
```
|
|
|
|
|
Provides: container-network-stack = 1
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
3. containers-common package includes:
|
|
|
|
|
```
|
|
|
|
|
Requires: container-network-stack
|
|
|
|
|
Recommends: netavark
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Listing bundled dependencies
|
|
|
|
|
If you need to list the bundled dependencies in your packaging sources, you can
|
|
|
|
|
run the `cargo tree` command in the upstream source.
|
|
|
|
|
For example, Fedora's packaging source uses:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
$ cargo tree --prefix none | awk '{print "Provides: bundled(crate("$1")) = "$2}' | sort | uniq
|
|
|
|
|
```
|