आपको Apigee Edge का दस्तावेज़ दिख रहा है.
Apigee X के दस्तावेज़ पर जाएं. जानकारी
एनवायरमेंट वैरिएबल की सीमाएं
होस्ट किए गए टारगेट, होस्ट किए गए टारगेट के रनटाइम एनवायरमेंट में सेट किए जा सकने वाले एनवायरमेंट वैरिएबल की संख्या और साइज़ को सीमित करते हैं.
- 1000: किसी एक एनवायरमेंट वैरिएबल की ज़्यादा से ज़्यादा लंबाई.
- 100: सेट किए जा सकने वाले एनवायरमेंट वैरिएबल की ज़्यादा से ज़्यादा संख्या.
एनवायरमेंट वैरिएबल सेट करने के बारे में जानकारी के लिए, मेनिफ़ेस्ट फ़ाइल देखें.
ऐप्लिकेशन के रनटाइम में सेट किए गए एनवायरमेंट वैरिएबल
होस्ट किए गए टारगेट ऐप्लिकेशन को डिप्लॉय करने पर, ये एनवायरमेंट वैरिएबल सेट हो जाते हैं. साथ ही, ये रनटाइम में आपके ऐप्लिकेशन के लिए उपलब्ध होते हैं:
APIGEE_ENVIRONMENT- यह वह एनवायरमेंट है जहां होस्ट की गई टारगेट प्रॉक्सी को डिप्लॉय किया जाता है.APIGEE_ORGANIZATION- वह संगठन जहां होस्ट किए गए टारगेट प्रॉक्सी को डिप्लॉय किया गया है.PORT- वह पोर्ट जहां होस्ट किए गए टारगेट ऐप्लिकेशन को सुनना चाहिए.
सिस्टम के संसाधनों का बंटवारा
होस्ट किए गए टारगेट के हर इंस्टेंस को ये संसाधन मिलते हैं:
- 256 एमबी मेमोरी
- 1.2 गीगाहर्ट्ज़ सीपीयू
स्केलिंग:
इस सेक्शन में बताया गया है कि आपके पास किस तरह का Edge खाता है, इसके आधार पर Hosted Targets ऐप्लिकेशन कैसे स्केल होते हैं.- Apigee Edge के ट्रायल वर्शन में, हर प्रॉक्सी के लिए सिर्फ़ एक होस्ट किए गए टारगेट इंस्टेंस का इस्तेमाल किया जा सकता है.
- Apigee Edge के पैसे चुकाकर लिए गए खातों को, अनुरोध दर, रिस्पॉन्स में लगने वाले समय, और प्रॉक्सी के हिसाब से ऐप्लिकेशन की अन्य मेट्रिक के आधार पर अपने-आप स्केलिंग की सुविधा मिलती है.
- Apigee Edge के पैसे चुकाकर इस्तेमाल किए जाने वाले वर्शन और बिना किसी शुल्क के आज़माए जाने वाले वर्शन, दोनों पर डिप्लॉय किए गए Hosted Targets ऐप्लिकेशन, कुछ समय तक इस्तेमाल न किए जाने पर बंद हो जाते हैं. ऐसे में, आपको कुछ समय के लिए जवाब मिलने में देरी हो सकती है. यह भी देखें पहले से मालूम समस्याएं
मेनिफ़ेस्ट फ़ाइल
होस्ट किए गए ऐप्लिकेशन को बनाने और डिप्लॉय करने के लिए, Edge रनटाइम की जानकारी इकट्ठा करता है. इसके लिए, वह resources/hosted डायरेक्ट्री में app.yaml नाम की मेनिफ़ेस्ट फ़ाइल ढूंढता है. इस फ़ाइल में, होस्ट किए गए टारगेट ऐप्लिकेशन को बनाने और डिप्लॉय करने के लिए ज़रूरी जानकारी होती है.
मैनिफ़ेस्ट फ़ाइल का सिंटैक्स
runtime: node runtimeVersion: version_number command: command_name args: argument_array env: - name: variable_name value: literal_value - name: variable_name valueRef: name: kvm_name key: kvm_value
मेनिफ़ेस्ट फ़ाइल के एलिमेंट
app.yaml मेनिफ़ेस्ट फ़ाइल में ये एलिमेंट शामिल होते हैं:
- runtime - (ज़रूरी है) इससे पता चलता है कि किस तरह का ऐप्लिकेशन डिप्लॉय किया जा रहा है.
आपको
nodeएट्रिब्यूट की वैल्यू देनी होगी. - runtimeVersion - (वैकल्पिक) रनटाइम का वह वर्शन जिसे आपका ऐप्लिकेशन इस्तेमाल करता है. डिफ़ॉल्ट: Node.js LTS (v10.x). अन्य विकल्पों के लिए, Node के लिए Docker की आधिकारिक रिपॉज़िटरी देखें.
- command - (ज़रूरी नहीं) इसकी मदद से, ऐप्लिकेशन शुरू करने के लिए इस्तेमाल की जाने वाली डिफ़ॉल्ट कमांड के अलावा, कोई दूसरी कमांड तय की जा सकती है. डिफ़ॉल्ट:
Node.js=npm - args - (ज़रूरी नहीं) ऐप्लिकेशन को पास किए जाने वाले कमांड लाइन आर्ग्युमेंट की ऐरे (स्टैंडर्ड YAML ऐरे सिंटैक्स में बताई गई है). आम तौर पर, इन्हें डिफ़ॉल्ट कमांड में जोड़ा जाता है.
डिफ़ॉल्ट रूप से, यह start पर सेट होता है. उदाहरण के लिए, डिफ़ॉल्ट रूप से Node.js ऐप्लिकेशन को
npm startकमांड पास की जाएगी. - env - (ज़रूरी नहीं) होस्ट किए गए टारगेट के रनटाइम एनवायरमेंट में सेट करने के लिए, एनवायरमेंट वैरिएबल (नाम/वैल्यू पेयर) का एक कलेक्शन. ये वैरिएबल, आपके डिप्लॉय किए गए Hosted Targets ऐप्लिकेशन के लिए उपलब्ध हैं.
- name - वैरिएबल का नाम.
- value | valueRef - आपके पास दो विकल्प हैं. आपके पास लिटरल वैल्यू सेट करने का विकल्प होता है. इसके अलावा, मुख्य वैल्यू मैप में सेव की गई वैल्यू को भी रेफ़रंस किया जा सकता है. आपके Edge एनवायरमेंट में, Key Value Map पहले से मौजूद होना चाहिए. की-वैल्यू मैप के साथ काम करना लेख पढ़ें
- value का इस्तेमाल करने पर, आपको वैरिएबल
nameऔर लिटरलvalueतय करना होगा. उदाहरण के लिए:runtime: node env: - name: NODE_ENV value: production - valueRef का इस्तेमाल करने पर, आपको Edge में पहले से बनाए गए कुंजी-वैल्यू मैप (केवीएम) का नाम और कुंजी देनी होगी.
उदाहरण के लिए:
runtime: node env: - name: DB_ENV value: production - name: DB_PASSWORD valueRef: name: hosted-kvm key: db-password
- value का इस्तेमाल करने पर, आपको वैरिएबल
- apigeetool -- यह Edge प्रॉक्सी को डिप्लॉय करने के लिए, कमांड लाइन टूल है.
- get_token - यह एक कमांड लाइन टूल है. इसका इस्तेमाल, apigeetool के लिए ज़रूरी अनुमति वाला टोकन पाने के लिए किया जाता है.
- किसी ब्राउज़र में, https://github.com/apigee/api-platform-samples पर जाएं.
- क्लोन या डाउनलोड करें पर क्लिक करें और अपनी पसंद के तरीके का इस्तेमाल करके, repo को अपने लोकल सिस्टम पर पुल करें.
- cd to <your install dir>/api-platform-samples/doc-samples/hosted-targets
- रिपो डाउनलोड हो जाने के बाद, किसी भी सैंपल डायरेक्ट्री पर cd किया जा सकता है. इसके बाद, Edge पर सैंपल प्रॉक्सी डिप्लॉय करने के लिए, README फ़ाइल में दिए गए निर्देशों का पालन करें. डप्लॉय करने की कमांड यहां दिखाई गई है. यहां दिए गए पैरामीटर को अपने Apigee खाते के पैरामीटर से बदलें:
- नेटवर्क की लेटेन्सी - अब Node.js ऐप्लिकेशन, MP के JVM में नहीं चलता है. इसलिए, अब MP और डिप्लॉयमेंट के बीच नेटवर्क हॉप होता है. ज़रूर इसके लिए आपको कुछ शुल्क देना होगा, लेकिन शुरुआती बेंचमार्क के हिसाब से यह शुल्क बहुत कम है
- एपीआई के जवाब मिलने में देरी होना - आपके ऐप्लिकेशन को चलाने वाला इन्फ़्रास्ट्रक्चर, ज़रूरत के हिसाब से अपने-आप स्केल हो जाता है. इसका मतलब है कि आपके ऐप्लिकेशन को शून्य इंस्टेंस तक कम किया जा सकता है. अगर ऐसा होता है, तो अगले एपीआई अनुरोध में, सामान्य एपीआई अनुरोधों की तुलना में थोड़ा ज़्यादा समय लगेगा. ऐसा इसलिए, क्योंकि बुनियादी ढांचा अनुरोधों को प्रोसेस करने के लिए इंस्टेंस शुरू कर रहा है.
- डिप्लॉयमेंट से जुड़ी गड़बड़ी - अगर आपको होस्ट किए गए टारगेट की प्रॉक्सी को डिप्लॉय करते समय, डिप्लॉयमेंट से जुड़ी गड़बड़ी मिलती है, तो प्रॉक्सी को फिर से डिप्लॉय करने की कोशिश करें. कुछ मामलों में, डिप्लॉयमेंट का समय खत्म हो सकता है. ऐसे में, फिर से डिप्लॉय करने पर समस्या अपने-आप ठीक हो जाएगी.
मेनिफ़ेस्ट फ़ाइलों के उदाहरण
इस सेक्शन में, Node.js ऐप्लिकेशन के लिए मेनिफ़ेस्ट फ़ाइलों के उदाहरण दिए गए हैं. होस्ट किए गए टारगेट वाला ऐप्लिकेशन डिप्लॉय करने के लिए, मेनिफ़ेस्ट फ़ाइल ज़रूरी है. यह apiproxy/resources/hosted डायरेक्ट्री में मौजूद होनी चाहिए. साथ ही, फ़ाइल का नाम app.yaml होना चाहिए.
यहां Node.js ऐप्लिकेशन के लिए, app.yaml (मेनिफ़ेस्ट) फ़ाइलों के उदाहरण दिए गए हैं.
लिटरल एनवायरमेंट वैरिएबल के बारे में बताने वाला उदाहरण:
runtime: node
env:
- name: NODE_ENV
value: productionस्टार्ट कमांड, कमांड-लाइन आर्ग्युमेंट, और एनवायरमेंट वैरिएबल का उदाहरण.
runtime: node
command: ./node_modules/pm2/bin/pm2
env:
- name: NODE_ENV
value: production
args:
- app.js
केवीएम के रेफ़रंस के बारे में बताने वाले उदाहरण:
KVM ऐक्सेस के बारे में ज़्यादा जानकारी के लिए, मेनिफ़ेस्ट फ़ाइल देखें.
runtime: node env: - name: DB_ENV value: production - name: DB_PASSWORD valueRef: name: hosted-kvm key: db-password
GitHub पर होस्ट किए गए टारगेट ऐप्लिकेशन के सैंपल
Apigee, GitHub पर सैंपल प्रॉक्सी उपलब्ध कराता है. इनमें Node.js में लिखे गए होस्ट किए गए टारगेट ऐप्लिकेशन होते हैं. इस रेपो को क्लोन किया जा सकता है. साथ ही, किसी भी प्रॉक्सी को डिप्लॉय करने के लिए, README में दिए गए निर्देशों का पालन किया जा सकता है.
ज़रूरी शर्तें
सेंपल को डिप्लॉय करने के लिए, आपके सिस्टम पर ये दो टूल इंस्टॉल होने चाहिए:
अगर आपको स्थानीय तौर पर सैंपल की जांच करनी है, तो आपके डिवाइस में Node.js इंस्टॉल होना चाहिए.
सैंपल रेपो पाना
get_token && apigeetool deployproxy \ -o YOUR_ORGANIZATION \ -e YOUR_ENVIRONMENT \ --json \ --token "$(< ~/.sso-cli/valid_token.dat)"\ --api NAME_OF_THE_PROXY \ --directory .
उदाहरण: सैंपल के तौर पर मिले ऐप्लिकेशन को एक्ज़ीक्यूट करना
सैंपल रिपॉज़िटरी को क्लोन करना
cd ~/myhomegit clone https://github.com/apigee/api-platform-samples.gitcd ~/myhome/api-platform-samples/doc-samples/hosted-targetscd node-hosted-hello
ऐप्लिकेशन को स्थानीय तौर पर टेस्ट करना
स्थानीय तौर पर जांच करने के लिए, आपके डिवाइस पर Node.js इंस्टॉल होना चाहिए.
PORT=8081 node apiproxy/resources/hosted/index.jscurl http://localhost:8081
आउटपुट का उदाहरण:
{"date":"2018-03-12T21:45:22.161Z","msg":"Hello, World!"}प्रॉक्सी डिप्लॉय करना
get_token && apigeetool deployproxy \ -o myorg \ -e test \ --json \ --token "$(< ~/.sso-cli/valid_token.dat)"\ --api node-hosted-hello \ --directory .
डिप्लॉयमेंट की जांच करना
इस प्रोसेस को पूरा होने में कुछ मिनट लग सकते हैं. अगर आपको डिप्लॉयमेंट से जुड़ी कोई गड़बड़ी मिलती है, तो डिप्लॉय करने का निर्देश फिर से चलाएं.
curl http://myorg-test.apigee.net/node-hosted-hello
आउटपुट का उदाहरण:
{"date":"2018-03-23T18:59:18.668Z","msg":"Hello, World!"