Cosa devono sapere gli utenti e i packager Linux su Podman 4.0 su Fedora
Le nuove funzionalità Podman offrono un migliore supporto per i contenitori e prestazioni migliorate.
Il nuovo Podman 4.0 presenta una riscrittura completa dello stack di rete basato su Netavark e Aardvark, che funzionerà insieme allo stack CNI (Container Networking Interface) esistente.
Netavark è uno strumento basato su Rust per la configurazione della rete per contenitori Linux che funge da sostituto dei plugin CNI (containernetworking-plugins
su Fedora). Aardvark-dns è ora il server DNS autorevole per i record del contenitore. Insieme al nuovo stack arrivano le modifiche al packaging della distribuzione insieme alle modifiche alla disponibilità del repository per Fedora 35.
Per gli utenti Fedora
Podman v4 è disponibile come pacchetto Fedora ufficiale su Fedora 36 e Rawhide. Sia Netavark che Aardvark-dns sono disponibili come pacchetti Fedora ufficiali su Fedora 35 e versioni più recenti e formano lo stack di rete predefinito per le nuove installazioni di Podman 4.0.
Su Fedora 36 e versioni successive, le nuove installazioni di Podman v4 installeranno automaticamente Aardvark-dns insieme a Netavark.
Per installare Podman v4:
$ sudo dnf install podman
Per aggiornare Podman da una versione precedente alla v4:
$ sudo dnf update podman
Poiché Podman v4 presenta alcune modifiche importanti rispetto a Podman v3, gli utenti di Fedora 35 non possono installare Podman v4 utilizzando i repository predefiniti. Tuttavia, se non vedi l'ora di provarlo, puoi utilizzare invece un repository Copr:
$ sudo dnf copr enable rhcontainerbot/podman4
# install or update per your needs
$ sudo dnf install podman
Dopo l'installazione, se desideri migrare tutti i tuoi contenitori per utilizzare Netavark, devi impostare network_backend="netavark"
nella sezione [network]
nei tuoi containers .conf
, tipicamente situato in /usr/share/containers/containers.conf
.
Testare l'ultima versione di sviluppo
Se desideri testare l'ultimo codice upstream non rilasciato, prova podman-next
Copr:
$ sudo dnf copr enable rhcontainerbot/podman-next
$ sudo dnf install podman
ATTENZIONE: podman-next
Copr fornisce le ultime fonti inedite di Podman, Netavark e Aardvark-dns come RPM Package Manager (RPM). Questi sovrascriveranno le versioni fornite dai pacchetti ufficiali.
Per i pacchettizzatori Fedora
Le origini dei pacchetti Fedora per Podman sono disponibili nel repository Fedora per la manutenzione dei pacchetti. Il pacchetto Podman principale non dipende più esplicitamente da containernetworking-plugins
. Le dipendenze dello stack di rete sono ora gestite nel pacchetto containers-common
, che consente un singolo punto di manutenzione delle dipendenze per Podman e Buildah.
- containers-common
Requires: container-network-stack
Recommends: netavark
- netavark
Provides: container-network-stack = 2
- containernetworking-plugins
Provides: container-network-stack = 1
Questa configurazione garantisce che:
- Le nuove installazioni di Podman installeranno sempre Netavark per impostazione predefinita.
- Il pacchetto
containernetworking-plugins
non entrerà in conflitto con Netavark e gli utenti potranno installarli insieme.
Elenco delle dipendenze in bundle
Se devi elencare le dipendenze raggruppate nelle origini del pacchetto, puoi elaborare il file go.mod
nell'origine upstream. Ad esempio, il sorgente del pacchetto Fedora utilizza:
$ awk '{print "Provides: bundled(golang("$1")) = "$2}' go.mod | \
sort | uniq | sed -e 's/-/_/g' -e '/bundled(golang())/d' -e '/bundled(golang(go\
|module\|replace\|require))/d'
Netavark e Aardvark-dns
I sorgenti .tar venduti per Netavark e Aardvark-dns verranno allegati come artefatto di rilascio upstream. Quindi puoi creare un file di configurazione di Cargo per indirizzarlo alla directory del fornitore:
tar xvf %{SOURCE}
mkdir -p .cargo
cat >.cargo/config << EOF
[source.crates-io]
replace-with = "vendored-sources"
[source.vendored-sources]
directory = "vendor"
EOF
I sorgenti dei pacchetti Fedora per Netavark e Aardvark-dns sono disponibili anche nel repository del Progetto Fedora.
Le versioni in pacchetto Fedora dei crate Rust da cui dipendono Netavark e Aardvark-dns sono spesso obsolete (ad esempio, rtnetlink, sha2, zbus e zvariant) al momento della creazione del pacchetto iniziale. Di conseguenza, Netavark e Aardvark-dns vengono creati utilizzando le dipendenze fornite a monte, che si trovano nella sottodirectory vendor
.
Il binario netavark è installato su /usr/libexec/podman/netavark
, mentre il binario aardvark-dns è installato su /usr/libexec/podman/aardvark-dns
.
Il pacchetto netavark
ha un Recommends
nel pacchetto aardvark-dns
. Il pacchetto aardvark-dns
verrà installato per impostazione predefinita con Netavark, ma Netavark funzionerà senza di esso.
Elenco delle dipendenze in bundle
Se è necessario elencare le dipendenze raggruppate nelle origini del pacchetto, è possibile eseguire il comando cargo tree
nell'origine upstream. Ad esempio, il sorgente del pacchetto Fedora utilizza:
$ cargo tree --prefix none | \
awk '{print "Provides: bundled(crate("$1")) = "$2}' | \
sort | uniq
Per saperne di più
Spero che questi aggiornamenti ti siano stati utili. Se hai domande, non esitare ad aprire una discussione su GitHub o a contattare me o gli altri manutentori di Podman tramite Slack, IRC, Matrx o Discord. Meglio ancora, ci piacerebbe che tu ti unissi alla nostra comunità come collaboratore!