Microsoft menambahkan Linux baru: CBL-Mariner

Pikirkan Microsoft dan Linux, dan Anda mungkin berpikir tentang pekerjaannya membangun kernel Linux yang dioptimalkan untuk Subsistem Windows untuk Linux (WSL). Dorong keluar melalui pembaruan Windows, Microsoft mendukung semua distribusi Linux WSL2, termasuk Ubuntu dan SUSE.

Tetapi kernel WSL2 bukanlah satu-satunya penawaran Linux dari Microsoft. Kami telah melihat beberapa yang lain di sini di masa lalu, termasuk Linux yang aman untuk Azure Sphere. Lainnya termasuk distribusi jaringan SONiC yang dirancang untuk digunakan dengan perangkat keras Open Compute Project dan digunakan oleh banyak cloud publik dan layanan online utama, dan host untuk Azure ONE (Open Network Emulator) yang digunakan untuk memvalidasi implementasi jaringan baru untuk Azure.

Grup Sistem Linux Microsoft

Dengan jumlah kernel dan distribusi Microsoft Linux yang terus bertambah, sekarang ada Grup Sistem Linux resmi yang menangani banyak pekerjaan Linux perusahaan. Ini termasuk kernel yang disetel Azure yang tersedia sebagai tambalan untuk banyak distribusi Linux umum, mengoptimalkannya untuk digunakan dengan hypervisor Hyper-V Microsoft, dan seperangkat alat untuk membantu menyampaikan penegakan integritas sistem berbasis kebijakan, membuat distribusi lebih aman dan membantu mengelola pembaruan dan tambalan di perkebunan besar server Linux dan mesin virtual.

Tim baru-baru ini merilis distribusi Linux baru: CBL-Mariner. Meskipun rilis ini bersifat publik, sebagian besar penggunaannya tidak, karena merupakan bagian dari infrastruktur Azure, digunakan untuk layanan jaringan edge dan sebagai bagian dari infrastruktur cloudnya. Hasilnya adalah distribusi overhead rendah, fokus ketat yang kurang tentang apa yang ada di dalamnya, dan lebih banyak tentang apa yang berjalan di atasnya.

Memperkenalkan CBL-Mariner: Host container Linux Microsoft

Berinvestasi di Linux ringan seperti CBL-Mariner sangat masuk akal, mengingat investasi Microsoft dalam teknologi berbasis kontainer. Ekonomi cloud mengharuskan host untuk menggunakan sumber daya sesedikit mungkin, memungkinkan layanan seperti Azure mendapatkan pemanfaatan yang tinggi. Pada saat yang sama, container Kubernetes membutuhkan overhead sesedikit mungkin, memungkinkan node per pod sebanyak mungkin, dan memungkinkan node baru diluncurkan secepat mungkin.

Hal yang sama berlaku untuk perangkat keras tepi, terutama node tepi generasi berikutnya yang dimaksudkan untuk digunakan dengan jaringan 5G. Di sini, seperti cloud publik, beban kerja adalah yang paling penting, menggesernya dan data lebih dekat ke pengguna. Microsoft menggunakan perangkat keras edge miliknya yang berkembang sebagai bagian dari Jaringan Pengiriman Konten Azure di luar pusat data Azure utamanya, menyimpan konten dalam cache dari aplikasi Web Azure dan dari server video dan file yang dihosting, dengan tujuan mengurangi latensi jika memungkinkan. Azure CDN adalah komponen kunci dari layanan Situs Web Azure Statis berbasis Jamstack, halaman hosting, dan JavaScript setelah diterbitkan dari GitHub.

Di masa lalu, CoreOS Red Hat dulunya adalah host yang disukai untuk wadah Linux, tetapi penghentiannya baru-baru ini berarti tidak lagi didukung. Siapa pun yang menggunakannya harus mencari alternatif. Microsoft menawarkan garpu Flatcar Linux CoreOS untuk pengguna Azure sebagai bagian dari kemitraan dengan pengembang Kinvolk, tetapi memiliki distribusinya sendiri untuk layanannya sendiri memastikan bahwa ia dapat memperbarui dan mengelola instans host dan kontainernya sesuai jadwalnya sendiri. Pengembangan di publik tersedia untuk siapa saja yang ingin membuat dan menggunakan build mereka sendiri atau yang ingin memberikan fitur dan pengoptimalan baru, misalnya menambahkan dukungan untuk fitur jaringan baru.

Menjalankan CBL-Mariner dan container

Di luar kotak, CBL-Mariner hanya memiliki paket dasar yang diperlukan untuk mendukung dan menjalankan kontainer, mengambil pendekatan yang mirip dengan CoreOS. Intinya, wadah Linux adalah ruang pengguna yang terisolasi. Menjaga sumber daya bersama seminimal mungkin mengurangi eksposur keamanan OS host dengan memastikan bahwa wadah aplikasi tidak dapat mengambil ketergantungan padanya. Jika Anda menggunakan CBL-Mariner di container Anda sendiri, pastikan Anda telah menguji image Docker publik sebelum menerapkan, karena image Docker tersebut mungkin tidak berisi paket yang sesuai. Anda mungkin perlu memiliki gambar dasar Anda sendiri sebagai bagian dari file galangan aplikasi Anda.

CBL-Mariner menggunakan alat Linux yang sudah dikenal untuk menambahkan paket dan mengelola pembaruan keamanan, menawarkan pembaruan baik sebagai paket RPM atau sebagai gambar lengkap yang dapat digunakan sesuai kebutuhan. Menggunakan RPM memungkinkan Anda untuk menambahkan paket Anda sendiri ke image CBL-Mariner dasar untuk mendukung fitur dan layanan tambahan sesuai kebutuhan.

Memulai CBL-Mariner bisa semudah menjalankan layanan Azure. Tetapi jika Anda menginginkan pengalaman langsung atau ingin berkontribusi pada proyek, semua kode sumber saat ini ada di GitHub, bersama dengan instruksi untuk membuat instalasi Anda sendiri. Prasyarat untuk build di Ubuntu 18.04 termasuk bahasa Go, utilitas QEMU (Quick EMUlator), serta rpm.

Buat instalasi Anda sendiri menggunakan repositori GitHub

Anda memiliki beberapa opsi berbeda untuk membangun dari sumbernya. Mulailah dengan memeriksa sumber dari GitHub, membuat tiruan lokal dari repositori proyek. Berbagai cabang tersedia, tetapi untuk build pertama Anda harus memilih cabang stabil saat ini. Dari sini Anda dapat membuat alat Go untuk proyek tersebut sebelum mengunduh sumbernya.

Untuk build cepat, Anda memiliki dua opsi, keduanya menggunakan paket prebuilt dan merakit distribusi darinya. Yang pertama, untuk penginstalan bare-metal, membuat file ISO siap untuk diinstal. Yang kedua, untuk menggunakan CBL-Mariner sebagai host kontainer, membuat file VHDX yang siap digunakan dengan mesin virtual untuk digunakan dengan Hyper-V. Opsi alternatif membangun gambar kontainer yang dapat digunakan sebagai sumber untuk file galangan berbasis Mariner Anda, memberi Anda semua yang Anda butuhkan untuk membangun dan menjalankan kontainer yang kompatibel dengan aplikasi Anda.

Jika Anda lebih suka membangun dari sumber, opsinya tersedia, meskipun pembangunan akan jauh lebih lambat daripada menggunakan paket prakompilasi. Namun, ini akan memungkinkan Anda untuk menargetkan CPU alternatif, misalnya membuat versi yang bekerja dengan generasi baru perangkat keras edge berbasis ARM yang mirip dengan yang digunakan untuk instans Graviton AWS. Anda dapat mem-bootstrap seluruh toolchain build untuk memastikan bahwa Anda memiliki kontrol atas seluruh proses build. Proses build lengkap bahkan dapat digunakan untuk membuat paket yang didukung, dengan file inti dicantumkan dalam file konfigurasi JSON.

Setelah dibuat, Anda dapat mulai mengkonfigurasi fitur CBL-Mariner. Di luar kotak, ini termasuk firewall berbasis iptables, dukungan untuk pembaruan yang ditandatangani, dan kernel yang diperkuat. Fitur opsional dapat disiapkan pada saat yang sama, dengan alat untuk meningkatkan isolasi proses dan mengenkripsi penyimpanan lokal, fitur penting untuk host kontainer di lingkungan multitenant tempat Anda perlu melindungi data lokal.

Hasilnya adalah pengganti yang efektif untuk CoreOS, dan yang saya ingin lihat tersedia untuk pengguna Azure serta tim Microsoft sendiri. CBL-Mariner mungkin tidak memiliki kematangan Linux lain yang berfokus pada container, tetapi tentunya mendapat cukup dukungan di belakangnya untuk menjadikannya alat yang kredibel untuk digunakan dalam arsitektur hybrid cloud dan edge network, di mana Anda menjalankan kode di server edge Anda sendiri dan di cloud Microsoft. Jika Microsoft tidak menjadikannya pilihan, setidaknya Anda bisa membuatnya sendiri.