Runj — OCI-совмСстимый инструмСнтарий для управлСния ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ Π½Π° Π±Π°Π·Π΅ FreeBSD jail

Π‘Π°ΠΌΡƒΡΠ»ΡŒ ΠšΠ°Ρ€ΠΏ (Samuel Karp), ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ ΠΈΠ· ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Amazon, Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠΉΡΡ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ Linux-дистрибутива Bottlerocket ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½ΠΎΠΉ изоляции для AWS, Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅Ρ‚ Π½Π° основС jail-ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΉ FreeBSD Π½ΠΎΠ²Ρ‹ΠΉ runtime runj для обСспСчСния ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ запуска ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Π½Ρ‹Ρ… Π² соотвСтствии со спСцификациСй OCI (Open Container Initiative). ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ позиционируСтся ΠΊΠ°ΠΊ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ, Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Π² свободноС ΠΎΡ‚ основной Ρ€Π°Π±ΠΎΡ‚Ρ‹ врСмя ΠΈ ΠΏΠΎΠΊΠ° находящийся Π½Π° стадии ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ°. Код написан Π½Π° языкС Go ΠΈ распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ BSD.

ПослС довСдСния Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎΠ³ΠΎ уровня ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ дорасти Π΄ΠΎ уровня, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ runj для Π·Π°ΠΌΠ΅Π½Ρ‹ ΡˆΡ‚Π°Ρ‚Π½ΠΎΠ³ΠΎ runtime Π² систСмах Docker ΠΈ Kubernetes, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ для запуска ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² FreeBSD вмСсто Linux. Из OCI runtime Π² настоящСС врСмя Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для создания, удалСния, запуска, ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΈ ΠΎΡ†Π΅Π½ΠΊΠΈ состояния ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ². Начинка ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° создаётся Π½Π° основС ΡˆΡ‚Π°Ρ‚Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΡƒΡ€Π΅Π·Π°Π½Π½ΠΎΠ³ΠΎ окруТСния FreeBSD.

Π’Π°ΠΊ ΠΊΠ°ΠΊ Π² спСцификации OCI ΠΏΠΎΠΊΠ° отсутствуСт ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° FreeBSD, Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ ряд Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², связанных с настройкой jail ΠΈ FreeBSD, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ планируСтся ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ OCI. Для управлСния jail ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ jail, jls, jexec, kill ΠΈ ps ΠΈΠ· состава FreeBSD, Π±Π΅Π· прямого обращСния ΠΊ систСмным Π²Ρ‹Π·ΠΎΠ²Π°ΠΌ. Из ΠΏΠ»Π°Π½ΠΎΠ² Π½Π° Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ отмСчаСтся Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ управлСния ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ рСсурсов Ρ‡Π΅Ρ€Π΅Π· RCTL-интСрфСйс ядра.

Помимо собствСнного runtime Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Ρ‚Π°ΠΊΠΆΠ΅ развиваСтся ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ прослойка для использования вмСстС с runtime containerd (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Docker), ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ FreeBSD. Для прСобразования rootfs FreeBSD Π² OCI-совмСстимый ΠΎΠ±Ρ€Π°Π· ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° прСдлагаСтся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°. Π’ дальнСйшСм созданный ΠΎΠ±Ρ€Π°Π· ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ Π² containerd.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ