APISIX Declarative CLI के साथ APISIX को डिक्लेरेटिवली प्रबंधित करना

Navendu Pottekkat

Navendu Pottekkat

September 22, 2023

Technology

APISIX उपयोगकर्ता मुख्य रूप से APISIX को कॉन्फ़िगर करने के लिए Admin API का उपयोग करते हैं। लेकिन जैसे-जैसे आपकी कॉन्फ़िगरेशन्स की जटिलता बढ़ती है, केवल Admin API के माध्यम से इन्हें प्रबंधित करना अधिक चुनौतीपूर्ण हो जाता है।

इसे आसान बनाने के लिए, हमने APISIX Declarative CLI, अर्थात ADC विकसित किया है, जो एक ऐसा टूल है जो आपको APISIX कॉन्फ़िगरेशन्स को घोषणात्मक रूप से परिभाषित करने की अनुमति देता है।

इस लेख में, हम देखेंगे कि आप ADC के साथ अपनी APISIX कॉन्फ़िगरेशन्स को कैसे प्रबंधित कर सकते हैं।

APISIX को डिप्लॉय करना

शुरू करने से पहले, हमें पहले एक APISIX इंस्टेंस चलाना चाहिए जिसके साथ इंटरैक्ट और कॉन्फ़िगर किया जा सके। हम Docker में APISIX को निम्नलिखित कमांड से चला सकते हैं:

curl -sL https://run.api7.ai/apisix/quickstart | sh

APISIX का उपयोग करने के बारे में अधिक जानने के लिए APISIX दस्तावेज़ीकरण देखें।

ADC को इंस्टॉल करना

आप ADC को go install कमांड के साथ इंस्टॉल कर सकते हैं:

go install github.com/api7/adc@latest

यह adc बाइनरी को आपके $GOPATH/bin डायरेक्टरी में इंस्टॉल करेगा।

सुनिश्चित करें कि आप इसे अपने $PATH पर्यावरण चर में जोड़ते हैं:

export PATH=$PATH:$GOPATH/bin

यदि आपके पास Go इंस्टॉल नहीं है, तो आप अपने ऑपरेटिंग सिस्टम के लिए नवीनतम adc बाइनरी डाउनलोड कर सकते हैं और इसे अपने /bin फ़ोल्डर में निम्नानुसार जोड़ सकते हैं:

wget https://github.com/api7/adc/releases/download/v0.2.0/adc_0.2.0_linux_amd64.tar.gz tar -zxvf adc_0.2.0_linux_amd64.tar.gz mv adc /usr/local/bin/adc

आप अन्य ऑपरेटिंग सिस्टम के लिए बाइनरीज़ रिलीज़ पेज पर पा सकते हैं। भविष्य में, ये बाइनरीज़ Homebrew जैसे पैकेज मैनेजर्स पर प्रकाशित की जाएंगी।

adc इंस्टॉल है या नहीं यह जांचने के लिए, चलाएं:

adc --help

यदि सब कुछ ठीक है, तो आप उपलब्ध सबकमांड्स की सूची और उनका उपयोग कैसे करें देखेंगे।

अपने APISIX इंस्टेंस के साथ ADC को कॉन्फ़िगर करना

ADC को अपने डिप्लॉय किए गए APISIX इंस्टेंस के साथ काम करने के लिए कॉन्फ़िगर करने के लिए, आप निम्नलिखित कमांड चला सकते हैं:

adc configure

यह आपसे APISIX सर्वर एड्रेस ('http://127.0.0.1:9180' यदि आपने अनुसरण किया है) और टोकन दर्ज करने के लिए कहेगा।

यदि सब कुछ सही है, तो आप नीचे दिखाए गए संदेश को देखेंगे:

ADC कॉन्फ़िगर सफलतापूर्वक हो गया! APISIX से सफलतापूर्वक जुड़ गया!

आप कभी भी APISIX के साथ कनेक्टिविटी जांचने के लिए ping सबकमांड का उपयोग कर सकते हैं:

adc ping

APISIX कॉन्फ़िगरेशन फ़ाइल्स को वैलिडेट करना

आइए एक बेसिक APISIX कॉन्फ़िगरेशन बनाएं जिसमें एक रूट हो जो ट्रैफ़िक को एक अपस्ट्रीम पर फॉरवर्ड करता है:

name: "Basic configuration" version: "1.0.0" services: - name: httpbin-service hosts: - api7.ai upstream: name: httpbin nodes: - host: httpbin.org port: 80 weight: 1 routes: - name: httpbin-route service_id: httpbin-service uri: "/anything" methods: - GET

एक बार ADC चल रहे APISIX इंस्टेंस से जुड़ जाए, तो हम इसे इस कॉन्फ़िगरेशन को लागू करने से पहले वैलिडेट करने के लिए उपयोग कर सकते हैं:

adc validate -f config.yaml

यदि कॉन्फ़िगरेशन वैध है, तो आपको इसी तरह का प्रतिक्रिया मिलनी चाहिए:

कॉन्फ़िगरेशन फ़ाइल सफलतापूर्वक पढ़ी गई: कॉन्फ़िगरेशन नाम: Basic configuration, संस्करण: 1.0.0, रूट्स: 1, सेवाएं: 1. कॉन्फ़िगरेशन फ़ाइल सफलतापूर्वक वैलिडेट की गई!

कॉन्फ़िगरेशन को APISIX इंस्टेंस के साथ सिंक करना

अब आप ADC का उपयोग करके अपने वैध कॉन्फ़िगरेशन को जुड़े APISIX इंस्टेंस के साथ सिंक कर सकते हैं। ऐसा करने के लिए, चलाएं:

adc sync -f config.yaml

यह हमारी कॉन्फ़िगरेशन फ़ाइल में घोषित रूट और सेवा बनाएगा:

सेवा बनाई जा रही है: "httpbin-service" रूट बनाई जा रही है: "httpbin-route" सारांश: बनाई गई 2, अपडेट की गई 0, हटाई गई 0

यह सत्यापित करने के लिए कि रूट्स सही ढंग से बनाए गए हैं, आइए एक अनुरोध भेजें:

curl localhost:9080/anything -H "host:api7.ai"

यदि सब कुछ सही है, तो आपको httpbin.org से प्रतिक्रिया मिलेगी।

स्थानीय और चल रही कॉन्फ़िगरेशन की तुलना करना

अब हम अपनी स्थानीय कॉन्फ़िगरेशन को config.yaml फ़ाइल में अपडेट करते हैं और एक और रूट जोड़ते हैं:

name: "Basic configuration" version: "1.0.0" services: - name: httpbin-service hosts: - api7.ai upstream: name: httpbin nodes: - host: httpbin.org port: 80 weight: 1 routes: - name: httpbin-route-anything service_id: httpbin-service uri: "/anything" methods: - GET - name: httpbin-route-ip service_id: httpbin-service uri: "/ip" methods: - GET

APISIX के साथ इस कॉन्फ़िगरेशन को सिंक करने से पहले, ADC आपको इसे और मौजूदा APISIX कॉन्फ़िगरेशन के बीच के अंतरों की जांच करने की अनुमति देता है। आप इसे निम्नलिखित कमांड चलाकर कर सकते हैं:

adc diff -f config.yaml

आप कॉन्फ़िगरेशन में जोड़े गए और हटाए गए चीज़ों को देख पाएंगे और इसे लागू करने से पहले समझ सकेंगे कि क्या बदला है।

OpenAPI परिभाषाओं को APISIX कॉन्फ़िगरेशन में बदलना

ADC में OpenAPI परिभाषाओं के साथ काम करने के लिए बेसिक सपोर्ट भी है। ADC आपको OpenAPI फॉर्मेट में परिभाषाओं को APISIX कॉन्फ़िगरेशन में बदलने की अनुमति देता है।

उदाहरण के लिए, यदि आपने अपनी API को OpenAPI फॉर्मेट में निम्नानुसार दस्तावेज़ित किया है:

openapi: 3.0.0 info: title: httpbin API description: Routes for httpbin API version: 1.0.0 servers: - url: http://httpbin.org paths: /anything: get: tags: - default summary: Returns anything that is passed in the request data operationId: getAnything parameters: - name: host in: header schema: type: string example: "{{host}}" responses: "200": description: Successfully return anything content: application/json: {} /ip: get: tags: - default summary: Returns the IP address of the requester operationId: getIP responses: "200": description: Successfully return IP content: application/json: {}

आप इस सबकमांड openapi2apisix का उपयोग करके इसे APISIX कॉन्फ़िगरेशन में बदल सकते हैं:

adc openapi2apisix -o config.yaml -f openAPI.yaml

यह निम्नलिखित कॉन्फ़िगरेशन फ़ाइल बनाएगा:

name: "" routes: - desc: Returns anything that is passed in the request data id: "" methods: - GET name: getAnything uris: - /anything - desc: Returns the IP address of the requester id: "" methods: - GET name: getIP uris: - /ip services: - desc: Routes for httpbin API id: "" name: httpbin API upstream: id: "" name: "" nodes: null version: ""

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

टिप: ऑटोकम्प्लीट का उपयोग करें

आप ADC के साथ बहुत कुछ कर सकते हैं, और सुविधाओं की सूची बढ़ने वाली है। किसी भी सबकमांड का उपयोग कैसे करें यह जानने के लिए, आप --help या -h फ्लैग का उपयोग कर सकते हैं, जो सबकमांड के लिए दस्तावेज़ीकरण दिखाएगा।

चीज़ों को और आसान बनाने के लिए, आप completion सबकमांड का उपयोग करके अपने शेल पर्यावरण के लिए एक ऑटोकम्प्लीट स्क्रिप्ट जेनरेट कर सकते हैं। उदाहरण के लिए, यदि आप zsh शेल का उपयोग कर रहे हैं, तो आप निम्नलिखित कमांड चला सकते हैं:

adc completion zsh

आप फिर आउटपुट को अपनी .zshrc फ़ाइल में कॉपी-पेस्ट कर सकते हैं, और जब आप adc का उपयोग करेंगे तो यह संकेत दिखाएगा।

ADC अभी अपने शुरुआती चरण में है और इसे लगातार सुधारा जा रहा है। प्रोजेक्ट के बारे में अधिक जानने, बग रिपोर्ट करने, या सुविधाओं का सुझाव देने के लिए, github.com/api7/adc पर जाएं।

Tags: