APISIX Ingress Controller, Service Discovery के साथ एकीकृत होता है

Jintao Zhang

Jintao Zhang

January 13, 2023

Products

क्या क्लाउड-नेटिव एप्लिकेशन में सर्विस डिस्कवरी आवश्यक है?

पृष्ठभूमि

माइक्रोसर्विस आर्किटेक्चर आजकल सबसे लोकप्रिय एप्लिकेशन आर्किटेक्चर में से एक है। एप्लिकेशन के आकार में वृद्धि के साथ, एप्लिकेशन का प्रबंधन अधिक कठिन हो जाता है। माइक्रोसर्विस आर्किटेक्चर इस समस्या को हल करने का प्रयास करता है, एप्लिकेशन को कई छोटे सर्विस घटकों में विभाजित करके, जो विशिष्ट व्यावसायिक तर्क और कार्यों को पूरा करने के लिए एक साथ सहयोग करते हैं।

इन घटकों को एक साथ अच्छी तरह से काम करने के लिए गतिशील रूप से संचार करना चाहिए। आमतौर पर सर्विस डिस्कवरी टूल्स को शामिल करना आवश्यक होता है। हमने पहले माइक्रोसर्विसेज में सर्विस डिस्कवरी पर एक लेख लिखा था: माइक्रोसर्विसेज में सर्विस डिस्कवरी क्या है - API7.ai

सर्विस डिस्कवरी को शामिल करके, घटकों को गतिशील रूप से प्राप्त किया जा सकता है। उन्हें केवल अन्य घटकों के नामों पर ध्यान देने की आवश्यकता होती है, न कि अन्य जानकारी जैसे तैनाती स्थान या तैनाती IP पर।

कुबेरनेट्स में सर्विस डिस्कवरी

कुबेरनेट्स वातावरण में, पॉड्स सबसे छोटी तैनाती योग्य इकाई हैं।

और कुबेरनेट्स में, घटकों के बीच संचार करना अधिक कठिन होता है क्योंकि पॉड का IP स्थायी नहीं होता है और अक्सर बदलता रहता है।

इसलिए, कुबेरनेट्स में एप्लिकेशन तैनात करते समय इस गतिशील वातावरण के अनुकूल होना और भी महत्वपूर्ण हो जाता है।

कुबेरनेट्स इस आवश्यकता को ध्यान में रखता है और अपनी स्वयं की DNS-आधारित सर्विस डिस्कवरी तंत्र प्रदान करता है।

कुबेरनेट्स सर्विस नामक एक अवधारणा प्रदान करता है, जो एक रिवर्स प्रॉक्सी के समान है। क्लाइंट को केवल सर्विस का उपयोग करने की आवश्यकता होती है, और उन्हें पॉड्स के पीछे के बारे में जानने की आवश्यकता नहीं होती है।

प्रत्येक सर्विस को एक स्थायी ClusterIP सौंपा जाएगा। इसलिए, जब पॉड IP बदलता है, तो अन्य घटक अभी भी सर्विस के स्थायी ClusterIP के माध्यम से सहयोग कर सकते हैं।

साथ ही, कुबेरनेट्स में सर्विस स्वचालित रूप से क्लस्टर में DNS को एक A/AAAA रिकॉर्ड अपडेट करेगी।

रिकॉर्ड इस तरह दिखता है:

my-svc.my-namespace.svc.cluster-domain.example

क्लाइंट नेमस्पेस के पार या एक ही नेमस्पेस में पार्स कर सकता है, जो घटकों के बीच सर्विस डिस्कवरी को बहुत सुविधाजनक बनाता है।

हालांकि, कुबेरनेट्स में नहीं होने वाले पारंपरिक माइक्रोसर्विस आर्किटेक्चर के लिए, हम आमतौर पर सर्विस डिस्कवरी टूल्स का उपयोग करते हैं ताकि सेवाओं के बीच सहयोग प्राप्त किया जा सके। कुबेरनेट्स वातावरण में DNS-आधारित सर्विस डिस्कवरी तंत्र के अनुकूल होने के लिए, एक निश्चित परिवर्तन/माइग्रेशन लागत की आवश्यकता होती है।

इसलिए, यदि आप कम परिवर्तन लागत चाहते हैं, तो आपको मूल सर्विस डिस्कवरी तंत्र को बनाए रखना होगा।

इस पूर्वधारणा के तहत, कुबेरनेट्स में नए माइग्रेट किए गए सेवाओं को एक्सपोज़ करने का सबसे अच्छा तरीका क्या है?

APISIX Ingress सर्विस डिस्कवरी के साथ कैसे काम करता है?

APISIX Ingress कुबेरनेट्स में Ingress कंट्रोलर का एक कार्यान्वयन है। यह डेटा प्लेन के रूप में Apache APISIX का उपयोग करता है और Ingress, कस्टम CRD, और Gateway API के माध्यम से प्रॉक्सी नियमों को कॉन्फ़िगर करने का समर्थन करता है। साथ ही, यह सर्विस डिस्कवरी टूल्स के साथ एकीकरण भी प्रदान करता है, जो रजिस्टर्ड सेवाओं को प्रॉक्सी करने और उन्हें क्लाइंट को एक्सपोज़ करने में आसान बनाता है।

हम इस खंड में इसे विस्तार से समझाएंगे।

APISIX का सर्विस डिस्कवरी के लिए समर्थन

APISIX एक उच्च-प्रदर्शन, पूरी तरह से गतिशील क्लाउड-नेटिव API गेटवे है जो 80+ आउट-ऑफ-द-बॉक्स प्लगइन्स प्रदान करता है, जो अधिकांश उपयोग के परिदृश्यों को कवर करता है।

इसकी एक उत्कृष्ट क्षमता सर्विस डिस्कवरी टूल्स के साथ एकीकरण है।

APISIX निम्नलिखित सर्विस डिस्कवरी टूल्स के साथ एकीकृत किया जा सकता है:

  • Consul
  • DNS
  • Eureka
  • Nacos

बस APISIX कॉन्फ़िगरेशन फ़ाइल में निम्नलिखित कॉन्फ़िगरेशन जोड़ें (DNS को उदाहरण के रूप में):

discovery: dns: servers: - "127.0.0.1:8600" # अपने DNS सर्वर का वास्तविक पता उपयोग करें

इस तरह, अपस्ट्रीम को कॉन्फ़िगर करते समय, APISIX सर्विस डिस्कवरी के माध्यम से वास्तविक अपस्ट्रीम पता जानकारी को गतिशील रूप से हल कर सकता है और अनुरोध को प्रॉक्सी कर सकता है।

APISIX Ingress यह कैसे करता है?

APISIX Ingress डेटा प्लेन प्रॉक्सी घटक के रूप में APISIX का उपयोग करता है। पहली बार सर्विस डिस्कवरी को एकीकृत करते समय, हमने दो विकल्पों पर विचार किया।

  • कंट्रोल प्लेन एकीकरण: Ingress कंट्रोलर में सर्विस डिस्कवरी को कॉन्फ़िगर करें, कॉन्फ़िगरेशन को पार्स और विश्लेषण करें, और परिणामों को APISIX को प्रॉक्सी करने के लिए भेजें।
  • डेटा प्लेन एकीकरण: APISIX डेटा प्लेन पर सर्विस डिस्कवरी को कॉन्फ़िगर करें, और डेटा प्लेन कॉन्फ़िगरेशन पार्सिंग और प्रॉक्सी करता है।

इन दोनों समाधानों के अपने फायदे हैं, लेकिन कॉन्फ़िगरेशन के रियल-टाइम अपडेट और समाधान की परिपक्वता को ध्यान में रखते हुए, हमने डेटा प्लेन एकीकरण समाधान को चुना।

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

APISIX Ingress का उपयोग कैसे करें?

सबसे पहले, सुनिश्चित करें कि APISIX कॉन्फ़िगरेशन में सही सर्विस डिस्कवरी कॉन्फ़िगरेशन शामिल है। निम्नलिखित DNS को उदाहरण के रूप में उपयोग करता है:

discovery: dns: servers: - "10.96.0.10:53"

एक ApisixUpstream संसाधन बनाएं, और उसकी discovery से संबंधित कॉन्फ़िगरेशन को उपयोग के परिदृश्य के अनुसार संशोधित करें। उदाहरण के लिए, यहां type: dns और प्रॉक्सी किए जाने वाले serviceName को सेट किया गया है:

# httpbin-upstream.yaml apiVersion: apisix.apache.org/v2 kind: ApisixUpstream metadata: name: httpbin-upstream spec: discovery: type: dns serviceName: httpbin.default.svc.cluster.local

अंत में, एक ApisixRoute संसाधन बनाएं जिसका upstreams अभी बनाए गए ApisixUpstream संसाधन को संदर्भित करता है:

# httpbin-route.yaml apiVersion: apisix.apache.org/v2 kind: ApisixRoute metadata: name: httpbin-route spec: http: - name: rule1 match: hosts: - local.httpbin.org paths: - /* upstreams: - name: httpbin-upstream

उपरोक्त संसाधनों को सही ढंग से बनाने के बाद, आप DNS में रजिस्टर्ड httpbin.default.svc.cluster.local को local.httpbin.org के माध्यम से एक्सेस कर सकते हैं।

how client make requests

लाभ और दृष्टिकोण

इस एकीकरण के माध्यम से, पहले से ही सर्विस डिस्कवरी टूल्स का उपयोग कर रहे एप्लिकेशन के लिए APISIX Ingress के माध्यम से सेवाओं को क्लाइंट को एक्सपोज़ करना बहुत सुविधाजनक है। यह APISIX Ingress की विशेषता विशिष्ट है क्योंकि अधिकांश Ingress कंट्रोलर इस एकीकरण समाधान को प्रदान नहीं करते हैं।

पढ़ने के लिए धन्यवाद। हम APISIX Ingress को सर्वोत्तम उपयोगकर्ता अनुभव प्रदान करने के लिए बनाने के अपने रास्ते पर अभी भी हैं!

API गेटवे के बारे में अधिक जानकारी के लिए, कृपया हमारे ब्लॉग्स पर जाएं या हमसे संपर्क करें

Tags: