Cilium adalah solusi jaringan, observabilitas, dan keamanan dengan dataplane berbasis EBPF. Ini menyediakan jaringan Flat Layer 3 sederhana dengan kemampuan untuk menjangkau beberapa cluster dalam mode routing atau overlay asli. Ini adalah L7-Protocol sadar dan dapat menegakkan kebijakan jaringan pada L3-L7 menggunakan model keamanan berbasis identitas yang dipisahkan dari pengalamatan jaringan.
Cilium mengimplementasikan penyeimbangan beban terdistribusi untuk lalu lintas antara polong dan ke layanan eksternal, dan dapat sepenuhnya menggantikan kube-proxy, menggunakan tabel hash yang efisien di EBPF yang memungkinkan untuk skala yang hampir tidak terbatas. Ini juga mendukung fungsionalitas canggih seperti Integrated Ingress dan Egress Gateway, Manajemen Bandwidth dan Mesh Layanan, dan menyediakan visibilitas dan pemantauan jaringan dan keamanan yang mendalam.
Teknologi kernel Linux baru yang disebut EBPF berada di dasar Cilium. Ini mendukung penyisipan dinamis bytecode EBPF ke dalam kernel Linux di berbagai titik integrasi seperti: jaringan IO, soket aplikasi, dan titik tracepoints untuk mengimplementasikan keamanan, jaringan dan logika visibilitas. EBPF sangat efisien dan fleksibel. Untuk mempelajari lebih lanjut tentang EBPF, kunjungi EBPF.IO.
Komunitas Cilium mempertahankan rilis stabil kecil untuk tiga versi cilium minor terakhir. Versi stabil cilium yang lebih tua dari rilis kecil sebelum itu dianggap EOL.
Untuk peningkatan ke rilis minor baru, silakan berkonsultasi dengan Panduan Peningkatan Cilium.
Di bawah ini adalah cabang rilis yang dikelola secara aktif bersama dengan rilis patch terbaru mereka, tag tarikan gambar yang sesuai dan catatan rilisnya:
v1.16 | 2024-11-14 | quay.io/cilium/cilium:v1.16.4 | Catatan Rilis |
v1.15 | 2024-11-14 | quay.io/cilium/cilium:v1.15.11 | Catatan Rilis |
v1.14 | 2024-11-14 | quay.io/cilium/cilium:v1.14.17 | Catatan Rilis |
Gambar cilium didistribusikan untuk arsitektur AMD64 dan AARCH64.
Dimulai dengan Cilium versi 1.13.0, semua gambar termasuk tagihan perangkat lunak (SBOM). SBOM dihasilkan dalam format SPDX. Informasi lebih lanjut tentang ini tersedia di Cilium SBOM.
Untuk tujuan pengembangan dan pengujian, komunitas Cilium menerbitkan snapshot, kandidat rilis awal (RC) dan gambar kontainer CI dibangun dari cabang utama. Gambar -gambar ini bukan untuk digunakan dalam produksi.
Untuk pengujian peningkatan ke rilis pengembangan baru, silakan berkonsultasi dengan pembangunan pengembangan terbaru dari Panduan Peningkatan Cilium.
Di bawah ini adalah cabang untuk pengujian bersama dengan snapshot atau rilis RC, tag tarikan gambar yang sesuai dan catatan rilisnya jika berlaku:
utama | sehari-hari | quay.io/cilium/cilium-ci:latest | N/a |
v1.17.0-pre.2 | 2024-11-01 | quay.io/cilium/cilium:v1.17.0-pre.2 | Catatan kandidat pra rilis |
Kemampuan untuk mengamankan protokol aplikasi modern seperti REST/HTTP, GRPC dan Kafka. Firewall tradisional beroperasi di Layer 3 dan 4. Protokol yang berjalan pada port tertentu sepenuhnya dipercaya atau diblokir sepenuhnya. Cilium menyediakan kemampuan untuk memfilter permintaan protokol aplikasi individu seperti:
Izinkan semua permintaan HTTP dengan metode GET
dan path /public/.*
. Menyangkal semua permintaan lainnya.
Izinkan service1
untuk menghasilkan di kafka topic topic1
dan service2
untuk dikonsumsi di topic1
. Menolak semua pesan kafka lainnya.
Membutuhkan header http X-Token: [0-9]+
untuk hadir dalam semua panggilan istirahat.
Lihat Kebijakan Bagian Layer 7 dalam dokumentasi kami untuk daftar terbaru protokol dan contoh yang didukung tentang cara menggunakannya.
Aplikasi terdistribusi modern bergantung pada teknologi seperti wadah aplikasi untuk memfasilitasi kelincahan dalam penyebaran dan meningkatkan permintaan. Ini menghasilkan sejumlah besar wadah aplikasi yang dimulai dalam waktu singkat. Firewall Container Khasing yang aman beban kerja dengan memfilter sumber alamat IP dan port tujuan. Konsep ini mengharuskan firewall di semua server untuk dimanipulasi setiap kali sebuah wadah dimulai di mana saja di cluster.
Untuk menghindari situasi ini yang membatasi skala, Cilium memberikan identitas keamanan kepada kelompok -kelompok wadah aplikasi yang berbagi kebijakan keamanan yang identik. Identitas kemudian dikaitkan dengan semua paket jaringan yang dipancarkan oleh wadah aplikasi, memungkinkan untuk memvalidasi identitas pada simpul penerima. Manajemen Identitas Keamanan dilakukan dengan menggunakan toko nilai kunci.
Keamanan berbasis label adalah alat pilihan untuk kontrol akses internal cluster. Untuk mengamankan akses ke dan dari layanan eksternal, kebijakan keamanan berbasis CIDR tradisional untuk masuk dan jalan keluar didukung. Ini memungkinkan untuk membatasi akses ke dan dari wadah aplikasi ke rentang IP tertentu.
Jaringan Flat Layer 3 sederhana dengan kemampuan untuk menjangkau beberapa cluster menghubungkan semua wadah aplikasi. Alokasi IP tetap sederhana dengan menggunakan alokasi ruang lingkup host. Ini berarti bahwa setiap host dapat mengalokasikan IP tanpa koordinasi antara host.
Model jaringan multi -simpul berikut didukung:
Overlay: Jaringan virtual berbasis enkapsulasi mencakup semua host. Saat ini, VXLAN dan Geneve dipanggang tetapi semua format enkapsulasi yang didukung oleh Linux dapat diaktifkan.
Kapan Menggunakan Mode Ini: Mode ini memiliki persyaratan infrastruktur dan integrasi minimal. Ini bekerja pada hampir semua infrastruktur jaringan sebagai satu -satunya persyaratan adalah konektivitas IP antara host yang biasanya sudah diberikan.
Routing asli: Penggunaan tabel perutean reguler dari host Linux. Jaringan harus mampu merutekan alamat IP dari wadah aplikasi.
Kapan Menggunakan Mode Ini: Mode ini untuk pengguna tingkat lanjut dan membutuhkan kesadaran akan infrastruktur jaringan yang mendasarinya. Mode ini bekerja dengan baik dengan:
Jaringan IPv6 asli
Sehubungan dengan router jaringan cloud
Jika Anda sudah menjalankan Daemon Routing
Cilium mengimplementasikan keseimbangan beban terdistribusi untuk lalu lintas antara wadah aplikasi dan ke layanan eksternal dan dapat sepenuhnya mengganti komponen seperti kube-proxy. Balancing beban diimplementasikan dalam EBPF menggunakan hashtabel efisien yang memungkinkan untuk skala yang hampir tidak terbatas.
Untuk keseimbangan beban tipe utara-selatan, implementasi EBPF Cilium dioptimalkan untuk kinerja maksimum, dapat dilampirkan ke XDP (jalur data ekspres), dan mendukung pengembalian server langsung (DSR) serta hashing yang konsisten maglev jika operasi penyeimbang beban tidak dilakukan pada host sumber.
Untuk penyeimbangan beban tipe timur-barat, Cilium melakukan terjemahan layanan-ke-backend yang efisien tepat di lapisan soket kernel Linux (misalnya pada waktu koneksi TCP) sedemikian rupa sehingga overhead Operasi NAT per paket dapat dihindari pada lapisan yang lebih rendah.
Cilium mengimplementasikan manajemen bandwidth melalui pembatasan tingkat EDT (waktu keberangkatan paling awal) dengan EBPF untuk lalu lintas kontainer yang keluar dari simpul. Hal ini memungkinkan untuk secara signifikan mengurangi latensi ekor transmisi untuk aplikasi dan untuk menghindari penguncian di bawah NIC multi-kuala dibandingkan dengan pendekatan tradisional seperti HTB (Hirarki Token Bucket) atau TBF (token Bucket Filter) seperti yang digunakan dalam plugin CNI bandwidth, misalnya.
Kemampuan untuk mendapatkan visibilitas dan pemecahan masalah adalah hal mendasar untuk pengoperasian sistem terdistribusi apa pun. Sementara kami belajar mencintai alat -alat seperti tcpdump
dan ping
dan sementara mereka akan selalu menemukan tempat khusus di hati kami, kami berusaha untuk menyediakan alat yang lebih baik untuk pemecahan masalah. Ini termasuk perkakas untuk menyediakan:
Pemantauan Acara dengan Metadata: Ketika sebuah paket dijatuhkan, alat ini tidak hanya melaporkan Sumber dan tujuan IP dari paket, alat ini memberikan informasi label lengkap dari pengirim dan penerima di antara banyak informasi lainnya.
Ekspor metrik melalui Prometheus: Metrik utama diekspor melalui Prometheus untuk integrasi dengan dasbor Anda yang ada.
Hubble: Platform observabilitas yang ditulis khusus untuk cilium. Ini menyediakan peta ketergantungan layanan, pemantauan dan peringatan operasional, dan visibilitas aplikasi dan keamanan berdasarkan log aliran.
Mengapa Cilium?
Memulai
Arsitektur dan Konsep
Memasang cilium
Pertanyaan yang sering diajukan
Berkontribusi
Berkeley Packet Filter (BPF) adalah interpreter bytecode kernel linux yang awalnya diperkenalkan untuk memfilter paket jaringan, misalnya untuk filter tcpdump dan soket. Set instruksi BPF dan arsitektur sekitarnya baru -baru ini telah dikerjakan ulang secara signifikan dengan struktur data tambahan seperti tabel hash dan array untuk menjaga keadaan serta tindakan tambahan untuk mendukung mangling paket, penerusan, enkapsulasi, dll. Selanjutnya, bagian belakang kompiler untuk LLVM memungkinkan Untuk program yang akan ditulis dalam C dan dikompilasi ke dalam instruksi BPF. Verifier in-Kernel memastikan bahwa program BPF aman untuk dijalankan dan kompiler JIT mengubah bytecode BPF menjadi instruksi khusus arsitektur CPU untuk efisiensi eksekusi asli. Program BPF dapat dijalankan di berbagai titik pengait di kernel seperti untuk paket yang masuk, paket keluar, panggilan sistem, kProbe, hulu, tracepoints, dll.
BPF terus berkembang dan mendapatkan kemampuan tambahan dengan setiap rilis Linux baru. Cilium memanfaatkan BPF untuk melakukan pemfilteran jalur data inti, mangling, pemantauan dan pengalihan, dan membutuhkan kemampuan BPF yang ada di Linux Kernel versi 4.8.0 atau lebih baru (kernel Linux stabil terbaru saat ini adalah 4.14.x).
Banyak distribusi Linux termasuk CoreOS, Debian, Linuxkit Docker, Fedora, OpenSUSE dan Ubuntu sudah mengirimkan versi kernel> = 4.8.x. Anda dapat memeriksa versi kernel Linux Anda dengan menjalankan uname -a
. Jika Anda belum menjalankan kernel yang cukup baru, periksa dokumentasi distribusi Linux Anda tentang cara menjalankan kernel Linux 4.9.x atau lebih baru.
Untuk membaca versi kernel yang diperlukan untuk menjalankan runtime BPF, lihat prasyarat bagian.
XDP adalah langkah lebih lanjut dalam evolusi dan memungkinkan menjalankan rasa spesifik dari program BPF dari driver jaringan dengan akses langsung ke buffer DMA paket. Ini, menurut definisi, titik paling awal dalam tumpukan perangkat lunak, di mana program dapat dilampirkan untuk memungkinkan prosesor paket kinerja tinggi yang dapat diprogram di jalur data jaringan kernel Linux.
Informasi lebih lanjut tentang BPF dan XDP yang ditargetkan untuk pengembang dapat ditemukan di panduan referensi BPF dan XDP.
Untuk mengetahui lebih banyak tentang Cilium, ekstensi dan kasus penggunaannya di sekitar Cilium dan BPF lihat bagian pembacaan lebih lanjut.
Bergabunglah dengan saluran Cilium Slack untuk mengobrol dengan pengembang cilium dan pengguna cilium lainnya. Ini adalah tempat yang baik untuk belajar tentang Cilium, mengajukan pertanyaan, dan berbagi pengalaman Anda.
Lihat kelompok minat khusus untuk daftar semua sig dan waktu pertemuan mereka.
Komunitas pengembang Cilium nongkrong di zoom untuk mengobrol. Semua orang diterima.
Mingguan, Rabu, 17:00 Europe/Zurich Time (CET/CEST), biasanya setara dengan pukul 8:00 pagi PT, atau 11:00 ET. Catatan pertemuan dan info zoom
Rabu ketiga setiap bulan, 9:00 AM Japan Time (JST). Catatan pertemuan APAC dan info zoom
Kami menjadi tuan rumah komunitas mingguan YouTube LiveStream yang disebut Echo yang (sangat longgar!) Singkatan dari EBPF & Cilium Office Hours. Bergabunglah dengan kami secara langsung, dapatkan episode -episode sebelumnya, atau kunjungi repo Echo dan beri tahu kami ide -ide Anda untuk topik yang harus kami liput.
Proyek Cilium diatur oleh sekelompok pengelola dan komitmen. Bagaimana mereka dipilih dan pemerintah diuraikan dalam dokumen tata kelola kami.
Daftar pengadopsi proyek cilium yang menggunakannya dalam produksi, dan kasus penggunaannya, dapat ditemukan di pengguna file.md.
Cilium mempertahankan peta jalan umum. Ini memberikan pandangan tingkat tinggi tentang prioritas utama untuk proyek, kedewasaan fitur dan proyek yang berbeda, dan bagaimana mempengaruhi arah proyek.
Komponen Ruang Pengguna Cilium dilisensikan di bawah lisensi Apache, versi 2.0. Template kode BPF dilisensikan ganda di bawah lisensi publik umum, versi 2.0 (hanya) dan lisensi BSD 2-klausa (Anda dapat menggunakan ketentuan lisensi, pada opsi Anda).