ADC 0.8, 0.9 और 0.10 में नया क्या है?

Zeping Bai

Zeping Bai

May 31, 2024

Products

परिचय

ADC (APISIX Declarative CLI) API7.ai द्वारा पेश किया गया एक डिक्लेरेटिव कॉन्फ़िगरेशन टूल है, जो उपयोगकर्ताओं को GitOps को लागू करने के लिए एक सुविधाजनक टूलसेट प्रदान करता है। उपयोगकर्ता इसे अपने CI/CD पाइपलाइन में आसानी से एकीकृत कर सकते हैं ताकि पूर्ण API लाइफसाइकल का प्रबंधन किया जा सके, जिससे API अपग्रेड और रिलीज़ पूरा हो सके। 0.7 संस्करण के रिलीज़ के बाद, ADC ने तीन नए संस्करण जारी किए हैं: 0.8, 0.9, और 0.10, जिनमें कार्यक्षमता, प्रदर्शन और उपयोगकर्ता अनुभव के मामले में अनुकूलन और अपडेट किए गए हैं।

ADC की नई सुविधाएँ

संसाधन परिवर्तन डिटेक्टर में सुधार: Differ

ये संशोधन संस्करण 0.8 और 0.9 में पेश किए गए थे।

हमने संसाधन परिवर्तन डिटेक्टर Differ का एक नया संस्करण v3 पेश किया है, जिसमें कार्यक्षमता और कोड गुणवत्ता में महत्वपूर्ण सुधार किए गए हैं।

  1. नए Differ में स्थानीय संसाधनों के लिए डिफ़ॉल्ट मान मर्जिंग तंत्र पेश किया गया है, जो सुनिश्चित करता है कि सर्वर साइड के डिफ़ॉल्ट मान ADC के संसाधन परिवर्तन चेक में हस्तक्षेप न करें।

    जब क्लाइंट API7 या APISIX Admin API पर संसाधन बनाने के लिए अनुरोध भेजता है, तो सर्वर प्रस्तुत अनुरोध पर Schema सत्यापन करता है। इस प्रक्रिया के दौरान, कुछ फ़ील्ड जो Schema में डिफ़ॉल्ट मान के रूप में चिह्नित हैं लेकिन क्लाइंट द्वारा नहीं भेजे गए हैं, स्वचालित रूप से प्रस्तुत संसाधन में जोड़ दिए जाएंगे। परिणामस्वरूप, जब हम संसाधन को API से फिर से पढ़ते हैं, तो यह प्रारंभिक प्रस्तुति से अलग होगा।

    पिछले ADC संस्करण इन संसाधनों को "संशोधित" के रूप में सूचीबद्ध करते थे और Admin API को अपडेट API अनुरोध भेजते थे। इस व्यवहार ने ADC के लिए कुछ अनिश्चितता पैदा की, और यह समस्या Differ के माध्यम से हल की गई है।

  2. डिफ़ॉल्ट मान मर्जिंग तंत्र API7 बैकएंड में लागू किया गया है, जो सुनिश्चित करता है कि संसाधन अंतर केवल तब संशोधन के रूप में माना जाएगा जब उपयोगकर्ता ने स्थानीय YAML कॉन्फ़िगरेशन को बदल दिया हो।

  3. Differ डिटेक्शन ग्रैन्युलैरिटी को परिष्कृत किया गया है: ADC वर्तमान में संसाधन परिवर्तन चेक को संसाधन बॉडी और प्लगइन आयामों पर अलग-अलग करता है, जो चेक में असामान्यताओं को कम करने में मदद करता है।

  4. कोड गुणवत्ता को अनुकूलित किया गया है, अतिरिक्त कोड को सरल बनाया गया है ताकि पठनीयता में सुधार हो सके, और कुछ बग्स को ठीक किया गया है।

संसाधन फ़िल्टर

हमने संसाधन लेबल और संसाधन प्रकार के आधार पर दो संसाधन फ़िल्टरिंग तंत्र जोड़े हैं। इनका उपयोग फ़ेच, अंतर चेक और सिंक्रनाइज़ेशन ऑपरेशन के दौरान अनावश्यक संसाधनों को बाहर करने के लिए किया जा सकता है।

संसाधन लेबल फ़िल्टर

यह सुविधा संस्करण 0.8 में पेश की गई थी।

यह फ़िल्टर संसाधनों के लेबल फ़ील्ड के आधार पर फ़िल्टरिंग करता है। उपयोगकर्ता कमांड लाइन पर --label-selector key=value पैरामीटर का उपयोग करके फ़िल्टर को सक्षम कर सकते हैं। यह कई फ़िल्टर शर्तों को कॉन्फ़िगर करने का समर्थन करता है, और केवल वे दूरस्थ संसाधन जो इन नियमों को एक साथ पूरा करते हैं, मौजूद माने जाएंगे, जबकि स्थानीय संसाधनों में ये लेबल स्वचालित रूप से जोड़ दिए जाएंगे।

यह सुनिश्चित करता है कि हम एक छोटे दायरे में संसाधन चेक और सिंक्रनाइज़ेशन करते हैं, जो CI/CD पाइपलाइन में निष्पादित किए जाने वाले कार्यों को विभाजित करने में मदद करता है और अनावश्यक संसाधनों को संशोधित करने से बचाता है।

संसाधन प्रकार फ़िल्टर

यह सुविधा संस्करण 0.9 में पेश की गई थी।

हमने दो नए कमांड लाइन पैरामीटर जोड़े हैं: --include-resource-type <type> और --exclude-resource-type <type>, जिन्हें कई बार कॉन्फ़िगर किया जा सकता है, लेकिन include और exclude पैरामीटर परस्पर अनन्य हैं।

इन दो पैरामीटर के साथ, हम वर्तमान ऑपरेशन से विशिष्ट संसाधन प्रकारों को फ़िल्टर कर सकते हैं। उदाहरण के लिए, include-resource-type का उपयोग व्हाइटलिस्ट सेट करने और ऑपरेशन में शामिल किए जाने वाले संसाधन प्रकारों का चयन करने के लिए किया जा सकता है; जबकि exclude-resource-type ऑपरेशन से बाहर किए जाने वाले संसाधन प्रकारों को निर्धारित करेगा।

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

कमांड लाइन सुधार

ये सुधार संस्करण 0.9 में पेश किए गए थे।

TLS प्रमाणपत्र कॉन्फ़िगरेशन

हमने कमांड लाइन में TLS से संबंधित कई पैरामीटर जोड़े हैं, जैसे:

  • --ca-cert-file सर्वर के CA प्रमाणपत्र फ़ाइल को निर्दिष्ट करने के लिए
  • --tls-skip-verify TLS सर्वर प्रमाणपत्र सत्यापन को अक्षम करने के लिए
  • --tls-client-cert-file और --tls-client-key-file mTLS क्लाइंट प्रमाणपत्र फ़ाइलों को निर्दिष्ट करने के लिए

ये पैरामीटर ADC को एक सुरक्षित एन्क्रिप्टेड कनेक्शन स्थापित करने और मैन-इन-द-मिडल अटैक को रोकने में मदद करते हैं।

टाइमआउट नियंत्रण

हमने --timeout <duration> पैरामीटर जोड़ा है जो API कॉल के टाइमआउट अवधि को नियंत्रित करता है, जो 1m30s जैसे सिंटैक्स का समर्थन करता है। जब एक Admin API कॉल बहुत लंबा समय लेता है या अटक जाता है, तो टाइमआउट तंत्र प्रभावी होगा ताकि यह अनिश्चित काल तक प्रतीक्षा न करे।

डिबग मोड

यह सुविधा संस्करण 0.9 में पेश की गई थी।

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

इसलिए, हमने ADC में एक अंतर्निहित डिबग मोड जोड़ा है, जिसे --verbose <integer> पैरामीटर का उपयोग करके सक्षम किया जा सकता है। जब यह पैरामीटर 2 पर सेट किया जाता है, तो ADC प्रत्येक आंतरिक API कॉल के अनुरोध और प्रतिक्रिया भागों को प्रिंट करेगा ताकि डिबगिंग में मदद मिल सके।

यह पैरामीटर लॉग को छिपाने के लिए भी उपयोग किया जा सकता है। जब यह पैरामीटर 0 पर सेट किया जाता है, तो ADC त्रुटियों को छोड़कर सभी सामान्य लॉग को छिपाएगा।

दूरस्थ संसाधन प्रसंस्करण को मजबूत करना

यह सुविधा संस्करण 0.9 में पेश की गई थी।

चूंकि ADC सेवाओं, रूट्स आदि को कॉन्फ़िगर करने का एकमात्र तरीका नहीं है, उपयोगकर्ता API7 एंटरप्राइज़ डैशबोर्ड का उपयोग करके भी इसे सरल ऑपरेशन के माध्यम से प्राप्त कर सकते हैं। इससे एक समस्या उत्पन्न हुई है: डैशबोर्ड पर किए गए ऑपरेशन यादृच्छिक रूप से उत्पन्न संसाधन ID का उपयोग करेंगे, जबकि ADC YAML कॉन्फ़िगरेशन में संसाधन नाम का उपयोग करके एक निश्चित संसाधन ID उत्पन्न करता है ताकि संसाधनों को सटीक रूप से स्थान दिया जा सके।

इसका मतलब है कि यदि उपयोगकर्ता डैशबोर्ड पर एक संसाधन बनाता है, तो ADC उसे संसाधन ID द्वारा स्थान नहीं दे पाएगा। ADC डैशबोर्ड पर बनाए गए संसाधनों को संशोधित या हटा नहीं सकता है, लेकिन ये संसाधन अभी भी परिवर्तन डिटेक्शन में दिखाई देंगे, लेकिन उन पर सही ढंग से ऑपरेशन नहीं किया जा सकता है।

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

OpenAPI कन्वर्टर में ADC एक्सटेंशन फ़ील्ड का समर्थन

यह सुविधा संस्करण 0.10 में पेश की गई थी।

OpenAPI से ADC से API7 तक एक सुसंगत पाइपलाइन बनाने के लिए, OpenAPI कन्वर्टर को हमारी आवश्यकताओं के आधार पर ADC YAML कॉन्फ़िगरेशन फ़ाइल में आवश्यक फ़ील्ड इंजेक्ट करने की आवश्यकता होती है।

उदाहरण के लिए, सेवा के अपस्ट्रीम में pass_host फ़ील्ड को संशोधित करने के लिए, पहले हम केवल मैन्युअल रूप से कन्वर्टर का उपयोग करके OpenAPI को ADC कॉन्फ़िगरेशन फ़ाइल में कन्वर्ट कर सकते थे, मैन्युअल रूप से pass_host फ़ील्ड को संशोधित करते थे, और फिर संशोधित फ़ाइल को Git रिपॉजिटरी में सबमिट करते थे ताकि CI/CD पाइपलाइन ADC सिंक को निष्पादित कर सके। यह प्रक्रिया सुसंगत नहीं है और इसमें बहुत अधिक मैन्युअल हस्तक्षेप की आवश्यकता होती है।

अब, पेश किए गए x-adc श्रृंखला के एक्सटेंशन के माध्यम से, उपयोगकर्ताओं को केवल OpenAPI दस्तावेज़ में विशिष्ट स्थानों पर एक्सटेंशन फ़ील्ड लिखने की आवश्यकता होती है, और ADC इन फ़ील्ड को उत्पन्न कॉन्फ़िगरेशन फ़ाइल में सही ढंग से लिखेगा। इन एक्सटेंशन के साथ, उपयोगकर्ता सीधे OpenAPI पर ADC कॉन्फ़िगरेशन में किसी भी सामग्री को संशोधित कर सकते हैं, जैसे लेबल जोड़ना, प्लगइन जोड़ना, और सेवाओं/अपस्ट्रीम/रूट्स के डिफ़ॉल्ट कॉन्फ़िगरेशन को ओवरराइड करना।

परिणामस्वरूप, केवल एक OpenAPI फ़ाइल को बनाए रखकर, OpenAPI-ADC-API7 पाइपलाइन को एक-स्टॉप तरीके से लागू किया जा सकता है, जो API गेटवे कॉन्फ़िगरेशन के लिए GitOps वर्कफ़्लो को बहुत सरल बनाता है।

निष्कर्ष

API7.ai द्वारा लॉन्च किया गया डिक्लेरेटिव कॉन्फ़िगरेशन टूल ADC उद्यमों को API गेटवे के GitOps प्रबंधन को प्राप्त करने में मदद कर सकता है। नए संस्करण 0.8, 0.9, और 0.10 में, टूल को कार्यक्षमता के मामले में अनुकूलित और अपग्रेड किया गया है, जिसमें संसाधन परिवर्तन निगरानी और फ़िल्टरिंग जैसी सुविधाएँ जोड़ी गई हैं। ये नई सुविधाएँ पूर्ण API लाइफसाइकल प्रबंधन में नई गति प्रदान करती हैं।

ये नई क्षमताएँ ADC को उद्यमों की API गेटवे GitOps प्रबंधन की आवश्यकताओं को बेहतर ढंग से पूरा करने में सक्षम बनाती हैं, जिससे API प्रबंधन की दक्षता और लचीलापन में सुधार होता है।

Tags: