لماذا يعتبر APISIX Ingress Controller خيارًا أفضل مقارنة بـ Traefik؟
November 4, 2022
ما هو Apache APISIX Ingress Controller؟
Apache APISIX Ingress Controller هو متحكم Ingress لـ Kubernetes يستخدم Apache APISIX كطائرة بيانات.
يدعم تكوينات متعددة القواعد:
- Ingress
- APISIX Ingress CRD (مورد مخصص)
- Gateway API
بشكل عام، يعتمد Apache APISIX Ingress Controller على فصل طائرة البيانات وطائرة التحكم ويترك Apache APISIX يتعامل مع حركة المرور. وبالتالي، فإنه يعزز الأمان العام ويتجنب بشكل كبير الهجمات ضد مجموعات Kubernetes بسبب الهجمات الموجهة ضد طائرة البيانات.
ما هو Traefik؟
Traefik هو وكيل عكسي مفتوح المصدر بالإضافة إلى موزع حمل تم تطويره بواسطة Traefik Labs.
يدعم تكوينات متعددة القواعد في Kubernetes:
- Ingress
- Traefik IngressRoute (مورد مخصص)
- Gateway API
Traefik هو ملف ثنائي موحد؛ وبالتالي، فإن طائرة التحكم وطائرة البيانات الخاصة به مجتمعة معًا. لذلك، إذا كانت هناك هجمات ضد Traefik أو استغلال لثغرات أمنية تنفيذية عن بُعد، فقد تتعرض مجموعات Kubernetes أيضًا للهجوم.
المقارنة
في الأقسام التالية، سنقارن بين APISIX Ingress Controller وTraefik من الأبعاد التالية.
البروتوكولات المدعومة
كبوابة حركة مرور، فإن قدرتها الأساسية هي التعامل مع حركة المرور بالوكيل بشكل صحيح. Apache APISIX Ingress Controller، كبوابة Ingress لمجموعات Kubernetes، يتعامل بشكل رئيسي مع نوعين من حركة المرور:
- حركة المرور بين العميل وIngress
- حركة المرور بين Ingress وخدمة Upstream
يظهر ذلك كما يلي:
العميل <----> Ingress <----> خدمة Upstream
اليوم، هناك العديد من البروتوكولات المختلفة. هنا نعرض جدولًا بسيطًا يقارن بين APISIX Ingress Controller وTraefik فيما يتعلق بالبروتوكولات.
البروتوكول | APISIX Ingress Controller | Traefik |
---|---|---|
HTTP/HTTPS | مدعوم | مدعوم |
HTTP/2 | مدعوم | مدعوم |
HTTP/3 | غير مدعوم | مدعوم |
TCP | مدعوم | مدعوم |
UDP | مدعوم | مدعوم |
WebSocket | مدعوم | مدعوم |
Dubbo | مدعوم | غير مدعوم |
بالإضافة إلى ذلك، فإن كلًا من APISIX Ingress Controller وTraefik يدعم البروتوكولات من خلال وكيل HTTP/2 أو وكيل TCP مثل gRPC، MQTT، إلخ، لذلك لم ندرجها في الجدول أعلاه.
من منظور البروتوكولات، لكل من APISIX Ingress Controller وTraefik نقاط قوة خاصة به. لدى APISIX خطة لدعم HTTP/3 في المستقبل.
قابلية التوسع
أصبحت قابلية التوسع مؤشرًا أساسيًا في اختيار التكنولوجيا بسبب احتياجات الأعمال المتنوعة. يدعم كل من Apache Ingress وTraefik توسيع الميزات بطرق خاصة بهما. دعونا نقدمها واحدة تلو الأخرى.
Apache APISIX Ingress Controller
يتم تحقيق توسيع ميزات APISIX Ingress Controller من خلال تنفيذ إضافات مخصصة. حاليًا، يدعم بشكل رئيسي الطرق الثلاث التالية لتطوير الإضافات:
- تطوير الإضافات عبر Lua: هذه الطريقة بسيطة نسبيًا، ولن يكون لها أي تكلفة أداء؛
- تطوير الإضافات عبر
--plugin-runner
: في هذا الوضع، يمكن للمستخدمين تطوير الإضافات باستخدام لغات برمجة مختلفة مثل JAVA/Python/Go بحيث يمكنهم الاستفادة من منطق مشاريعهم الحالية دون تعلم لغة برمجة جديدة؛ - تطوير الإضافات عبر وحدات WASM: في هذا الوضع، يمكن للمستخدمين استخدام أي لغة برمجة تبني وحدات WASM لتطوير الإضافات؛
علاوة على ذلك، يمكننا أيضًا كتابة أكواد Lua مباشرة عبر إضافة serverless لتلبية احتياجات أعمالنا بسرعة.
بالطبع، إذا كان لديك خبرة في تطوير وحدات Lua، يمكنك تطوير وحدات Lua مباشرة وتحميلها. ومع ذلك، تحتاج إلى إضافة التكوين التالي لجعلها تعمل:
apisix:
...
extra_lua_path: "/path/to/example/?.lua"
يرجى الرجوع إلى وثائق تطوير إضافات Apache APISIX وكيف يدعم APISIX Ingress Controller الإضافات المخصصة للحصول على خطوات تطوير واستخدام الإضافات بالتفصيل.
Traefik
يوفر Traefik أيضًا آليات إضافات لتوسيع ميزاته. ومع ذلك، نظرًا لأن Traefik تم تطويره باستخدام Go، يجب أن تستخدم إضافاته أيضًا Go للتطوير.
يمكنك الإشارة إلى الإضافة التي قمت بتطويرها عن طريق إضافة المحتويات التالية إلى تكوين Traefik.
experimental:
localPlugins:
example:
moduleName: github.com/traefik/pluginproviderdemo
لاحظ أن اسم الإضافة يجب أن يكون مطابقًا لاسم الوحدة.
بشكل عام، يدعم APISIX Ingress Controller طرقًا متعددة للتوسيع، ويمكن للمستخدمين اختيار الطريقة الأفضل وفقًا للوضع الفعلي. علاوة على ذلك، يسمح للمستخدمين باختيار أدوات التطوير المفضلة لديهم ويساعدهم على التكامل مع خطوط أعمالهم الحالية بشكل أكثر ملاءمة. من ناحية أخرى، يمكن لـ Traefik استخدام Golang فقط للتطوير.
النظام البيئي
عند اختيار التكنولوجيا، سنأخذ في الاعتبار بشكل رئيسي البروتوكول المستخدم في المشروع، ملكية المشروع، وكيف يمكننا دمج المتحكم مع البنية التحتية الحالية.
جانب المقارنة | APISIX Ingress Controller | Traefik |
---|---|---|
الملكية | Apache Software Foundation (ASF) | Traefik Labs |
البروتوكول | Apache 2.0 | MIT |
وقت الإنشاء | يونيو 2019 | أغسطس 2015 |
consul | مدعوم | مدعوم |
nacos | مدعوم | غير مدعوم |
Eureka | مدعوم | غير مدعوم |
etcd | مدعوم | مدعوم |
zookeeper | مدعوم | مدعوم |
DNS | مدعوم | غير مدعوم |
تحتوي المقارنة أعلاه على محتويات من كل من طائرة التحكم وطائرة البيانات. علاوة على ذلك، يعمل هذان المشروعان بشكل نشط ويتكاملان مع مشاريع أخرى في النظام البيئي، مثل Rancher، KubeSphere، إلخ.
من هذا المنظور، مقارنةً بـ Traefik، يتمتع APISIX بقدرة أفضل على التكامل مع المكونات الأساسية.
يمكنك وزن إيجابيات وسلبيات المكونات الأساسية التي تستخدمها أثناء اختيار التكنولوجيا.
تعليقات المستخدمين (حالات استخدام)
انتقلت Horizon robotics من Traefik إلى Apache APISIX، مع الأخذ في الاعتبار الجوانب التالية بشكل رئيسي:
- التكوين المضاف عبر Annotation لم يكن يمكن إعادة استخدامه بسهولة.
- السلوك الافتراضي لـ Traefik يختلف عن NGINX، مما يسبب ارتباكًا للمستخدمين أثناء الاستخدام.
بعد انتقال Horizon إلى Apache APISIX Ingress Controller، وبفضل النظام البيئي الغني للإضافات في APISIX Ingress Controller، يمكن تحقيق معظم المتطلبات من خلال الإضافات الداخلية. بالإضافة إلى ذلك، يمكن للمستخدمين تعريف تكوين الإضافات مباشرة من خلال مورد ApisixRoute في APISIX Ingress Controller، وهو أمر مباشر للغاية. علاوة على ذلك، يمكن للمستخدمين أيضًا تكوين وحدة الإضافة عبر ApisixPluginConfig، ويمكن الإشارة إليها في موارد ApisixRoute الأخرى.
يتمتع APISIX Ingress Controller بأداء ممتاز في طائرة البيانات ويمكنه التعامل مع زيادة حركة المرور بكفاءة دون حدوث اختناقات أداء.
بالإضافة إلى Horizon، تستخدم شركات مثل igetcool وgwwisdom أيضًا APISIX Ingress Controller لاستبدال Traefik. يرجى الرجوع إلى حالات استخدام العملاء للحصول على المزيد من حالات استخدام العملاء.
علاوة على ذلك، يتمتع Apache APISIX بمجتمع نشط للغاية، ويمكنك الحصول على ردود سريعة وحلول في قنوات مثل Github، Slack، إلخ.
الخلاصة
تقارن هذه المقالة بين Apache APISIX Ingress Controller وTraefik من حيث البروتوكولات، قابلية التوسع، والنظام البيئي.
يتمتع Apache Ingress بمزايا معينة في مجالات قابلية التوسع والتكامل مع النظام البيئي. يمكن للمستخدمين توسيع ميزات APISIX Ingress Controller والتكامل مع بعض المكونات الأساسية بشكل أكثر كفاءة.
نأمل أن تمنحك هذه المقالة بعض التلميحات أثناء اختيار متحكم Ingress لـ Kubernetes.