আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন। তথ্য
হোস্ট করা টার্গেট প্রক্সি আনডিপ্লয় করা
আপনি যখন কোনও হোস্ট করা টার্গেট অ্যাপ্লিকেশন সহ Edge প্রক্সি আনডিপ্লয় করেন, তখন সংশ্লিষ্ট হোস্ট করা টার্গেট অ্যাপ আনডিপ্লয় করা হয়, কিন্তু অন্তর্নিহিত অ্যাপ্লিকেশন ইমেজ মুছে ফেলা হয় না। আপনি প্রক্সি আবার ডিপ্লয় করলে, হোস্ট করা টার্গেট অ্যাপ আবার ডিপ্লয় করা হয়।
হোস্ট করা টার্গেটের প্রক্সি মোছা
আপনি কোনও হোস্ট করা টার্গেট প্রক্সি মুছে দেওয়ার পরে, অন্তর্নিহিত রানটাইম ইনস্ট্যান্সগুলি কিছু সময়ের মধ্যে চালানো বন্ধ করে দেবে। তবে, অ্যাপ্লিকেশন কোডটি থেকে যাবে।
লগ ফাইল অ্যাক্সেস করা
ডিবাগিং ও সমস্যার সমাধানের জন্য লগ ফাইল কাজে লাগে। হোস্ট করা টার্গেট ডেপ্লয়মেন্টের জন্য আপনি দুই ধরনের লগ ফাইল দেখতে পাবেন:
- বিল্ড লগ - হোস্ট করা টার্গেট অ্যাপ ডেপ্লয় ও বিল্ড করা সম্পর্কিত আউটপুট দেখায়।
- রানটাইম লগ - এটি আপনাকে হোস্ট করা টার্গেট অ্যাপের আউটপুট দেখায়। রানটাইম লগ পরিবেশের মধ্যে সীমাবদ্ধ থাকে এবং বর্তমানে ডিপ্লয় করা প্রক্সি রিভিশনের লগ তথ্য দেখায়।
Edge UI থেকে লগ অ্যাক্সেস করা
- এখানে যান: apigee.com/edge
- আপনার লগ-ইন ক্রেডেনশিয়াল লিখে সাইন-ইন করুন বিকল্পে ক্লিক করুন।
- সাইড নেভিগেশন মেনু থেকে ডেভেলপ করুন > API প্রক্সি বিকল্প বেছে নিন।
- আপনি যে প্রক্সির লগ দেখতে চান সেটি বেছে নিন।
- ডেভেলপ করুন ট্যাবে ক্লিক করুন।
- বিল্ড লগ দেখতে, বিল্ড লগ বিকল্পে ক্লিক করুন।
- রানটাইম লগ দেখতে, রানটাইম লগ বিকল্পে ক্লিক করুন।
API-এর মাধ্যমে লগ অ্যাক্সেস করা
এছাড়াও, আপনি Edge API ব্যবহার করে হোস্ট করা টার্গেটের লগ রিট্রিভ করতে পারবেন। আরও তথ্যের জন্য, ক্যাশে করা Node.js লগ পান দেখুন।
প্রাইভেট npm রেপোজিটরি ব্যবহার করা
এই বিভাগে, সেইসব ক্ষেত্রে Hosted Targets-এ Node.js প্রক্সি কীভাবে ডিপ্লয় করতে হয় তা ব্যাখ্যা করা হয়েছে, যেখানে আপনি নিজের ডেভেলপমেন্ট এনভায়রনমেন্টে ব্যক্তিগত NPM রেপোজিটরি ব্যবহার করেন।
প্রাইভেট রিপোজিটরি ব্যবহার করা সম্পর্কে আপনার যা জানা প্রয়োজন
আপনি Edge-এ Node.js অ্যাপ ডেপ্লয় করলে, আপনার প্রোজেক্টের সবকটি ডিপেন্ডেন্সি ডেপ্লয়মেন্ট প্রসেসের অংশ হিসেবে অটোমেটিক
ইমপোর্ট করা হয়।
মোটকথা, Hosted Targets আপনার কোডে npm install রান করে যখন এটি ডেপ্লয় করা হয়।
তবে, আপনার ডেভেলপমেন্ট এনভায়রনমেন্টে ব্যক্তিগত NPM রেপোজিটরি ব্যবহার করলে, ব্যক্তিগত
ডিপেন্ডেন্সি ক্লাউডে সমাধান করা যাবে না। এই
ক্ষেত্রে, apigeetool ডিপ্লয়মেন্ট ইউটিলিটি ব্যবহার করার সময় --bundled-dependencies বিকল্পটি ব্যবহার করাই হল সমাধান।
আরও দেখুন
আপনার সিস্টেম থেকে Edge-এ Node.js ডিপ্লয় করুন।
আপনি apigeetool-এ --bundled-dependencies ফ্ল্যাগ ব্যবহার করলে, আপনার
Node.js অ্যাপ Hosted Targets-এ আপলোড করা হবে এবং package.json-এ
bundledDependencies array-এ
তালিকাভুক্ত যেকোনও লোকাল/প্রাইভেট ফাইল বান্ডেলের সাথে জিপ করা ও আপলোড করা হবে।
যদিও এটি খুব সাধারণ পরিস্থিতি নয়, তবে মনে রাখবেন যে আপনি ইন্টার্নালি কোনও পাবলিক NPM রিপোজিটরি মিরর করলে, আপনার ডিপ্লয়মেন্ট ব্যর্থ হবে
যদি আপনার ডিপ্লয়মেন্ট বান্ডেলে .npmrc বা package-lock.json ফাইল থাকে যা আপনার
প্রাইভেট মিররের দিকে পয়েন্ট করে। এই ক্ষেত্রে, আপনি যে প্রক্সি বান্ডেলটি ডেপ্লয় করতে চান, সেটি থেকে .npmrc বা package-lock.json
বাদ দিতে ভুলবেন না।
প্রাইভেট NPM রিপোজিটরি ব্যবহার করে ডেপ্লয় করা
ব্যক্তিগত NPM রিপোজিটরি থেকে প্রদান করা মডিউল ব্যবহার করতে, এইসব ধাপ অনুসরণ করুন:
- npm-এ লগ-ইন করুন:
npm login
- npm যাচাইকরণ টোকেন পান:
- আপনার .npmrc লোকেট করুন (~/.npmrc-এ থাকতে হবে)।
- আপনার .npmrc-এ, লাইনের শেষে এই ধরনের টোকেনটি নোট করুন:
//registry.npmjs.org/:_authToken=**** - অথবা
npm token <list | create | revoke>কমান্ড ব্যবহার করে কোনও তালিকা তৈরি করুন, অথবা কোনও অনুমোদিত টোকেন বাতিল করুন। আরও বিবরণের জন্য npm-token ডকুমেন্টেশন দেখুন। - নিচে বর্ণনা করা পদ্ধতি অনুযায়ী কী ভ্যালু ম্যাপ কনফিগারেশন পৃষ্ঠা অ্যাক্সেস করুন।
Edge
Edge UI ব্যবহার করে কী ভ্যালু ম্যাপ কনফিগারেশন পৃষ্ঠা অ্যাক্সেস করতে:
- apigee.com/edge লিঙ্কে গিয়ে সাইন-ইন করুন।
- বাঁদিকের নেভিগেশন বারে অ্যাডমিন > এনভায়রনমেন্ট > কী ভ্যালু ম্যাপ বিকল্প বেছে নিন।
ক্লাসিক Edge (প্রাইভেট ক্লাউড)
ক্লাসিক Edge UI ব্যবহার করে কী ভ্যালু ম্যাপ কনফিগারেশন পৃষ্ঠা অ্যাক্সেস করতে:
http://ms-ip:9000-এ সাইন-ইন করুন, যেখানে ms-ip হল ম্যানেজমেন্ট সার্ভার নোডের IP অ্যাড্রেস বা DNS নাম।- উপরের নেভিগেশন বার থেকে API > এনভায়রনমেন্ট কনফিগারেশন > কী ভ্যালু ম্যাপ বিকল্প বেছে নিন।
- + কী-ভ্যালু ম্যাপ বিকল্পে ক্লিক করুন।
- 'নতুন কী ভ্যালু ম্যাপ' ডায়ালগে, একটি নাম লিখুন এবং এনক্রিপ্টেড বিকল্প বেছে নিন।
- যোগ করুন বিকল্পে ক্লিক করুন।
- আপনি এইমাত্র তৈরি করেছেন এমন প্রতিটি KVM-এ নতুন এন্ট্রি হিসেবে আগে খুঁজে পাওয়া বা তৈরি করা auth টোকেন যোগ করুন।
- আপনার app.yaml ফাইলে, KVM এবং npm auth টোকেনের সাথে যুক্ত কী রেফারেন্স করে এমন একটি এন্ট্রি যোগ করুন। এটি দেখতে এইরকম হওয়া উচিত:
- সবচেয়ে উপরের লেভেলের নাম অ্যাট্রিবিউটটি তৈরি করা হবে এমন এনভায়রনমেন্ট ভেরিয়েবলের নামের সাথে সম্পর্কিত।
- valueRef -এর অধীনে থাকা নাম KVM-এর সাথে মিলে যায় যা আপনি আগে তৈরি করেছেন।
- কী অ্যাট্রিবিউটটি সেই কী-এর সাথে সম্পর্কিত যা KVM-এ আপনার যোগ করা npm টোকেনের সাথে ম্যাপ করে।
- আপনার package.json ফাইলের মতো একই ডিরেক্টরিতে একটি .npmrc ফাইল তৈরি করুন। এই
ফাইলটি দেখতে এই ধরনের হওয়া উচিত:
অথবা আপনি//registry.npmjs.org/:_authToken=${NPM_TOKEN}registry.npmjs.orgব্যবহার না করলে, .npmrc ফাইলে স্কোপ সেট করতে পারেন এই ধরনের একটি লাইন যোগ করে@myscope:registry=https://mycustomregistry.example.orgএছাড়াও, npmrc ডকুমেন্টেশন দেখুন। - অন্তর্ভুক্ত .npmrc ফাইল ও app.yaml ফাইল সহ আপনার Node.js প্রক্সি আপলোড বা আপডেট করুন।
- আপনার নতুন বা আপডেট করা প্রক্সি যেন কাঙ্ক্ষিত প্রাইভেট রিপোজিটরি মডিউলের সাথে কাজ করে তা নিশ্চিত করুন।
- প্রক্সি ডেপ্লয় না হলে, বিল্ড লগ চেক করে দেখুন যে এটি প্রাইভেট npm মডিউল ইনস্টল করতে ব্যর্থ হয়েছে কিনা। যদি তাই হয়:
- 'ডেভেলপ' ট্যাবের মধ্যে, .npmrc উপস্থিত আছে কিনা তা নিশ্চিত করুন।
- আপনার টোকেন সঠিক আছে কিনা তা নিশ্চিত করুন (kvm-এ টোকেন রেখে মডিউল লোকালি ইনস্টল করার চেষ্টা করুন)।
- আপনি কাস্টম স্কোপ ব্যবহার করলে, সেটি সেট করা আছে কিনা তা নিশ্চিত করুন।
env:
- name: NPM_TOKEN
valueRef:
name: npm_store
key: private_tokenযেখানে:
বান্ডেল করা নির্ভরতার জন্য NPM ভার্সন নির্দিষ্ট করা
হোস্ট করা টার্গেট এনভায়রনমেন্টে বান্ডেল করা ডিপেন্ডেন্সি ইনস্টল করার জন্য ডিফল্ট হিসেবে NPM v4 ব্যবহার করা হয়।
তবে, আপনি যদি অন্য কোনও NPM ভার্সন ব্যবহার করতে চান, তাহলে NPM_VERSION
এনভায়রনমেন্ট ভেরিয়েবলে তা উল্লেখ করতে পারেন। আপনি অ্যাপ্লিকেশনের ম্যানিফেস্ট ফাইলে এই ভেরিয়েবল সেট করতে পারবেন। বিবরণের জন্য মেনিফেস্ট ফাইলের এলিমেন্ট দেখুন।
আপনি বান্ডেল করা ডিপেন্ডেন্সি ব্যবহার করলে এবং NPM_VERSION নির্দিষ্ট না করলে, Hosted Targets
ডিফল্ট হিসেবে NPM v4 ব্যবহার করে। আপনি বান্ডেল করা ডিপেন্ডেন্সি ব্যবহার না করলে, আপনার নির্দিষ্ট করা Node.js রানটাইমে অন্তর্ভুক্ত
NPM-এর ভার্সন ব্যবহার করা হয়।
বান্ডেল করা ডিপেন্ডেন্সি সংক্রান্ত উদাহরণ
হোস্টেড টার্গেটের সাথে বান্ডেল করা ডিপেন্ডেন্সি ফিচার দেখানোর জন্য একটি উদাহরণ দেখতে, কাস্টম মডিউল ব্যবহার করে কীভাবে হোস্টেড ফাংশন সহ Node.js অ্যাপ্লিকেশন তৈরি করতে হয় দেখুন।হেলথ চেক এন্ডপয়েন্ট যোগ করা
আপনার Node.js অ্যাপ্লিকেশনের জন্য হেলথ চেক এন্ডপয়েন্ট প্রয়োগ করার বিকল্প আপনার কাছে আছে। আপনার Node.js অ্যাপ্লিকেশন চালু হওয়ার পরে, সেটি কন্টেনারে চলছে কিনা তা চেক করার জন্য Apigee এই এন্ডপয়েন্ট ব্যবহার করে।
সাধারণত, Apigee যে এন্ডপয়েন্ট আশা করে সেটি হল /health। আপনি ডিফল্ট
এন্ডপয়েন্ট পরিবর্তন করতে পারবেন, এর জন্য
HOSTED_TARGET_HEALTH_CHECK_PATH নামের এনভায়রনমেন্ট ভেরিয়েবলে এন্ডপয়েন্ট নির্দিষ্ট করতে হবে। আপনি এই ভেরিয়েবলটি অ্যাপ্লিকেশনের ম্যানিফেস্ট
ফাইলে সেট করতে পারবেন। বিবরণের জন্য মেনিফেস্ট ফাইলের এলিমেন্ট দেখুন।
হেলথ চেক এন্ডপয়েন্ট প্রয়োগ করার প্রয়োজন নেই। তবে, আপনি যদি হেলথ চেক এন্ডপয়েন্ট প্রয়োগ করেন, তাহলে নিম্নলিখিত বিষয়গুলি মনে রাখবেন:
- Apigee এন্ডপয়েন্টে পৌঁছানোর সময় আপনার অ্যাপ্লিকেশন বন্ধ হয়ে গেলে, অ্যাপ্লিকেশনটি প্রত্যাশিতভাবে চালু হবে না।
- আপনার এন্ডপয়েন্ট 404 Not Found HTTP স্ট্যাটাস দেখালে কোনও সমস্যা নেই। আপনার অ্যাপ্লিকেশন চলছে কিনা তা চেক করার জন্য শুধুমাত্র
/healthবাHOSTED_TARGET_HEALTH_CHECK_PATHব্যবহার করা হয়। প্রকৃত উত্তরটি উপেক্ষা করা হয়।
NPM ক্যাশের লোকেশন পরিবর্তন করা
Node.js-এর নতুন ভার্সন NPM-এর এমন একটি ভার্সন ব্যবহার করে যা NPM ক্যাশের জন্য /root/.npm ব্যবহার করে।
এই লোকেশন হোস্ট করা টার্গেটের জন্য সমস্যা তৈরি করে, কারণ সেই ডিরেক্টরি লোকেশন হল রিড-অনলি
যেহেতু হোস্ট করা টার্গেট রানটাইম tmpfs ফাইলসিস্টেম ব্যবহার করে যেখানে শুধুমাত্র /tmp লেখা যায়।
এই সমস্যার সমাধান করতে, আপনি npm_config_cache এনভায়রনমেন্ট ভেরিয়েবলকে
আপনার অ্যাপ্লিকেশনের
app.yamlফাইলে (ম্যানিফেস্ট ফাইল)
/tmp-এর মধ্যে থাকা কোনও ডিরেক্টরিতে সেট করতে পারেন। যেমন:
runtime: node
application: my-express-app
env:
- name: npm_config_cache
value: /tmp/.npm
- name: NODE_ENV
value: production
- name: LOG_LEVEL
value: 3
NPM ছাড়াই আপনার অ্যাপ্লিকেশন চালানো
ডিফল্ট হিসেবে, Hosted Targets আপনার Hosted Target অ্যাপ্লিকেশন চালানোর জন্য npm start ব্যবহার করে। কিন্তু
আগের টাস্কে আমরা NPM ব্যবহার করা সংক্রান্ত একটি সমস্যা নিয়ে আলোচনা করেছি, কারণ নতুন ভার্সনগুলি NPM ক্যাশের জন্য
/root/.npm ব্যবহার করার চেষ্টা করবে, যা লেখা যায় না এবং এর ফলে আপনার হোস্ট করা টার্গেট
স্টার্ট করা যায় না। আগের টাস্কটি এই সমস্যার সমাধান করতে পারলেও, আরেকটি বিকল্প হল
NPM ছাড়াই আপনার অ্যাপ্লিকেশন রান করানো। এটি করতে, আপনি command এবং
args ভ্যালু আপনার অ্যাপ্লিকেশনের
app.yamlফাইলে (ম্যানিফেস্ট ফাইল)
ব্যবহার করতে পারেন যাতে node index.js ব্যবহার করে আপনার হোস্ট করা টার্গেট সরাসরি রান করানো যায়। যেমন:
runtime: node
application: my-express-app
command: node
args:
- index.js
env:
- name: NODE_ENV
value: production
- name: LOG_LEVEL
value: 3
node index.js হল একটি
উদাহরণ।