ADC 0.11 और 0.12 में नया क्या है?

Zeping Bai

Zeping Bai

August 7, 2024

Technology

ADC (API Declarative CLI) के संस्करण 0.10 के रिलीज़ होने के बाद से, हमने दो महत्वपूर्ण अपडेट—संस्करण 0.11 और 0.12, और कई टार्गेटेड पैच अपडेट्स को जारी करने के लिए अथक प्रयास किया है। ये अपडेट्स मुख्य रूप से Apache APISIX के समर्थन, मौजूदा सुविधाओं में सुधार, और बग फिक्सिंग पर केंद्रित हैं।

Apache APISIX के लिए बैकएंड समर्थन जोड़ा गया

ADC 0.11 से शुरू करके, Apache APISIX बैकएंड के लिए प्रायोगिक समर्थन शुरू किया गया है।

ADC अब APISIX Admin API के साथ एकीकृत है, जो संसाधनों के निर्यात और सिंक्रनाइज़ेशन को कुशल बनाता है। हम इसकी उपयोगिता को और बढ़ाने का प्रयास करेंगे। ADC में apisix बैकएंड विकल्प डिफ़ॉल्ट रूप से सक्षम है; उपयोगकर्ताओं को केवल Admin API एंडपॉइंट और API कुंजी को कॉन्फ़िगर करने की आवश्यकता है।

ADC और Admin API के बीच अंतर

कृपया ध्यान दें कि ADC का लक्ष्य APISIX की सभी कार्यक्षमताओं के साथ पूरी तरह से संरेखित करना नहीं है, बल्कि एक कोर फीचर सेट और सर्वोत्तम प्रथाओं पर ध्यान केंद्रित करना है। हम मानते हैं कि उन सुविधाओं में निवेश करना जो उपयोगकर्ताओं को वास्तव में चाहिए, बजाय व्यापक कवरेज की अंधाधुंध खोज के, ADC के विकास का मार्ग है।

हालांकि APISIX उच्च स्तर की कॉन्फ़िगरेशन लचीलापन प्रदान करता है, यह स्वतंत्रता अक्सर दीर्घकालिक रखरखाव की जटिलता के साथ आती है। जब कॉन्फ़िगरेशन प्रबंधन एक रखरखावकर्ता से दूसरे को स्थानांतरित किया जाता है, तो नए रखरखावकर्ता को आमतौर पर पिछले रखरखावकर्ता के अद्वितीय कॉन्फ़िगरेशन दृष्टिकोण और शैली को समझने की चुनौती का सामना करना पड़ता है, बजाय एक परिपक्व और व्यापक रूप से मान्यता प्राप्त सर्वोत्तम प्रथा नियमों को अपनाने के।

उदाहरण के लिए, APISIX प्लेटफॉर्म पर, उपयोगकर्ता ऐसे रूट्स कॉन्फ़िगर कर सकते हैं जो सीधे विशिष्ट सेवाओं से बंधे नहीं होते हैं, बल्कि रूट स्तर पर सीधे अपस्ट्रीम संसाधनों को निर्दिष्ट करते हैं। हालांकि, यह विधि ADC द्वारा मूल रूप से समर्थित नहीं है। तार्किक मानदंडों और मानकीकृत परिचालन प्रक्रियाओं के साथ संरेखित करने के लिए, अनुशंसित दृष्टिकोण यह है कि रूट्स को एक विशिष्ट सेवा के भीतर शामिल किया जाए और उस सेवा के भीतर अपस्ट्रीम पतों को सटीक रूप से सेट किया जाए।

उदाहरण के लिए, एक उत्पाद सेवा में, हम Product Service नामक एक सेवा को परिभाषित करते हैं और उसमें अपस्ट्रीम, प्लगइन्स को सक्षम करते हैं, और रूट्स को कॉन्फ़िगर करते हैं। इस मॉडल में, कई रूट्स एक ही अपस्ट्रीम और प्लगइन कॉन्फ़िगरेशन को साझा कर सकते हैं, जो कॉन्फ़िगरेशन प्रक्रिया को बहुत सरल बनाता है।

services: - name: Product Service upstream: type: roundrobin nodes: - host: product.ecommerce.svc.cluster.local port: 443 weight: 100 scheme: https plugins: key-auth: {} routes: - name: List Products uris: - /products methods: ["GET"] - name: Get Product uris: - /product/* methods: ["GET"]

उपरोक्त उदाहरण सेवा परिभाषा का एक न्यूनतम प्रारूप है। इसके अलावा, ADC सेवा खोज, टाइमआउट सेटिंग्स, रिट्री पॉलिसीज़, और रूट प्राथमिकता जैसी उन्नत सुविधाओं का भी समर्थन करता है, जो व्यापक और लचीली कॉन्फ़िगरेशन सुनिश्चित करता है।

चूंकि APISIX अधिक समृद्ध कॉन्फ़िगरेशन विधियों का समर्थन करता है, ADC को कॉन्फ़िगरेशन निर्यात करते समय APISIX Admin API प्रदर्शन के साथ असंगतियों का सामना करना पड़ सकता है, जैसे:

  • सेवाओं का उपयोग न करने वाले रूट्स को सेवा-रूट पदानुक्रम को पूरा करने के लिए एक सेवा में समूहीकृत किया जाएगा।
  • ID द्वारा संदर्भित अपस्ट्रीम्स को उपयोग के बिंदु पर इनलाइन किया जाएगा।
  • प्लगइन टेम्पलेट संसाधनों को रूट्स वाली सेवाओं द्वारा प्रतिस्थापित किया जाएगा।

इसलिए, उपयोगकर्ताओं को निर्यात प्रक्रिया के दौरान उत्पन्न ADC परिभाषा फाइलों की सावधानीपूर्वक समीक्षा करने की आवश्यकता है ताकि यह सुनिश्चित किया जा सके कि वे अभी भी मूल इरादे को पूरा करती हैं।

ADC की सिफारिश क्यों की जाती है?

APISIX डैशबोर्ड का उपयोग करते समय, उपयोगकर्ताओं को अक्सर फॉर्म में दोहराए जाने वाले ऑपरेशन करने की आवश्यकता होती है, जो कष्टप्रद और त्रुटि-प्रवण हो सकता है। इसके विपरीत, ADC का उपयोग करके घोषणात्मक कॉन्फ़िगरेशन में केवल YAML फाइलें लिखना और सिंक्रनाइज़ेशन ऑपरेशन करना शामिल है। ADC स्वचालित रूप से कॉन्फ़िगरेशन को Admin API कॉल में परिवर्तित करेगा, जिससे त्वरित तैनाती और प्रबंधन संभव होगा।

इस प्रकार, ADC प्रबंधन और तैनाती प्रक्रिया को सरल बनाने में मदद कर सकता है, और यह GitOps परिदृश्यों को आसानी से प्राप्त कर सकता है। इसमें YAML परिभाषा फाइलों को Git रिपॉजिटरी के माध्यम से प्रबंधित करना और PR वर्कफ़्लोज़ और CI टूल्स का उपयोग करके कॉन्फ़िगरेशन को स्वचालित रूप से अपडेट करना शामिल है। यह मैन्युअल ऑपरेशन की मात्रा को काफी कम कर देता है, APISIX डैशबोर्ड में मौजूद समस्याओं से बचता है, और Admin API को कॉल करने के लिए स्क्रिप्ट लिखने की जटिलता को कम करता है।

नए प्रोजेक्ट्स के लिए, हम दृढ़ता से ADC के साथ गेटवे कॉन्फ़िगरेशन बनाने की सिफारिश करते हैं। मौजूदा प्रोजेक्ट्स के लिए, कॉन्फ़िगरेशन को निर्यात करके और उन्हें मध्यम रूप से संशोधित करके ADC प्रबंधन में धीरे-धीरे माइग्रेट किया जा सकता है।

API7 एंटरप्राइज़ के बैकएंड का अनुकूलन

संस्करण 0.11/0.12 में शामिल

संस्करण 0.11 और 0.12 में, हमने डेवलपर अनुभव को बढ़ाने के लिए API7 बैकएंड के लिए कई अनुकूलन किए हैं। ADC इन सुधारों के साथ पूरी तरह से संगत है, जिसका अर्थ है कि डेवलपर्स को केवल अपने ADC संस्करण को अपडेट रखने की आवश्यकता है ताकि वे इन सुधारों का लाभ उठा सकें, बिना मौजूदा परिभाषा फाइलों में किसी संशोधन के।

ADC परिभाषा जांच का अनुकूलन

संस्करण 0.12 में शामिल

हमने ADC परिभाषा जांच के लिए स्कीमा नियमों को व्यापक रूप से अनुकूलित और ठीक किया है ताकि डेवलपर्स को संभावित कॉन्फ़िगरेशन समस्याओं का पता लगाने और उन्हें प्रभावी ढंग से टालने में मदद मिल सके।

JSON स्कीमा

इसके अलावा, हम अब सत्यापन नियमों को JSON स्कीमा के रूप में निर्यात करने का समर्थन करते हैं ताकि IDE का उपयोग करने वाले संपादकों की सहायता की जा सके। उपयोगकर्ताओं को अपनी फाइलों में सिंटैक्स संकेत और रीयल-टाइम जांच दोनों का लाभ मिलेगा, जो कोडिंग दक्षता और गुणवत्ता को काफी बढ़ाता है।

Visual Studio Code पसंद करने वाले डेवलपर्स के लिए, YAML प्लगइन को सक्षम करने और फाइल के शीर्ष पर निम्नलिखित टिप्पणी जोड़ने से यह सुविधा सक्रिय हो जाएगी:

# yaml-language-server: $schema=https://raw.githubusercontent.com/api7/adc/main/schema.json

निष्कर्ष

जैसा कि हमने अपने ब्लॉग्स में पहले उल्लेख किया है, ADC अंततः ओपन-सोर्स किया जाएगा। छह महीने के आंतरिक विकास और कई पुनरावृत्तियों के बाद, ADC को पूरी तरह से TypeScript-आधारित कोडबेस में पुनर्गठित किया गया है, जो मूल Go कोड को पूरी तरह से छोड़ देता है। यह इसे सीखने और विकसित करने में आसान बनाता है।

ADC संस्करण 0.12 के सार्वजनिक रिलीज़ के साथ, हम दुनिया भर के डेवलपर्स को इसके विकास और सुधार में भाग लेने के लिए आमंत्रित करते हैं। कोडबेस अब https://github.com/api7/adc पर खुला है, और हम आपके योगदान की प्रतीक्षा कर रहे हैं।

Tags: