Mengapa APISIX Ingress Controller Lebih Baik Dibandingkan Traefik?
November 4, 2022
Apa itu Apache APISIX Ingress Controller?
Apache APISIX Ingress Controller adalah Kubernetes Ingress controller yang menggunakan Apache APISIX sebagai data plane-nya.
Ini mendukung konfigurasi multi-aturan:
- Ingress
- APISIX Ingress CRD (custom resource)
- Gateway API
Secara keseluruhan, arsitektur Apache APISIX Ingress Controller memisahkan data plane dan control plane serta memungkinkan Apache APISIX menangani lalu lintas. Oleh karena itu, ini meningkatkan keamanan secara keseluruhan dan secara signifikan menghindari serangan terhadap kluster Kubernetes akibat serangan terhadap data plane.

Apa itu Traefik?
Traefik adalah reverse proxy open-source sekaligus load balancer yang dikembangkan oleh Traefik Labs.
Ini mendukung konfigurasi multi-aturan di Kubernetes:
- Ingress
- Traefik IngressRoute (custom resource)
- Gateway API
Traefik adalah file biner yang terpadu; oleh karena itu, control plane dan logika proxy data plane-nya digabungkan bersama. Dengan demikian, jika ada serangan terhadap Traefik atau eksploitasi kerentanan keamanan eksekutif jarak jauh, kluster Kubernetes juga dapat diserang.

Perbandingan
Pada bagian berikut, kami akan membandingkan APISIX Ingress Controller dengan Traefik dari beberapa dimensi.
Protokol yang Didukung
Sebagai gateway lalu lintas, kemampuan intinya adalah menangani lalu lintas proxy dengan benar. Apache APISIX Ingress Controller, sebagai Ingress Gateway kluster Kubernetes, terutama menangani dua jenis lalu lintas ini:
- lalu lintas antara Klien dan Ingress
- lalu lintas antara Ingress dan Upstream Service
Ini terlihat sebagai berikut:
Klien <----> Ingress <----> Upstream Service
Saat ini, ada banyak protokol yang berbeda. Berikut adalah tabel sederhana yang membandingkan APISIX Ingress Controller dengan Traefik terkait protokol.
| Protokol | APISIX Ingress Controller | Traefik |
|---|---|---|
| HTTP/HTTPS | Dukungan | Dukungan |
| HTTP/2 | Dukungan | Dukungan |
| HTTP/3 | Tidak Dukung | Dukungan |
| TCP | Dukungan | Dukungan |
| UDP | Dukungan | Dukungan |
| WebSocket | Dukungan | Dukungan |
| Dubbo | Dukungan | Tidak Dukung |
Selain itu, baik APISIX Ingress Controller maupun Traefik mendukung protokol melalui proxy HTTP/2 atau proxy TCP seperti gRPC, MQTT, dll., sehingga kami tidak mencantumkannya dalam tabel di atas.
Dari perspektif protokol, baik APISIX Ingress Controller maupun Traefik memiliki keunggulannya masing-masing. APISIX memiliki rencana untuk mendukung HTTP/3 di masa depan.
Ekstensibilitas
Ekstensibilitas telah menjadi indikator inti dalam pemilihan teknologi karena kebutuhan bisnis yang beragam. Baik Apache Ingress maupun Traefik mendukung ekstensi fitur dengan cara mereka sendiri. Mari kita bahas satu per satu.
Apache APISIX Ingress Controller
Ekstensi fitur APISIX Ingress Controller dicapai dengan mengimplementasikan plugin kustom. Saat ini, ini terutama mendukung tiga cara berikut untuk mengembangkan plugin:
- Mengembangkan plugin melalui Lua: Cara ini relatif sederhana dan tidak akan memiliki biaya performa;
- Mengembangkan plugin melalui
--plugin-runner: Dalam mode ini, pengguna dapat mengembangkan plugin dengan menggunakan bahasa pemrograman yang berbeda seperti JAVA/Python/Go sehingga mereka dapat memanfaatkan logika proyek mereka saat ini tanpa harus mempelajari bahasa pemrograman baru; - Mengembangkan plugin melalui modul WASM: Dalam mode ini, pengguna dapat menggunakan bahasa pemrograman apa pun yang membangun modul WASM untuk mengembangkan plugin;
Selain itu, kita juga dapat langsung menulis kode Lua melalui plugin serverless untuk memenuhi kebutuhan bisnis dengan cepat.
Tentu saja, jika Anda memiliki pengalaman dalam pengembangan modul Lua, Anda dapat langsung mengembangkan modul Lua dan memuatnya. Namun, Anda perlu menambahkan konfigurasi berikut agar berfungsi:
apisix: ... extra_lua_path: "/path/to/example/?.lua"
Silakan merujuk ke dokumen pengembangan plugin Apache APISIX dan Bagaimana APISIX Ingress Controller mendukung plugin kustom untuk langkah-langkah dan penggunaan pengembangan Plugin secara detail.
Traefik
Traefik juga menyediakan mekanisme plugin untuk memperluas fiturnya. Namun, karena Traefik dikembangkan dengan Go, pluginnya juga harus menggunakan Go untuk dikembangkan.
Anda dapat merujuk ke plugin yang Anda kembangkan dengan menambahkan konten berikut ke konfigurasi Traefik.
experimental: localPlugins: example: moduleName: github.com/traefik/pluginproviderdemo
Perlu diperhatikan, nama plugin harus sama dengan nama modul.
Secara umum, APISIX Ingress Controller mendukung berbagai metode ekstensi, dan pengguna dapat memilih metode terbaik sesuai dengan situasi aktual. Selain itu, ini memungkinkan pengguna untuk memilih alat pengembangan yang mereka sukai dan membantu mereka mengintegrasikan dengan lini bisnis mereka saat ini dengan lebih mudah. Di sisi lain, Traefik hanya dapat menggunakan Golang untuk pengembangan.
Ekosistem
Saat melakukan pemilihan teknologi, kami terutama akan mempertimbangkan protokol yang digunakan dalam proyek, kepemilikan proyek, dan bagaimana kami dapat mengintegrasikan controller dengan infrastruktur kami saat ini.
| Aspek Perbandingan | APISIX Ingress Controller | Traefik |
|---|---|---|
| Kepemilikan | Apache Software Foundation(ASF) | Traefik Labs |
| Protokol | Apache 2.0 | MIT |
| Waktu Lahir | Juni 2019 | Agustus 2015 |
| consul | Dukungan | Dukungan |
| nacos | Dukungan | Tidak Dukung |
| Eureka | Dukungan | Tidak Dukung |
| etcd | Dukungan | Dukungan |
| zookeeper | Dukungan | Dukungan |
| DNS | Dukungan | Tidak Dukung |
Perbandingan di atas mencakup konten dari kedua control plane dan data plane. Selain itu, kedua proyek ini secara aktif bekerja dan berintegrasi dengan proyek lain dalam ekosistem, seperti Rancher, KubeSphere, dll.
Dari perspektif ini, dibandingkan dengan Traefik, APISIX memiliki kemampuan yang lebih baik untuk berintegrasi dengan komponen dasar.
Anda dapat mempertimbangkan kelebihan dan kekurangan komponen dasar yang Anda gunakan saat melakukan pemilihan teknologi.
Umpan Balik Pengguna (Kasus Penggunaan)
Horizon robotics bermigrasi dari Traefik ke Apache APISIX, terutama mempertimbangkan aspek-aspek berikut:
- Konfigurasi yang ditambahkan melalui Annotation tidak dapat digunakan kembali dengan mudah.
- Perilaku default Traefik berbeda dari NGINX, yang membingungkan pengguna selama penggunaan.
Setelah Horizon beralih ke Apache APISIX Ingress Controller, berkat ekosistem ekstensi yang kaya dari APISIX Ingress Controller, sebagian besar kebutuhan dapat dicapai melalui plugin internal. Selain itu, pengguna dapat langsung mendefinisikan konfigurasi plugin melalui sumber daya ApisixRoute dari APISIX Ingress Controller, yang sangat mudah dipahami. Selain itu, pengguna juga dapat mengonfigurasi modul plugin melalui ApisixPluginConfig, dan ini dapat dirujuk dalam sumber daya ApisixRoute lainnya.

APISIX Ingress Controller memiliki performa data plane yang sangat baik dan dapat menangani peningkatan lalu lintas dengan efisien tanpa hambatan performa.
Selain Horizon, perusahaan seperti igetcool dan gwwisdom juga menggunakan APISIX Ingress Controller untuk menggantikan Traefik. Silakan merujuk ke Kasus Penggunaan untuk lebih banyak kasus penggunaan klien.
Selain itu, Apache APISIX memiliki komunitas yang sangat aktif, dan Anda dapat mendapatkan respons dan solusi cepat di saluran seperti Github, Slack, dll.
Kesimpulan
Artikel ini membandingkan Apache APISIX Ingress Controller dengan Traefik dalam hal protokol, ekstensibilitas, dan ekosistem.
Apache Ingress memiliki keunggulan tertentu dalam bidang ekstensibilitas dan integrasi ekosistem. Pengguna dapat memperluas fitur APISIX Ingress Controller dan mengintegrasikan dengan beberapa komponen dasar dengan lebih efisien.
Kami berharap artikel ini dapat memberikan beberapa petunjuk saat Anda memilih Kubernetes Ingress controller Anda.