ΠΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° Solo.io, ΠΊΠΎΡΡΠΎ ΡΠ°Π·Π²ΠΈΠ²Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ Π·Π° ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΠΎΠ±Π»Π°ΡΠ½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ, ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΠ·ΠΈ, ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ ΠΈ Π±Π΅Π·ΡΡΡΠ²ΡΡΠ½ΠΈ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π° ΠΎΡΠΊΡΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌ BumbleBee, Π½Π°ΡΠΎΡΠ΅Π½ ΠΊΡΠΌ ΠΎΠΏΡΠΎΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ°ΡΠ°, ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ΡΠΎ ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° eBPF ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ Π² ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π° Π² ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π° Π΄ΠΎΡΡΡΠΏΠ° ΠΈ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅. ΠΠΎΠ΄ΡΡ Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Π΅Π·ΠΈΠΊΠ° Go ΠΈ ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π· Apache 2.0.
BumbleBee ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ΡΠΎ Π½Π° eBPF ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° Π²ΡΠ² Π²ΠΈΠ΄ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅Π½ ΠΎΠ±ΡΠ°Π· Π² ΡΠΎΡΠΌΠ°Ρ OCI (Open Container Initiative), ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΡΠ°ΡΡΠΈΡΠ°Π½ Π½Π° Π²ΡΡΠΊΠ°ΠΊΠ²ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Π±Π΅Π· ΠΏΠΎΠ²ΡΠΎΡΠ½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ. ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΡΠΎ Ρ eBPF ΠΊΠΎΠ΄Π° Π² ΡΠ΄ΡΠΎΡΠΎ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Π΄Π°Π½Π½ΠΈ, ΠΏΠΎΡΡΡΠΏΠ²Π°ΡΠΈ ΠΎΡ eBPF ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°ΡΠ°, ΡΠ΅ ΠΏΠΎΠ΅ΠΌΠ° ΠΎΡ BumbleBee, ΠΊΠΎΠΉΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π΅ΠΊΡΠΏΠΎΡΡΠΈΡΠ° ΡΠ΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° ΠΌΠ΅ΡΡΠΈΠΊΠΈ, Ρ ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΈ ΠΈΠ»ΠΈ Π»ΠΎΠ³ΠΎΠ²Π΅, Π΄ΠΎ ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈ Π΄ΠΎΡΡΡΠΏ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΡΠΈΠ»ΠΈΡΠ° curl. ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π΄Π° ΡΠ΅ ΡΡΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈ Π²ΡΡΡ Ρ Π½Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° eBPF ΠΊΠΎΠ΄ ΠΈ Π΄Π° Π½Π΅ ΡΠ΅ ΡΠ°Π·ΡΠ΅ΠΉΠ²Π° Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΡΠΎ Ρ ΡΠΎΠ·ΠΈ ΠΊΠΎΠ΄ ΠΎΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ, ΡΡΠ±ΠΈΡΠ°Π½Π΅ ΠΈ Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ Π² ΡΠ΄ΡΠΎΡΠΎ.
ΠΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° eBPF ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅ ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΡΠ°Π±ΠΎΡΠ΅ΡΠ° Π² ΡΡΠΈΠ» Docker ΡΡΠΈΠ»ΠΈΡΠ° βbeeβ, Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΊΠΎΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π²Π΅Π΄Π½Π°Π³Π° Π΄Π° ΡΠ΅ Π·Π°ΡΠ΅Π΄ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ²Π°Ρ eBPF ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Ρ ΠΎΡ Π²ΡΠ½ΡΠ΅Π½ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠΌ ΠΈ Π΄Π° ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ° Π½Π° Π»ΠΎΠΊΠ°Π»Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°. ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΊΠ΅Π»Π΅Ρ ΠΎΡ ΠΊΠΎΠ΄ Π½Π° Π΅Π·ΠΈΠΊΠ° C Π·Π° eBPF ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°ΡΠΈ Π½Π° ΠΈΠ·Π±ΡΠ°Π½Π° ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ° (Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΡΠ°ΠΌΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°ΡΠΈ Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠΈΡ Π²Π°ΡΠ°Ρ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ ΠΎΡ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈΡ ΡΡΠ΅ΠΊ ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΈ). ΠΠ° Π±Π°Π·Π°ΡΠ° Π½Π° ΡΠΎΡΠΌΡΠ»ΠΈΡΠ°Π½ΠΈΡ ΡΠΊΠ΅Π»Π΅Ρ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡΡ ΠΌΠΎΠΆΠ΅ Π±ΡΡΠ·ΠΎ Π΄Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ° ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ²Π°ΡΠ°ΡΠ° Π³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ.
Π ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ BCC (BPF Compiler Collection), BumbleBee Π½Π΅ ΠΈΠ·Π³ΠΎΡΠ°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΏΠΎΠ»Π½ΡΡ ΠΏΠ΅ΡΠ΅ΡΠ±ΠΎΡΠΊΡ ΠΊΠΎΠ΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΠ΄ΡΠ° Linux (BCC ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π½Π° Π»Π΅ΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Clang ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ΅ eBPF-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ). Π§ΡΠΎΠ±Ρ ΡΠ΅ΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΡΡ, ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ CO-RE ΠΈ libbpf, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ Π²ΡΠ΅Π³ΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊ, Π°Π΄Π°ΠΏΡΠΈΡΡΡΡΠΈΠΉ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΊ ΡΠ΅ΠΊΡΡΠ΅ΠΌΡ ΡΠ΄ΡΡ ΠΈ ΡΠΈΠΏΠ°ΠΌ BTF (BPF Type Format). BumbleBee ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π½Π°Π΄ΡΡΡΠΎΠΉΠΊΡ Π½Π°Π΄ libbpf ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΈΠΏΡ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ , ΡΠ°Π·ΠΌΠ΅ΡΠ°Π΅ΠΌΡΡ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π΄Π»Ρ eBPF map-ΡΡΡΡΠΊΡΡΡΠ°Ρ RingBuffer ΠΈ HashMap.
ΠΠ»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΈΡΠΎΠ³ΠΎΠ²ΠΎΠΉ eBPF-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΡ Π² Π²ΠΈΠ΄Π΅ OCI-ΠΎΠ±ΡΠ°Π·Π° Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Β«bee build ΡΠ°ΠΉΠ»_Ρ_ΠΊΠΎΠ΄ΠΎΠΌ ΠΈΠΌΡ:Π²Π΅ΡΡΠΈΡΒ», Π° Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄Ρ Β«bee run ΠΈΠΌΡ:Π²Π΅ΡΡΠΈΡΒ». ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌΡΠ΅ ΠΎΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΡΠΎΠ±ΡΡΠΈΡ Π±ΡΠ΄ΡΡ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡΡ Π² ΠΎΠΊΠ½ΠΎ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°, Π½ΠΎ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅, ΠΎΠ±ΡΠ°ΡΠΈΠ²ΡΠΈΡΡ ΡΡΠΈΠ»ΠΈΡΠ°ΠΌΠΈ curl ΠΈΠ»ΠΈ wget ΠΊ ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π½ΠΎΠΌΡ ΠΊ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ ΡΠ΅ΡΠ΅Π²ΠΎΠΌΡ ΠΏΠΎΡΡΡ. ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΡΡ ΡΠ΅ΡΠ΅Π· OCI-ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ; Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΈΠ· ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ghcr.io (GitHub Container Registry) ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Β«bee run ghcr.io/solo-io/bumblebee/tcpconnect:$(bee version)Β». ΠΠ»Ρ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° Β«bee pushΒ», Π° Π΄Π»Ρ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ Π²Π΅ΡΡΠΈΠΈ β Β«bee tagΒ».
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
