Kami menggunakan envoy sebagai proxy tepi depan yang mengarahkan lalu lintas masuk ke beberapa kluster kubernetes (untuk layanan baru) dan ke backend arsitektur warisan warisan sejarah. Itu. itu menggabungkan fungsi dari titik penyeimbang biasa dan terminasi ssl, dan gateway api.
Sebelum utusan, kami punya nginx di sana, seperti banyak lainnya. Software keren, saya suka. Keseluruhan cerita dengan utusan dimulai pada saat layanan mikro dimulai dalam jumlah besar dan bahkan templat yang memungkinkan tidak menyelamatkan Anda dari meningkatnya waktu yang dihabiskan untuk mengelola konfigurasi nginx. Perlu waktu lama untuk diluncurkan, ditambah lagi dengan admin yang tidak disarankan untuk melakukan permintaan yang monoton seperti "berikan saya domain untuk layanan baru". Otomatisasi yang lebih baik ™ jelas dibutuhkan. Idealnya, sehingga orang yang perlu memulai sesuatu dapat melakukannya sendiri dan lebih disukai di tempat yang sama di mana dia mengkonfigurasi parameter lain dari layanannya. Selain itu, saya menginginkan lebih banyak transparansi dalam apa yang terjadi di dalam proxy depan dan di segmen antara proxy tersebut dan upstream, dan lebih banyak kemampuan penyeimbangan asli (permintaan berulang dari berbagai jenis, pengecualian host yang tidak sehat dalam kondisi tertentu, pemeriksaan bantuan). Dan teknologi canggih,tentu saja.
Singkat cerita, berikut adalah terjemahan artikel tentang transisi dropbox menjadi utusan, banyak detail tentang perbandingannya dengan nginx. Saya akan memberi tahu Anda lebih banyak tentang kesan pribadi dari hasil transisi.
Fakta paling penting dan jelas bagi siapa saja yang telah menemukan penggunaan perangkat lunak yang dapat diskalakan: bersiaplah untuk membayarnya. Meningkatnya kompleksitas pengaturan (bidang data + bidang kontrol), dan jika ada upstream tidak hanya di kubernetes, maka mungkin bahkan menulis bidang kontrol Anda sendiri. Juga, dalam kasus utusan khusus, untuk perangkat lunak yang relatif muda dan karenanya karena tidak adanya beberapa fitur nginx yang umum + peningkatan frekuensi pembaruan, jika fitur-fitur ini ditambahkan ke dalamnya. Misalnya, mungkin ternyata dalam opsi standar tidak ada default untuk nginx menggabungkan garis miring di: path, melepaskan port dari header Host, atau, Tuhan maafkan saya, tulis ulang dengan regexp. Untuk hari ini, semua dari daftar ini telah ditambahkan, tetapi Anda pasti akan menemukan yang lain.
Hal-hal positif
Dokumentasi yang buruk! Sisi positifnya, tim utusan akhirnya mempekerjakan seorang penulis teknologi pada akhir tahun lalu dan segalanya menjadi lebih bersahabat. Setidaknya, Anda tidak perlu lagi mempelajari cara memproses permintaan melalui kode sumber dan menemukan deskripsi pekerjaan beberapa opsi secara eksklusif di jawaban dalam masalah Anda. Dan untuk menemukan opsinya sendiri, jadilah master google level 80. Sekarang banyak dari hal ini di masa lalu, meskipun penulis masih tidak repot-repot menandai di versi utusan mana opsi ini atau itu muncul, atau dengan tautan ke masalah di catatan rilis, tetapi setidaknya mereka mulai menyoroti daftar tentang perubahan yang melanggar dalam rilis di bagian khusus, Anda dapat melihat, bahwa ada kemajuan.
Telemetri diperpanjang
Di sini semua harapan dibenarkan, kini grafana dashboard oleh utusan kami membunuh semua browser yang tidak disiapkan dengan sejumlah grafik. Tapi serius, sekarang Anda dapat dengan mudah memantau apa yang terjadi dengan lalu lintas di semua tahap perjalanannya, ini sangat membantu dalam cerita detektif yang menarik - investigasi demi insiden. Dan, tentu saja, definisi anomali.
Anomali: "Halo." Sebuah fragmen dari dasbor grafana utusan yang sama.
Bidang kontrol
Nah, dan yang paling penting, agar semuanya dimulai, kami memecahkan masalah kontrol rute otomatis. Dua kata tentang pendekatan, jika seseorang tidak berada dalam subjek: bidang kontrol bekerja sebagai pengontrol data, mengelola penyimpanan mereka dan membuat konfigurasi, yang kemudian dikirim ke utusan (bidang data tanpa negara).
Jika Anda hanya memiliki satu kubernetes sebagai backend, maka Anda dapat menggunakan control plane yang sudah jadi dari tipe ambassador. Tapi infrastruktur lama juga harus kami kelola, ditambah lagi ada beberapa cluster. Jadi saya harus mengambil salah satu implementasi api bidang data yang diusulkan oleh proyek utusan dan mengacaukan semua fitur yang kami butuhkan, menghubungkan bagian infrastruktur ini dengan otomatisasi di kubernetes, tetapi ini adalah topik untuk cerita menarik lainnya.
Tayangan dari proses peralihan menjadi utusan - "entah kenapa tidak ada masalah khusus, sangat mencurigakan."
Singkatnya, dari mana harus memulai dan apa yang harus segera disiapkan. Setelah merenungkan dokumentasi utusan dan menerima kesia-siaan keberadaan, kami mengambil dua host virtual dari proxy depan lama (yang paling sederhana dan paling khas, dan yang paling luas), memulainya sebagai utusan, memilah opsi di sepanjang jalan.
Hal utama yang perlu diingat di sini adalah bahwa pendekatan penulisan konfigurasi antara nginx dan envoy sangat berbeda, yaitu. kita harus bersiap untuk belokan tajam dalam bentuk: alih-alih dua entri allow / deny yang sederhana, kita menulis 26 baris dari pohon aturan RBAC. Secara umum, menerima bahwa sedikit ledakan kepala di sini adalah normal, karena konfigurasi utusan dibuat dengan prioritas pada kenyamanan otomatisasi, dan bukan pada keterbacaan manusia.
Anda mungkin perlu menyusun lembar contekan untuk pemetaan opsi dan memastikan mereka benar-benar melakukan apa yang menurut Anda mereka lakukan. Jadi kami pernah sampai pada kesimpulan bahwa mekanisme untuk menggabungkan garis miring di URL (bahkan ketika sudah ditambahkan ke utusan) bekerja secara berbeda: di nginx itu tidak berubah: jalur, yang dikirim ke upstream, dan di utusan, penuh penulisan ulang terjadi. dan semuanya akan baik-baik saja, tetapi dengan penulisan ulang ini, muncul bug yang berubah: jalur sepenuhnya ke game, secara umum, setelah masalah kami, masalah itu juga diperbaiki, tetapi hati-hati.
Ngomong-ngomong, tentang masalah - saya tidak bisa tidak menyebutkan satu kesan positif lagi.
Komunitas dan pengembang yang ramah
Karena envoy adalah open source yang dihosting CNCF, biasanya Anda dapat mengunjungi GitHub proyek dan menyarankan perbaikan Anda atau mengajukan pertanyaan. Masalah adalah angka liar, pengembang jelas tidak memiliki cukup tangan, tetapi pada saat yang sama hal terburuk yang dapat terjadi pada pertanyaan Anda adalah bahwa hal itu akan diabaikan. Meskipun paling sering setidaknya sesuatu, tetapi mereka menjawab, bahkan jika itu adalah sesuatu yang singkat dalam semangat "maaf, kami tidak berencana untuk melakukan ini." Tidak ada toksisitas, bahkan jika pertanyaan dari pemula, suasana sangat bersahabat.
Topik atmosfer, terutama corgis. Tangkapan layar dari repositori publik utusan di github.com
Seperti biasa - permintaan tarik dipersilakan. Mereka membantu bahkan mereka yang tidak pandai C ++. Ada juga sejumlah masalah yang ditandai dengan tag pemula, jika seseorang ingin berkontribusi dan tidak tahu harus mulai dari mana.
Selain GitHub, ada juga email newsletter dan slack, tapi yang terakhir ini lebih sering berantakan. :)
Dari acara-acara tersebut, EnvoyCon diadakan, yang, bagaimanapun, sekarang online, tetapi saya masih merekomendasikannya.
Hasil
Secara umum, Anda tidak perlu duta hanya karena trendi dan awet muda, "semua orang pergi" dan pendiri memiliki gaya rambut yang lucu. Tetap di tempat Anda sampai terjepit. Jika Anda memiliki startup atau hanya proyek kecil, pasti lebih baik meninggalkan nginx, karena sederhana dan lucu. Hal utama adalah mulai dari sana.
Jika ada banyak layanan, banyak pengembang, ada kubernetes dan semua pengorbanan dalam artikel di atas tidak mengganggu Anda - Anda dapat berpikir dan mencoba.
Semoga berhasil dan mungkin sampai jumpa di EnvoyCon!