Mengapa APISIX Ingress Controller Lebih Baik Dibandingkan Traefik?

Jintao Zhang

Jintao Zhang

November 4, 2022

Products

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.

Arsitektur APISIX Ingress Controller

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.

Arsitektur Traefik

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.

ProtokolAPISIX Ingress ControllerTraefik
HTTP/HTTPSDukunganDukungan
HTTP/2DukunganDukungan
HTTP/3Tidak DukungDukungan
TCPDukunganDukungan
UDPDukunganDukungan
WebSocketDukunganDukungan
DubboDukunganTidak 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 PerbandinganAPISIX Ingress ControllerTraefik
KepemilikanApache Software Foundation(ASF)Traefik Labs
ProtokolApache 2.0MIT
Waktu LahirJuni 2019Agustus 2015
consulDukunganDukungan
nacosDukunganTidak Dukung
EurekaDukunganTidak Dukung
etcdDukunganDukungan
zookeeperDukunganDukungan
DNSDukunganTidak 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.

Diagram Arsitektur Horizon

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.

Tags: