APISIX Ingress Controller, Traefik की तुलना में बेहतर विकल्प क्यों है?

Jintao Zhang

Jintao Zhang

November 4, 2022

Products

Apache APISIX Ingress Controller क्या है?

Apache APISIX Ingress Controller एक Kubernetes Ingress कंट्रोलर है जो अपने डेटा प्लेन के रूप में Apache APISIX का उपयोग करता है।

यह मल्टी-रूल कॉन्फ़िगरेशन को सपोर्ट करता है:

  • Ingress
  • APISIX Ingress CRD (कस्टम रिसोर्स)
  • Gateway API

कुल मिलाकर, Apache APISIX Ingress Controller की आर्किटेक्चर डेटा और कंट्रोल प्लेन को अलग करती है और ट्रैफ़िक को संभालने के लिए Apache APISIX को इस्तेमाल करती है। इसलिए, यह समग्र सुरक्षा को बेहतर बनाता है और डेटा प्लेन पर हमलों के कारण Kubernetes क्लस्टर पर हमलों को काफी हद तक रोकता है।

APISIX Ingress Controller आर्किटेक्चर

Traefik क्या है?

Traefik एक ओपन-सोर्स रिवर्स प्रॉक्सी और लोड बैलेंसर है जिसे Traefik Labs द्वारा विकसित किया गया है।

यह Kubernetes में मल्टी-रूल कॉन्फ़िगरेशन को सपोर्ट करता है:

  • Ingress
  • Traefik IngressRoute (कस्टम रिसोर्स)
  • Gateway API

Traefik एक एकीकृत बाइनरी फ़ाइल है; इसलिए, इसका कंट्रोल प्लेन और इसके डेटा प्लेन के प्रॉक्सी लॉजिक एक साथ जुड़े हुए हैं। इसलिए, अगर Traefik पर हमले होते हैं या रिमोट एक्जीक्यूटिव सुरक्षा कमजोरियों का शोषण होता है, तो Kubernetes क्लस्टर पर भी हमले हो सकते हैं।

Traefik आर्किटेक्चर

तुलना

निम्नलिखित अनुभागों में, हम APISIX Ingress Controller और Traefik की तुलना निम्नलिखित आयामों से करेंगे।

समर्थित प्रोटोकॉल

एक ट्रैफ़िक गेटवे के रूप में, इसकी मुख्य क्षमता प्रॉक्सी ट्रैफ़िक को सही ढंग से संभालना है। Apache APISIX Ingress Controller, Kubernetes क्लस्टर के Ingress गेटवे के रूप में, मुख्य रूप से इन दो प्रकार के ट्रैफ़िक को संभालता है:

  • क्लाइंट और Ingress के बीच ट्रैफ़िक
  • Ingress और Upstream Service के बीच ट्रैफ़िक

यह निम्नलिखित रूप में दिखता है:

क्लाइंट <----> Ingress <----> Upstream Service

आजकल, कई अलग-अलग प्रोटोकॉल हैं। यहां हम एक सरल तालिका प्रस्तुत करते हैं जो APISIX Ingress Controller और Traefik की प्रोटोकॉल के संदर्भ में तुलना करती है।

प्रोटोकॉलAPISIX Ingress ControllerTraefik
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 कोड लिखकर अपनी व्यावसायिक आवश्यकताओं को तेजी से पूरा कर सकते हैं।

बेशक, अगर आपके पास Lua मॉड्यूल विकास का अनुभव है, तो आप सीधे Lua मॉड्यूल विकसित कर सकते हैं और उन्हें लोड कर सकते हैं। हालांकि, इसे काम करने के लिए आपको निम्नलिखित कॉन्फ़िगरेशन जोड़ने की आवश्यकता है:

apisix: ... extra_lua_path: "/path/to/example/?.lua"

विस्तृत प्लगइन विकास चरणों और उपयोगों के लिए कृपया Apache APISIX plugin develop doc और How does APISIX Ingress Controller support custom plugins देखें।

Traefik

Traefik भी अपनी फीचर्स को एक्सटेंड करने के लिए प्लगइन मैकेनिज्म प्रदान करता है। हालांकि, Traefik को Go में विकसित किया गया है, इसलिए इसके प्लगइन्स को भी Go का उपयोग करके विकसित करना होगा।

आप Traefik कॉन्फ़िगरेशन में निम्नलिखित सामग्री जोड़कर अपने विकसित प्लगइन को संदर्भित कर सकते हैं।

experimental: localPlugins: example: moduleName: github.com/traefik/pluginproviderdemo

ध्यान दें, प्लगइन का नाम मॉड्यूल नाम के समान होना चाहिए।

सामान्य तौर पर, APISIX Ingress Controller कई एक्सटेंशन विधियों को सपोर्ट करता है, और उपयोगकर्ता वास्तविक स्थिति के अनुसार सबसे अच्छी विधि चुन सकते हैं। इसके अलावा, यह उपयोगकर्ताओं को अपनी पसंदीदा विकास टूल्स का चयन करने और उन्हें अपनी मौजूदा व्यावसायिक लाइनों के साथ अधिक सुविधाजनक तरीके से एकीकृत करने में मदद करता है। दूसरी ओर, Traefik केवल Golang का उपयोग कर सकता है।

इकोसिस्टम

तकनीकी चयन करते समय, हम मुख्य रूप से प्रोजेक्ट में उपयोग किए जाने वाले प्रोटोकॉल, प्रोजेक्ट की स्वामित्व, और कंट्रोलर को हमारी मौजूदा इंफ्रास्ट्रक्चर के साथ कैसे एकीकृत कर सकते हैं, पर विचार करेंगे।

तुलना पहलूAPISIX Ingress ControllerTraefik
स्वामित्वApache Software Foundation(ASF)Traefik Labs
प्रोटोकॉलApache 2.0MIT
जन्म समयजून 2019अगस्त 2015
consulसमर्थितसमर्थित
nacosसमर्थितसमर्थित नहीं
Eurekaसमर्थितसमर्थित नहीं
etcdसमर्थितसमर्थित
zookeeperसमर्थितसमर्थित
DNSसमर्थितसमर्थित नहीं

उपरोक्त तुलना में कंट्रोल और डेटा प्लेन दोनों से सामग्री शामिल है। इसके अलावा, ये दोनों प्रोजेक्ट्स Rancher, KubeSphere, आदि जैसे अन्य प्रोजेक्ट्स के साथ सक्रिय रूप से काम करते हैं और एकीकृत होते हैं।

इस दृष्टिकोण से, Traefik की तुलना में, APISIX बेसिक कंपोनेंट्स के साथ एकीकृत करने की बेहतर क्षमता रखता है।

तकनीकी चयन करते समय आप जिन बेसिक कंपोनेंट्स का उपयोग कर रहे हैं, उनके पेशेवरों और विपक्षों को तौल सकते हैं।

उपयोगकर्ता प्रतिक्रिया (उपयोगकर्ता केस)

Horizon robotics ने Traefik से Apache APISIX में माइग्रेट किया, मुख्य रूप से निम्नलिखित पहलुओं पर विचार करते हुए:

  • Annotation के माध्यम से जोड़ी गई कॉन्फ़िगरेशन को आसानी से पुन: उपयोग नहीं किया जा सकता था।
  • Traefik का डिफ़ॉल्ट व्यवहार NGINX से अलग है, जो उपयोग के दौरान उपयोगकर्ताओं को भ्रमित करता है।

Hozion ने Apache APISIX Ingress Controller पर स्विच करने के बाद, APISIX Ingress Controller के समृद्ध एक्सटेंशन इकोसिस्टम के कारण, अधिकांश आवश्यकताओं को आंतरिक प्लगइन्स के माध्यम से पूरा किया जा सकता है। इसके अलावा, उपयोगकर्ता APISIX Ingress Controller के ApisixRoute रिसोर्स के माध्यम से सीधे प्लगइन्स की कॉन्फ़िगरेशन को परिभाषित कर सकते हैं, जो बहुत सीधा है। इसके अलावा, उपयोगकर्ता ApisixPluginConfig के माध्यम से प्लगइन मॉड्यूल की कॉन्फ़िगरेशन को भी कॉन्फ़िगर कर सकते हैं, और इसे अन्य ApisixRoute रिसोर्सेज में संदर्भित किया जा सकता है।

Horizon आर्किटेक्चर डायग्राम

APISIX Ingress Controller में उत्कृष्ट डेटा प्लेन प्रदर्शन है और यह बढ़ते ट्रैफ़िक को प्रदर्शन बाधा के बिना कुशलतापूर्वक संभाल सकता है।

Horizon के अलावा, igetcool और gwwisdom जैसी कंपनियां भी APISIX Ingress Controller का उपयोग करके Traefik को प्रतिस्थापित करती हैं। अधिक क्लाइंट उपयोग केस के लिए कृपया उपयोगकर्ता केस देखें।

इसके अलावा, Apache APISIX का एक अत्यधिक सक्रिय समुदाय है, और आप Github, Slack, आदि चैनलों में त्वरित प्रतिक्रियाएं और समाधान प्राप्त कर सकते हैं।

निष्कर्ष

यह लेख Apache APISIX Ingress Controller और Traefik की प्रोटोकॉल, विस्तारणीयता, और इकोसिस्टम के संदर्भ में तुलना करता है।

Apache Ingress विस्तारणीयता और इकोसिस्टम एकीकरण के क्षेत्रों में कुछ फायदे रखता है। उपयोगकर्ता APISIX Ingress Controller की फीचर्स को एक्सटेंड कर सकते हैं और कुछ बेसिक कंपोनेंट्स के साथ अधिक कुशलता से एकीकृत कर सकते हैं।

हमें उम्मीद है कि यह लेख आपको अपने Kubernetes Ingress कंट्रोलर का चयन करते समय कुछ संकेत देगा।

Tags: