ΠΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΡΡΠ΅ΡΠΈΠΉ Π²ΡΠΏΡΡΠΊ ΠΏΡΠΎΠ΅ΠΊΡΠ° Incus, Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎΠΌ Linux Containers ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΡΡΡ ΡΠΎΡΠΊ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ LXD, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΡΡΠ°ΡΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΊΠΎΠ³Π΄Π°-ΡΠΎ ΡΠΎΠ·Π΄Π°Π²ΡΠ΅ΠΉ LXD. ΠΠΎΠ΄ Incus Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° ΡΠ·ΡΠΊΠ΅ Go ΠΈ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ Apache 2.0.
ΠΠ°ΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ Linux Containers ΠΊΡΡΠΈΡΠΎΠ²Π°Π»ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ LXD Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ Canonical ΡΠ΅ΡΠΈΠ»Π° ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡ LXD ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΊΠ°ΠΊ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ. Π¦Π΅Π»ΡΡ ΡΠΎΡΠΊΠ° Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΉ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΌ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎΠΌ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ ΠΏΡΠΎΠ΅ΠΊΡΡ LXD, ΠΏΠΎΠ΄ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΌΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Canonical. Π ΡΠ°ΠΌΠΊΠ°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° Incus ΡΠ°ΠΊΠΆΠ΅ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ ΡΡΡΡΠ°Π½ΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ, Π΄ΠΎΠΏΡΡΠ΅Π½Π½ΡΠ΅ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ LXD, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π½Π΅Π΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ Π±Π΅Π· Π½Π°ΡΡΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ.
Incus ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ ΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΌΠΈ ΠΌΠ°ΡΠΈΠ½Π°ΠΌΠΈ, ΡΠ°Π·Π²ΡΡΠ½ΡΡΡΠΌΠΈ ΠΊΠ°ΠΊ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ Ρ ΠΎΡΡΠ΅, ΡΠ°ΠΊ ΠΈ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ². ΠΡΠΎΠ΅ΠΊΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² Π²ΠΈΠ΄Π΅ ΡΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠ΅Π³ΠΎ Π·Π°ΠΏΡΠΎΡΡ ΠΏΠΎ ΡΠ΅ΡΠΈ ΡΠ΅ΡΠ΅Π· REST API ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠ΅Π³ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π±ΡΠΊΠ΅Π½Π΄Ρ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡ (Π΄Π΅ΡΠ΅Π²ΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΉ, ZFS, Btrfs, LVM), ΡΠ½Π°ΠΏΡΠΎΡΡ ΡΠΎ ΡΡΠ΅Π·ΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ, live-ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ Π½Π° Π΄ΡΡΠ³ΡΡ ΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ°Π·ΠΎΠ² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ². Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ runtime Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ LXC, Π² ΡΠΎΡΡΠ°Π² ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²Ρ ΠΎΠ΄ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° liblxc, Π½Π°Π±ΠΎΡ ΡΡΠΈΠ»ΠΈΡ (lxc-create, lxc-start, lxc-stop, lxc-ls ΠΈ Ρ.ΠΏ.), ΡΠ°Π±Π»ΠΎΠ½Ρ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΠΈ Π½Π°Π±ΠΎΡ ΠΏΡΠΈΠ²ΡΠ·ΠΎΠΊ Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ·ΠΎΠ»ΡΡΠΈΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠ°ΡΠ½ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠ² ΡΠ΄ΡΠ° Linux (ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΡΠ½, cgroups, Apparmor, SELinux, Seccomp).
ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π·Π°ΠΌΠ΅ΡΠ½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ:
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π½Π° Π±Π°Π·Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Relationship-Based Access Control, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° OpenFGA, ΠΎΡΠ²Π΅ΡΠ°ΡΡΠ΅Π³ΠΎ Π·Π° ΠΏΡΠΈΠ½ΡΡΠΈΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ ΡΠ΅Ρ ΠΈΠ»ΠΈ ΠΈΠ½ΡΡ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΠΉ. Π ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠΎΠΌ OpenID Connect ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° OpenFGA ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠΊΡΡΡΡΠΉ ΡΡΠ΅ΠΊ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Incus Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠΎΠ»Π½ΠΎΠΉ Π·Π°ΠΌΠ΅Π½Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ LXD Ρ Canonical RBAC. ΠΠ»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ OpenFGA ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ openfga.api.token, openfga.api.url, openfga.store.id ΠΈ openfga.store.model_id.
- Π£Π»ΡΡΡΠ΅Π½Π° ΡΡΠΈΠ»ΠΈΡΠ° lxd-to-incus, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΡΡΡΠ°Ρ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ Ρ LXD Π½Π° Incus. Π Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²ΠΎΠ² Ρ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ OpenRC, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡ Ceph ΠΈ ΡΠ΅ΡΠ΅ΠΉ OVN, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΎ Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π»ΠΎΠ³Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΡΡ ΠΊΠΎΠΏΠΈΠΉ.
- Π Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΠΌΠ°ΡΠΈΠ½Π°Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π³ΠΎΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈ Π³ΠΎΡΡΡΠ΅Π³ΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ (hot-plug/hot-remove) ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΠΏΡΡΠ΅ΠΉ ΠΈΠ»ΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ°Π·Π΄Π΅Π»ΠΎΠ², ΠΏΡΠΎΠ±ΡΠΎΡΠ΅Π½Π½ΡΡ ΠΈΠ· Ρ ΠΎΡΡ-ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ. Π Π°Π½Π΅Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΠΏΡΠΎΠ±ΡΠΎΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° virtio-fs ΠΈΠ»ΠΈ Π€Π‘ 9p ΡΡΠ΅Π±ΠΎΠ²Π°Π» ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ. ΠΠ»Ρ ΠΎΠ±Ρ ΠΎΠ΄Π° ΡΡΠΎΠ³ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ QEMU ΠΏΠΎ Π³ΠΎΡΡΡΠ΅ΠΌΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ PCI-ΡΡΡΡΠΎΠΉΡΡΠ² ΠΈ ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΡΠΈ Π²Π½ΡΡΡΠΈ Π³ΠΎΡΡΠ΅Π²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ΅ΡΠ΅Π· incus-agent.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru