APISIX Ingress Controller में Gateway API का उपयोग कैसे करें
Yeqi Peng
November 11, 2022
कुबेरनेट्स गेटवे API क्या है
गेटवे API कुबेरनेट्स में सेवाओं को क्लस्टर के बाहर एक्सपोज़ करने के लिए एक और समुदाय-प्रारंभित विशिष्टता (sig-network द्वारा प्रबंधित) है, जो नेटिव सर्विस और इन्ग्रेस के अतिरिक्त है।
गेटवे API कई सामान्य नेटवर्क प्रोटोकॉल (जैसे, HTTP, TCP, UDP) और TLS का समर्थन करता है। इसके अलावा, गेटवे API में गेटवे संसाधन शामिल हैं जो कुबेरनेट्स API के माध्यम से प्रॉक्सी या गेटवे के जीवनचक्र को प्रबंधित करना संभव बनाते हैं।
गेटवे API की आवश्यकता क्यों है
इन्ग्रेस की तुलना में, गेटवे API इन्ग्रेस के कार्यात्मक सुपरसेट का प्रतिनिधित्व करता है, जिसमें निम्नलिखित सुधार शामिल हैं:
- भूमिका-उन्मुख: गेटवे API संसाधनों से बना है जो संगठनात्मक भूमिकाओं को मॉडल करते हैं जो कुबेरनेट्स सर्विस नेटवर्किंग का उपयोग और कॉन्फ़िगर करते हैं।
- अभिव्यंजक: गेटवे API संसाधन हेडर-आधारित मिलान, ट्रैफ़िक वेटिंग और अन्य क्षमताओं जैसे मुख्य कार्यक्षमता का समर्थन करते हैं, जो इन्ग्रेस में केवल कस्टम एनोटेशन के माध्यम से संभव थे।
- विस्तार योग्य: गेटवे API API के विभिन्न स्तरों पर कस्टम संसाधनों को जोड़ने की अनुमति देता है, जो API संरचना के भीतर उचित स्थानों पर सूक्ष्म कस्टमाइज़ेशन संभव बनाता है।
इसके अलावा, मानक में पोर्टेबिलिटी, साझा गेटवे और क्रॉस-नेमस्पेस संदर्भ जैसी सुविधाएं शामिल हैं।
जैसा कि चित्र में दिखाया गया है, भूमिका-उन्मुख डिज़ाइन क्लस्टर के भीतर नेटवर्क इंफ्रास्ट्रक्चर को विभिन्न टीमों के बीच साझा करने और क्लस्टर प्रशासक द्वारा निर्धारित नीतियों और बाधाओं को साझा करने की अनुमति देता है। यह विभिन्न प्रकार की भूमिकाओं, जैसे इंफ्रास्ट्रक्चर प्रदाता, क्लस्टर प्रशासक और एप्लिकेशन डेवलपर्स को अपने काम पर ध्यान केंद्रित करने और अन्य भूमिकाओं के लिए जिम्मेदार नहीं होने की अनुमति देता है।

विभिन्न भूमिकाएं गेटवे API संसाधनों के विभिन्न स्तरों को कॉन्फ़िगर करती हैं, और विभिन्न स्तर एक साथ काम करते हैं:

गेटवे API की वर्तमान स्थिति
वर्तमान में, गेटवे API v0.5.0 के रिलीज़ के साथ, कुछ महत्वपूर्ण कोर API पहली बार बीटा में आए हैं, जिनमें GatewayClass, Gateway और HTTPRoute शामिल हैं।
APISIX इन्ग्रेस में गेटवे API का उपयोग कैसे करें
APISIX इन्ग्रेस कंट्रोलर गेटवे API के लिए समर्थन विकास के अधीन है और अल्फा चरण में है, और वर्तमान में HTTPRoute, TCPRoute जैसे संसाधनों का समर्थन करता है।
गेटवे API CRD स्थापित करें
गेटवे API का उपयोग करने के लिए, आपको पहले गेटवे API के लिए CRD स्थापित करने की आवश्यकता है, या तो APISIX इन्ग्रेस कंट्रोलर रिपॉजिटरी के तहत एक कॉपी के माध्यम से या आधिकारिक रिपॉजिटरी kubernetes-sigs/gateway-api के माध्यम से। यहां APISIX इन्ग्रेस कंट्रोलर रिपॉजिटरी से CRD की एक कॉपी का उदाहरण के रूप में उपयोग किया गया है।
गेटवे API के लिए CRD स्थापित करने के लिए निम्नलिखित कमांड निष्पादित करें।
git pull git@github.com:apache/apisix-ingress-controller.git cd apisix-ingress-controller kubectl apply -f ./samples/deploy/gateway-api/
APISIX इन्ग्रेस कंट्रोलर स्थापित करें
APISIX इन्ग्रेस कंट्रोलर में गेटवे API समर्थन डिफ़ॉल्ट रूप से सक्षम नहीं है और इसे -enable-gateway-api=true पैरामीटर के साथ सक्षम किया जा सकता है।
हेल्म के साथ स्थापित करते समय, आप इसे वैल्यूज़ कॉन्फ़िगर करके सक्षम कर सकते हैं।
APISIX और APISIX इन्ग्रेस कंट्रोलर स्थापित करने के लिए निम्नलिखित कमांड का उपयोग करें।
helm repo add apisix https://charts.apiseven.com helm repo add bitnami https://charts.bitnami.com/bitnami helm repo update kubectl create ns apisix-ingress helm install apisix apisix/apisix --namespace apisix-ingress \ --set gateway.type=NodePort \ --set ingress-controller.enabled=true \ --set ingress-controller.config.apisix.serviceNamespace=apisix-ingress \ --set ingress-controller.config.kubernetes.enableGatewayAPI=true
ध्यान दें कि पैरामीटर -set ingress-controller.config.kubernetes.enableGatewayAPI=true गेटवे API समर्थन को सक्षम करने के लिए उपयोग किया जाता है।
ये कमांड apisix-ingress नेमस्पेस के तहत एक पूर्ण परीक्षण वातावरण बनाएंगे, जिसमें APISIX, etcd और APISIX इन्ग्रेस कंट्रोलर शामिल हैं।
परीक्षण लोड तैनात करें
परीक्षण लोड के रूप में kennethreitz/httpbin इमेज का उपयोग करें।
इन लोड को डिफ़ॉल्ट नेमस्पेस के तहत तैनात करने के लिए निम्नलिखित कमांड का उपयोग करें।
kubectl run httpbin --image kennethreitz/httpbin --port 80 kubectl expose pod httpbin --port 80
HTTPRoute कॉन्फ़िगर करें
वर्तमान में, APISIX इन्ग्रेस कंट्रोलर गेटवे API संसाधन के v1alpha2 संस्करण का समर्थन करता है।
परीक्षण के लिए, निम्नलिखित HTTPRoute कॉन्फ़िगरेशन का उपयोग करें और इसे httproute.yaml फ़ाइल में सहेजें:
# httproute.yaml apiVersion: gateway.networking.k8s.io/v1alpha2 kind: HTTPRoute metadata: name: basic-http-route spec: hostnames: - local.httpbin.org rules: - backendRefs: - name: httpbin port: 80 matches: - path: type: PathPrefix value: /
इस HTTPRoute कॉन्फ़िगरेशन को तैनात करने के लिए निम्नलिखित कमांड का उपयोग करें:
kubectl apply -f ./httproute.yaml
सत्यापन
सत्यापन सीधे APISIX पॉड में निम्नलिखित कमांड निष्पादित करके किया जा सकता है:
kubectl -n apisix-ingress exec -it $(kubectl -n apisix-ingress get Pods -l "app.kubernetes.io/name=apisix" -o name) -c apisix -- curl -H "Host: local.httpbin.org" localhost:9080/ip
अपेक्षित आउटपुट है:
{ "origin": "127.0.0.1" }
यह इंगित करता है कि हमारा कॉन्फ़िगरेशन सफलतापूर्वक लागू हो गया है।
APISIX इन्ग्रेस गेटवे API का समर्थन कैसे करता है
वर्तमान में, APISIX इन्ग्रेस कंट्रोलर गेटवे API के लिए समर्थन जोड़ रहा है और HTTPRoute, TCPRoute जैसे संसाधनों का समर्थन करता है।
APISIX इन्ग्रेस कंट्रोलर का गेटवे और गेटवे क्लास के लिए समर्थन सक्रिय रूप से विकास के अधीन है, इसलिए इन संसाधनों का कॉन्फ़िगरेशन अभी के लिए प्रभावी नहीं होगा।
सारांश
इस लेख में, हम गेटवे API का परिचय देते हैं, जो क्लस्टर के बाहर सेवाओं को एक्सपोज़ करने के लिए समुदाय में एक नई विशिष्टता है, और APISIX इन्ग्रेस कंट्रोलर में इसका उपयोग कैसे करें, इसका वर्णन करते हैं।
APISIX इन्ग्रेस कंट्रोलर में गेटवे API के पूर्ण समर्थन पर सक्रिय रूप से काम चल रहा है।