Kubernetes में APISIX को डिप्लॉय करने के 3 टिप्स (भाग 2)
May 7, 2024
क्लाउड-नेटिव कंप्यूटिंग के युग में Kubernetes को एक कंटेनर ऑर्केस्ट्रेशन प्लेटफॉर्म के रूप में व्यापक रूप से अपनाया गया है, जिसमें Apache APISIX एक उच्च-प्रदर्शन, क्लाउड-नेटिव डायनामिक API गेटवे के रूप में उभरा है। Kubernetes में Apache APISIX को तैनात करना तेजी से आम हो गया है। हालांकि, Kubernetes पर Apache APISIX को तैनात करने की प्रक्रिया अपेक्षाकृत सरल है, फिर भी कुछ महत्वपूर्ण मुद्दों पर विचार करना आवश्यक है। इस लेख श्रृंखला में, हम निम्नलिखित विषयों पर गहराई से चर्चा करेंगे:
- तैनाती विधियों पर विचार
- स्वास्थ्य जांच, लॉगिंग और मॉनिटरिंग
- कस्टम प्लगइन्स और कॉन्फ़िगरेशन को संभालना
पिछले लेख में, हमने पहले बिंदु पर चर्चा की थी। यह लेख दूसरे बिंदु पर ध्यान केंद्रित करेगा: स्वास्थ्य जांच, लॉगिंग और मॉनिटरिंग से संबंधित विचार।
स्वास्थ्य जांच
Kubernetes में APISIX को तैनात करते समय, स्वास्थ्य जांच विशेष रूप से महत्वपूर्ण है, क्योंकि यह Kubernetes में एप्लिकेशन के लिए एक मूलभूत आवश्यकता है। Kubernetes में, Liveness और Readiness Probes को कॉन्फ़िगर करके, APISIX इंस्टेंस की स्वास्थ्य स्थिति और उपलब्धता सुनिश्चित की जा सकती है।
-
Liveness Probe का उपयोग यह निर्धारित करने के लिए किया जाता है कि एप्लिकेशन चल रहा है या नहीं। यदि एप्लिकेशन को अस्वस्थ माना जाता है, तो Kubernetes इंस्टेंस को पुनः आरंभ करेगा।
-
Readiness Probe का उपयोग यह निर्धारित करने के लिए किया जाता है कि एप्लिकेशन ट्रैफ़िक प्राप्त करने के लिए तैयार है या नहीं। यदि एप्लिकेशन अभी तक तैयार नहीं है, तो यह किसी भी ट्रैफ़िक को प्राप्त नहीं करेगा। यह उन इंस्टेंस को ट्रैफ़िक भेजने से रोकने में मदद करता है जो पूरी तरह से आरंभ नहीं हुए हैं या क्षतिग्रस्त हैं।
Liveness और Readiness Probes को सही ढंग से कॉन्फ़िगर करके, Kubernetes अस्वस्थ Pod इंस्टेंस को स्वचालित रूप से प्रबंधित कर सकता है। इसका अर्थ है कि जब इंस्टेंस को समस्याएं आती हैं, तो Kubernetes स्वचालित रूप से उन्हें पुनः आरंभ करेगा या अस्वस्थ इंस्टेंस को ट्रैफ़िक भेजना बंद कर देगा, जिससे सिस्टम की उपलब्धता और स्थिरता में सुधार होता है।
YAML कॉन्फ़िगरेशन उदाहरण:
apiVersion: v1 kind: Deployment metadata: name: my-apisix-pod spec: containers: - name: my-apisix-container image: my-apisix-image livenessProbe: httpGet: path: /healthz port: 9080 initialDelaySeconds: 15 periodSeconds: 10 readinessProbe: httpGet: path: /readyz port: 9080 initialDelaySeconds: 10 periodSeconds: 5
यह उदाहरण कंटेनर के लिए Liveness और Readiness Probes को परिभाषित करता है। Liveness Probe हर 10 सेकंड में /healthz पथ पर एक HTTP GET अनुरोध भेजता है ताकि कंटेनर की स्वास्थ्य स्थिति की जांच की जा सके। यदि कंटेनर प्रतिक्रिया नहीं देता है या 200 स्थिति कोड नहीं लौटाता है, तो Kubernetes कंटेनर को अस्वस्थ मानता है और इसे पुनः आरंभ करने का प्रयास करता है। Readiness Probe समान है लेकिन इसका उपयोग यह जांचने के लिए किया जाता है कि कंटेनर ट्रैफ़िक प्राप्त करने के लिए तैयार है या नहीं।
मॉनिटरिंग
APISIX को रनटाइम में मॉनिटर करने के लिए विभिन्न विधियां हैं, जिनमें Prometheus को एकीकृत करना एक अनुशंसित दृष्टिकोण है। वास्तव में, Prometheus आज तक सबसे व्यापक रूप से उपयोग किया जाने वाला मॉनिटरिंग घटक है।
Prometheus को एकीकृत करने से APISIX और इसके द्वारा प्रॉक्सी की गई सेवाओं के मेट्रिक्स को एकत्रित और मॉनिटर करने में मदद मिलती है। ये मेट्रिक्स अनुरोध दर, त्रुटि दर, विलंबता और अन्य महत्वपूर्ण प्रदर्शन संकेतकों को शामिल कर सकते हैं। इन मेट्रिक्स को मॉनिटर करके, समस्याओं को तुरंत पहचाना जा सकता है और प्रदर्शन ट्यूनिंग और समस्या निवारण किया जा सकता है। मेट्रिक्स और अलर्टिंग नियमों को सही ढंग से कॉन्फ़िगर करना सुनिश्चित करें ताकि समस्याएं उत्पन्न होने पर तुरंत कार्रवाई की जा सके।
APISIX में Prometheus प्लगइन को सक्षम करना सरल है। पहले, config.yaml में export_uri सेट करें।
plugin_attr: prometheus: export_uri: /apisix/metrics
फिर उस API या सेवा पर प्लगइन को सक्षम करें जिसे Prometheus द्वारा सांख्यिकीय विश्लेषण की आवश्यकता है।
curl http://127.0.0.1:9180/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "uri": "/hello", "plugins": { "prometheus":{} }, "upstream": { ... } }'
अंत में, Prometheus सर्वर export_uri से कॉन्फ़िगरेशन को नियमित रूप से खींच सकता है।
scrape_configs: - job_name: "apisix" scrape_interval: 15s metrics_path: "/apisix/prometheus/metrics" static_configs: - targets: ["127.0.0.1:9091"]
व्यावहारिक उपयोग में, Prometheus को भी उच्च उपलब्धता वाले तरीके से तैनात करने की आवश्यकता होती है, जैसे कि Thanos जैसे ओपन-सोर्स समाधान का उपयोग करना। APISIX के साथ एकीकरण Thanos साइडकार मोड का उपयोग करके प्राप्त किया जा सकता है।
लॉगिंग
APISIX में, महत्वपूर्ण लॉग्स को मोटे तौर पर दो प्रकारों में वर्गीकृत किया जा सकता है: ट्रैफ़िक लॉग्स और ऑडिट लॉग्स।
-
ट्रैफ़िक लॉग्स APISIX के रिवर्स प्रॉक्सी के रूप में कार्य करते समय प्रत्येक अनुरोध के लॉगिंग को संदर्भित करते हैं। ये लॉग्स, अनुरोध ट्रैफ़िक और वापसी की जानकारी के साथ-साथ APISIX के आंतरिक ऑपरेशन लॉग्स, ट्रेसिंग और समस्या निवारण के लिए महत्वपूर्ण हैं। आमतौर पर, लॉग्स को रिकॉर्ड करने के लिए उचित लॉग स्तर और प्रारूप सेट किए जाते हैं। व्यावहारिक परिदृश्यों में, लॉग्स को एक केंद्रीकृत लॉगिंग सिस्टम, जैसे ELK (Elasticsearch, Logstash, और Kibana), Fluentd, या Splunk में आउटपुट करने पर विचार करें। APISIX लॉग प्लगइन प्रदान करता है जिन्हें चुना जा सकता है।
-
ऑडिट लॉग्स मुख्य रूप से APISIX कॉन्फ़िगरेशन को प्रबंधित करते समय उत्पन्न लॉग्स को संदर्भित करते हैं। ये न केवल अनुपालन आवश्यकताओं को पूरा करने में मदद करते हैं बल्कि सुरक्षा विश्लेषण के लिए भी उपयोगी होते हैं। ऑडिट लॉग्स का विश्लेषण करके, संभावित सुरक्षा जोखिमों और अनुचित कॉन्फ़िगरेशन या प्रबंधन व्यवहारों की पहचान की जा सकती है, और संबंधित उपाय किए जा सकते हैं ताकि सिस्टम की सुरक्षा में सुधार हो सके।
ओपन-सोर्स APISIX कॉन्फ़िगरेशन वितरण के लिए एक Admin API प्रदान करता है लेकिन ऑडिट लॉग्स से संबंधित कॉन्फ़िगरेशन का अभाव है। आमतौर पर, उपयोगकर्ताओं को इन लॉग्स को स्वयं रिकॉर्ड करने की आवश्यकता होती है या APISIX के एंटरप्राइज़ संस्करण का उपयोग करना होता है।
Kubernetes और अन्य वातावरणों में लॉगिंग कॉन्फ़िगरेशन में अधिक अंतर नहीं हैं। यह ध्यान देने योग्य है कि जब APISIX में अपस्ट्रीम और संबंधित जानकारी को कॉन्फ़िगर करते हैं, तो Kubernetes सेवा खोज का आमतौर पर उपयोग किया जाता है। यह अनुशंसा की जाती है कि लॉग्स में सेवा नाम को रिकॉर्ड किया जाए ताकि बाद में समस्याओं में समस्या निवारण आसान हो सके।
निष्कर्ष
स्वास्थ्य जांच तंत्र को कॉन्फ़िगर करके APISIX के अस्वस्थ इंस्टेंस का पता लगाने से, Kubernetes तुरंत कार्रवाई कर सकता है ताकि ट्रैफ़िक को माइग्रेट किया जा सके और पुनर्प्राप्ति को सुविधाजनक बनाया जा सके, जिससे API सेवाओं की निरंतरता और स्थिरता सुनिश्चित होती है। APISIX Prometheus जैसे उन्नत मॉनिटरिंग टूल्स के साथ एकीकरण का भी समर्थन करता है, जिससे API प्रदर्शन और स्थिरता की मॉनिटरिंग की जा सकती है, जिसमें अनुरोध दर, त्रुटि दर और विलंबता जैसे महत्वपूर्ण मेट्रिक्स शामिल हैं। यह मॉनिटरिंग क्षमता संगठनों को संभावित समस्याओं को तुरंत पहचानने और समय पर प्रदर्शन ट्यूनिंग और अनुकूलन करने में सक्षम बनाती है, जिससे API सेवाओं का कुशल संचालन सुनिश्चित होता है।
