আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান । তথ্য
এজ মাইক্রোগেটওয়ে v. 3.2.x
এজ মাইক্রোগেটওয়ে কীভাবে পরিচালনা এবং কনফিগার করতে হয় এই বিষয়টি আলোচনা করে।
আপনার ইন্টারনেট সংযোগ থাকলে এজ মাইক্রোগেটওয়ে আপগ্রেড করা হচ্ছে
এই বিভাগটি ব্যাখ্যা করে কিভাবে এজ মাইক্রোগেটওয়ের একটি বিদ্যমান ইনস্টলেশন আপগ্রেড করতে হয়। আপনি যদি ইন্টারনেট সংযোগ ছাড়াই কাজ করেন, দেখুন আমি কি ইন্টারনেট সংযোগ ছাড়া এজ মাইক্রোগেটওয়ে ইনস্টল করতে পারি? .
Apigee আপনাকে আপনার উৎপাদন পরিবেশ আপগ্রেড করার আগে নতুন সংস্করণের সাথে আপনার বিদ্যমান কনফিগারেশন পরীক্ষা করার পরামর্শ দেয়।
- এজ মাইক্রোগেটওয়ের সর্বশেষ সংস্করণে আপগ্রেড করতে নিম্নলিখিত
npm
কমান্ডটি চালান:npm upgrade edgemicro -g
এজ মাইক্রোগেটওয়ের একটি নির্দিষ্ট সংস্করণ ইনস্টল করতে, আপনাকে ইনস্টল কমান্ডে সংস্করণ নম্বর উল্লেখ করতে হবে। উদাহরণস্বরূপ, 3.2.3 সংস্করণে ইনস্টল করতে, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
npm install edgemicro@3.2.3 -g
- সংস্করণ নম্বর পরীক্ষা করুন. উদাহরণস্বরূপ, যদি আপনি সংস্করণ 3.2.3 ইনস্টল করেন:
edgemicro --version current nodejs version is v12.5.0 current edgemicro version is 3.2.3
- অবশেষে, edgemicro-auth প্রক্সির সর্বশেষ সংস্করণে আপগ্রেড করুন:
edgemicro upgradeauth -o $ORG -e $ENV -u $USERNAME
কনফিগারেশন পরিবর্তন করা
আপনার যে কনফিগারেশন ফাইলগুলি সম্পর্কে জানতে হবে তার মধ্যে রয়েছে:
- ডিফল্ট সিস্টেম কনফিগারেশন ফাইল
- একটি নতুন আরম্ভকৃত এজ মাইক্রোগেটওয়ে উদাহরণের জন্য ডিফল্ট কনফিগার ফাইল
- চলমান উদাহরণের জন্য ডায়নামিক কনফিগারেশন ফাইল
এই বিভাগে এই ফাইলগুলি এবং সেগুলি পরিবর্তন করার বিষয়ে আপনার যা জানা দরকার তা নিয়ে আলোচনা করা হয়েছে৷
ডিফল্ট সিস্টেম কনফিগারেশন ফাইল
আপনি যখন এজ মাইক্রোগেটওয়ে ইনস্টল করেন, তখন একটি ডিফল্ট সিস্টেম কনফিগারেশন ফাইল এখানে রাখা হয়:
prefix/lib/node_modules/edgemicro/config/default.yaml
যেখানে prefix হল npm
উপসর্গ ডিরেক্টরি। আপনি এই ডিরেক্টরিটি সনাক্ত করতে না পারলে এজ মাইক্রোগেটওয়ে কোথায় ইনস্টল করা আছে তা দেখুন।
আপনি যদি সিস্টেম কনফিগার ফাইলটি পরিবর্তন করেন তবে আপনাকে অবশ্যই এজ মাইক্রোগেটওয়ে পুনরায় চালু করতে হবে, পুনরায় কনফিগার করতে হবে এবং পুনরায় চালু করতে হবে:
edgemicro initedgemicro configure [params]
edgemicro start [params]
নতুন আরম্ভ করা এজ মাইক্রোগেটওয়ে দৃষ্টান্তগুলির জন্য ডিফল্ট কনফিগার ফাইল
আপনি যখন edgemicro init
চালান, তখন সিস্টেম কনফিগার ফাইল (উপরে বর্ণিত), default.yaml
, ~/.edgemicro
ডিরেক্টরিতে স্থাপন করা হয়।
আপনি যদি ~/.edgemicro
এ কনফিগার ফাইলটি পরিবর্তন করেন, তাহলে আপনাকে অবশ্যই এজ মাইক্রোগেটওয়ে পুনরায় কনফিগার করে পুনরায় চালু করতে হবে:
edgemicro stopedgemicro configure [params]
edgemicro start [params]
চলমান উদাহরণের জন্য ডায়নামিক কনফিগারেশন ফাইল
আপনি যখন edgemicro configure [params]
চালান, তখন ~/.edgemicro
এ একটি ডায়নামিক কনফিগারেশন ফাইল তৈরি হয়। এই প্যাটার্ন অনুসারে ফাইলটির নামকরণ করা হয়েছে: org - env -config.yaml
, যেখানে org এবং env হল আপনার Apigee Edge প্রতিষ্ঠান এবং পরিবেশের নাম। আপনি কনফিগারেশন পরিবর্তন করতে এই ফাইলটি ব্যবহার করতে পারেন, এবং তারপর শূন্য-ডাউনটাইম দিয়ে পুনরায় লোড করতে পারেন। উদাহরণস্বরূপ, যদি আপনি একটি প্লাগইন যোগ করেন এবং কনফিগার করেন, তাহলে নিচের ব্যাখ্যা অনুযায়ী কোনো ডাউনটাইম খরচ না করে আপনি কনফিগারেশনটি পুনরায় লোড করতে পারেন।
যদি এজ মাইক্রোগেটওয়ে চলছে (শূন্য-ডাউনটাইম বিকল্প):
- এজ মাইক্রোগেটওয়ে কনফিগারেশনটি পুনরায় লোড করুন:
edgemicro reload -o $ORG -e $ENV -k $KEY -s $SECRET
কোথায়:
- $ORG হল আপনার এজ প্রতিষ্ঠানের নাম (আপনাকে অবশ্যই একজন প্রতিষ্ঠানের প্রশাসক হতে হবে)।
- $ENV হল আপনার প্রতিষ্ঠানের একটি পরিবেশ (যেমন "পরীক্ষা" বা "প্রোড")।
- $KEY হল পূর্বে কনফিগার কমান্ড দ্বারা ফেরত দেওয়া কী।
- $SECRET হল সেই কী যা পূর্বে কনফিগার কমান্ড দ্বারা ফেরত দেওয়া হয়েছিল।
যেমন
edgemicro reload -o docs -e test -k 701e70ee718ce6dc188...78b6181d000723 \ -s 05c14356e42ed1...4e34ab0cc824
যদি এজ মাইক্রোগেটওয়ে বন্ধ করা হয়:
- এজ মাইক্রোগেটওয়ে পুনরায় চালু করুন:
edgemicro start -o $ORG -e $ENV -k $KEY -s $SECRET
কোথায়:
- $ORG হল আপনার এজ প্রতিষ্ঠানের নাম (আপনাকে অবশ্যই একজন প্রতিষ্ঠানের প্রশাসক হতে হবে)।
- $ENV হল আপনার প্রতিষ্ঠানের একটি পরিবেশ (যেমন "পরীক্ষা" বা "প্রোড")।
- $KEY হল পূর্বে কনফিগার কমান্ড দ্বারা ফেরত দেওয়া কী।
- $SECRET হল সেই কী যা পূর্বে কনফিগার কমান্ড দ্বারা ফেরত দেওয়া হয়েছিল।
যেমন:
edgemicro start -o docs -e test -k 701e70ee718ce...b6181d000723 \ -s 05c1435...e34ab0cc824
এখানে একটি উদাহরণ কনফিগার ফাইল। কনফিগারেশন ফাইল সেটিংস সম্পর্কে বিশদ বিবরণের জন্য, এজ মাইক্রোগেটওয়ে কনফিগারেশন রেফারেন্স দেখুন।
edge_config: bootstrap: >- https://edgemicroservices-us-east-1.apigee.net/edgemicro/bootstrap/organization/docs/environment/test jwt_public_key: 'https://docs-test.apigee.net/edgemicro-auth/publicKey' managementUri: 'https://api.enterprise.apigee.com' vaultName: microgateway authUri: 'https://%s-%s.apigee.net/edgemicro-auth' baseUri: >- https://edgemicroservices.apigee.net/edgemicro/%s/organization/%s/environment/%s bootstrapMessage: Please copy the following property to the edge micro agent config keySecretMessage: The following credentials are required to start edge micro products: 'https://docs-test.apigee.net/edgemicro-auth/products' edgemicro: port: 8000 max_connections: 1000 max_connections_hard: 5000 config_change_poll_interval: 600 logging: level: error dir: /var/tmp stats_log_interval: 60 rotate_interval: 24 plugins: sequence: - oauth headers: x-forwarded-for: true x-forwarded-host: true x-request-id: true x-response-time: true via: true oauth: allowNoAuthorization: false allowInvalidAuthorization: false verify_api_key_url: 'https://docs-test.apigee.net/edgemicro-auth/verifyApiKey' analytics: uri: >- https://edgemicroservices-us-east-1.apigee.net/edgemicro/axpublisher/organization/docs/environment/test
পরিবেশের ভেরিয়েবল সেট করা
কমান্ড-লাইন ইন্টারফেস কমান্ডগুলি যেগুলির জন্য আপনার এজ সংস্থা এবং পরিবেশের জন্য মান প্রয়োজন এবং এজ মাইক্রোগেটওয়ে শুরু করার জন্য প্রয়োজনীয় কী এবং গোপনীয়তাগুলি এই পরিবেশ ভেরিয়েবলগুলিতে সংরক্ষণ করা যেতে পারে:
-
EDGEMICRO_ORG
-
EDGEMICRO_ENV
-
EDGEMICRO_KEY
-
EDGEMICRO_SECRET
এই ভেরিয়েবল সেট করা ঐচ্ছিক. আপনি যদি সেগুলি সেট করেন, আপনি এজ মাইক্রোগেটওয়ে কনফিগার করতে এবং শুরু করতে কমান্ড-লাইন ইন্টারফেস (CLI) ব্যবহার করার সময় আপনাকে তাদের মানগুলি নির্দিষ্ট করতে হবে না।
এজ মাইক্রোগেটওয়ে সার্ভারে SSL কনফিগার করা হচ্ছে
Apigee Edge Microgateway-এ TLS কনফিগার করার বিষয়ে জানতে নিম্নলিখিত ভিডিওগুলি দেখুন:
ভিডিও | বর্ণনা |
---|---|
1-ওয়ে নর্থবাউন্ড TLS কনফিগার করুন | Apigee Edge Microgateway-এ TLS কনফিগার করার বিষয়ে জানুন। এই ভিডিওটি TLS এবং এর গুরুত্ব সম্পর্কে একটি সংক্ষিপ্ত বিবরণ প্রদান করে, এজ মাইক্রোগেটওয়েতে TLS এর পরিচয় দেয় এবং প্রদর্শন করে কিভাবে উত্তরমুখী ওয়ান-ওয়ে TLS কনফিগার করতে হয়। |
2-ওয়ে নর্থবাউন্ড TLS কনফিগার করুন | Apigee Edge Microgateway-এ TLS কনফিগার করার জন্য এটি দ্বিতীয় ভিডিও। এই ভিডিওটি ব্যাখ্যা করে কিভাবে উত্তরমুখী 2-ওয়ে TLS কনফিগার করতে হয়। |
1-ওয়ে এবং 2-ওয়ে সাউথবাউন্ড TLS কনফিগার করুন | Apigee Edge Microgateway-এ TLS কনফিগার করার এই তৃতীয় ভিডিওটি ব্যাখ্যা করে কিভাবে সাউথবাউন্ড 1-ওয়ে এবং 2-ওয়ে TLS কনফিগার করতে হয়। |
আপনি SSL ব্যবহার করতে Microgateway সার্ভার কনফিগার করতে পারেন। উদাহরণস্বরূপ, SSL কনফিগার করা হলে, আপনি এজ মাইক্রোগেটওয়ের মাধ্যমে "https" প্রোটোকল সহ API কল করতে পারেন, যেমন:
https://localhost:8000/myapi
মাইক্রোগেটওয়ে সার্ভারে SSL কনফিগার করতে, এই পদক্ষেপগুলি অনুসরণ করুন:
- Openssl ইউটিলিটি বা আপনার পছন্দের যে কোনও পদ্ধতি ব্যবহার করে একটি SSL শংসাপত্র এবং কী তৈরি করুন বা প্রাপ্ত করুন।
- এজ মাইক্রোগেটওয়ে কনফিগারেশন ফাইলে
edgemicro:ssl
অ্যাট্রিবিউট যোগ করুন। বিকল্পগুলির একটি সম্পূর্ণ তালিকার জন্য, নীচের টেবিলটি দেখুন। যেমন:
edgemicro: ssl: key: <absolute path to the SSL key file> cert: <absolute path to the SSL cert file> passphrase: admin123 #option added in v2.2.2 rejectUnauthorized: true #option added in v2.2.2 requestCert: true
- এজ মাইক্রোগেটওয়ে পুনরায় চালু করুন। আপনি কোন কনফিগারেশন ফাইলটি সম্পাদনা করেছেন তার উপর নির্ভর করে কনফিগারেশন পরিবর্তন করার ক্ষেত্রে বর্ণিত ধাপগুলি অনুসরণ করুন: ডিফল্ট ফাইল বা রানটাইম কনফিগারেশন ফাইল।
এখানে SSL কনফিগার করা কনফিগার ফাইলের edgemicro
বিভাগের একটি উদাহরণ রয়েছে:
edgemicro: port: 8000 max_connections: 1000 max_connections_hard: 5000 logging: level: error dir: /var/tmp stats_log_interval: 60 rotate_interval: 24 plugins: sequence: - oauth ssl: key: /MyHome/SSL/em-ssl-keys/server.key cert: /MyHome/SSL/em-ssl-keys/server.crt passphrase: admin123 #option added in v2.2.2 rejectUnauthorized: true #option added in v2.2.2
এখানে সমর্থিত সার্ভার বিকল্পগুলির একটি তালিকা রয়েছে:
অপশন | বর্ণনা |
---|---|
key | একটি ca.key ফাইলের পাথ (PEM ফরম্যাটে)। |
cert | একটি ca.cert ফাইলের পাথ (PEM ফর্ম্যাটে)। |
pfx | PFX বিন্যাসে ক্লায়েন্টের ব্যক্তিগত কী, শংসাপত্র এবং CA শংসাপত্র সহ একটি pfx ফাইলের পথ। |
passphrase | ব্যক্তিগত কী বা PFX-এর জন্য পাসফ্রেজ ধারণকারী একটি স্ট্রিং। |
ca | PEM বিন্যাসে বিশ্বস্ত শংসাপত্রের একটি তালিকা ধারণকারী ফাইলের পাথ৷ |
ciphers | একটি ":" দ্বারা পৃথক করা সাইফার ব্যবহার করার জন্য একটি স্ট্রিং বর্ণনা করে। |
rejectUnauthorized | সত্য হলে, সরবরাহকৃত CA-এর তালিকার বিরুদ্ধে সার্ভার শংসাপত্র যাচাই করা হয়। যাচাইকরণ ব্যর্থ হলে, একটি ত্রুটি ফেরত দেওয়া হয়। |
secureProtocol | ব্যবহার করার জন্য SSL পদ্ধতি। উদাহরণ স্বরূপ, SSL কে বাধ্য করার জন্য SSLv3_method সংস্করণ 3। |
servername | SNI (সার্ভার নেম ইঙ্গিত) TLS এক্সটেনশনের সার্ভারের নাম। |
requestCert | 2-ওয়ে SSL এর জন্য সত্য; 1-ওয়ে SSL-এর জন্য মিথ্যা |
ক্লায়েন্ট SSL/TLS বিকল্প ব্যবহার করে
টার্গেট এন্ডপয়েন্টের সাথে সংযোগ করার সময় আপনি এজ মাইক্রোগেটওয়েকে একটি TLS বা SSL ক্লায়েন্ট হিসাবে কনফিগার করতে পারেন। মাইক্রোগেটওয়ে কনফিগারেশন ফাইলে, SSL/TLS বিকল্প সেট করতে লক্ষ্য উপাদান ব্যবহার করুন। মনে রাখবেন যে আপনি একাধিক নির্দিষ্ট লক্ষ্য নির্দিষ্ট করতে পারেন। একটি মাল্টি-টার্গেট উদাহরণ নীচে অন্তর্ভুক্ত করা হয়েছে.
এই উদাহরণটি সেটিংস প্রদান করে যা সমস্ত হোস্টে প্রয়োগ করা হবে:
edgemicro: ... targets: ssl: client: key: /Users/jdoe/nodecellar/twowayssl/ssl/client.key cert: /Users/jdoe/nodecellar/twowayssl/ssl/ca.crt passphrase: admin123 rejectUnauthorized: true
এই উদাহরণে, সেটিংস শুধুমাত্র নির্দিষ্ট হোস্টে প্রয়োগ করা হয়:
edgemicro: ... targets: - host: 'myserver.example.com' ssl: client: key: /Users/myname/twowayssl/ssl/client.key cert: /Users/myname/twowayssl/ssl/ca.crt passphrase: admin123 rejectUnauthorized: true
এখানে TLS এর জন্য একটি উদাহরণ রয়েছে:
edgemicro: ... targets: - host: 'myserver.example.com' tls: client: pfx: /Users/myname/twowayssl/ssl/client.pfx passphrase: admin123 rejectUnauthorized: true
যে ক্ষেত্রে আপনি একাধিক নির্দিষ্ট লক্ষ্যে TLS/SSL সেটিংস প্রয়োগ করতে চান, আপনাকে অবশ্যই কনফিগারেশনের প্রথম হোস্টটিকে "খালি" হিসাবে নির্দিষ্ট করতে হবে, যা সর্বজনীন অনুরোধগুলিকে সক্ষম করে এবং তারপরে যে কোনও ক্রমে নির্দিষ্ট হোস্টগুলিকে নির্দিষ্ট করে৷ এই উদাহরণে, সেটিংস একাধিক নির্দিষ্ট হোস্টে প্রয়োগ করা হয়:
targets: - host: ## Note that this value must be "empty" ssl: client: key: /Users/myname/twowayssl/ssl/client.key cert: /Users/myname/twowayssl/ssl/ca.crt passphrase: admin123 rejectUnauthorized: true - host: 'myserver1.example.com' ssl: client: key: /Users/myname/twowayssl/ssl/client.key cert: /Users/myname/twowayssl/ssl/ca.crt rejectUnauthorized: true - host: 'myserver2.example.com' ssl: client: key: /Users/myname/twowayssl/ssl/client.key cert: /Users/myname/twowayssl/ssl/ca.crt rejectUnauthorized: true
এখানে সমর্থিত ক্লায়েন্ট বিকল্পগুলির একটি তালিকা রয়েছে:
অপশন | বর্ণনা |
---|---|
pfx | PFX বিন্যাসে ক্লায়েন্টের ব্যক্তিগত কী, শংসাপত্র এবং CA শংসাপত্র সহ একটি pfx ফাইলের পথ। |
key | একটি ca.key ফাইলের পাথ (PEM ফরম্যাটে)। |
passphrase | ব্যক্তিগত কী বা PFX-এর জন্য পাসফ্রেজ ধারণকারী একটি স্ট্রিং। |
cert | একটি ca.cert ফাইলের পাথ (PEM ফর্ম্যাটে)। |
ca | PEM বিন্যাসে বিশ্বস্ত শংসাপত্রের একটি তালিকা ধারণকারী ফাইলের পাথ৷ |
ciphers | একটি ":" দ্বারা পৃথক করা সাইফার ব্যবহার করার জন্য একটি স্ট্রিং বর্ণনা করে। |
rejectUnauthorized | সত্য হলে, সরবরাহকৃত CA-এর তালিকার বিরুদ্ধে সার্ভার শংসাপত্র যাচাই করা হয়। যাচাইকরণ ব্যর্থ হলে, একটি ত্রুটি ফেরত দেওয়া হয়। |
secureProtocol | ব্যবহার করার জন্য SSL পদ্ধতি। উদাহরণ স্বরূপ, SSL কে বাধ্য করার জন্য SSLv3_method সংস্করণ 3। |
servername | SNI (সার্ভার নেম ইঙ্গিত) TLS এক্সটেনশনের সার্ভারের নাম। |
edgemicro-auth প্রক্সি কাস্টমাইজ করা হচ্ছে
ডিফল্টরূপে, এজ মাইক্রোগেটওয়ে OAuth2 প্রমাণীকরণের জন্য Apigee Edge-এ স্থাপন করা একটি প্রক্সি ব্যবহার করে। আপনি যখন প্রাথমিকভাবে edgemicro configure
চালান তখন এই প্রক্সিটি স্থাপন করা হয়। আপনি JSON ওয়েব টোকেন (JWT) তে কাস্টম দাবির জন্য সমর্থন যোগ করতে, টোকেনের মেয়াদ শেষ করতে এবং রিফ্রেশ টোকেন তৈরি করতে এই প্রক্সিটির ডিফল্ট কনফিগারেশন পরিবর্তন করতে পারেন। বিশদ বিবরণের জন্য, গিটহাবের এজমাইক্রো-প্রমাণ পৃষ্ঠাটি দেখুন।
একটি কাস্টম প্রমাণীকরণ পরিষেবা ব্যবহার করে৷
ডিফল্টরূপে, এজ মাইক্রোগেটওয়ে OAuth2 প্রমাণীকরণের জন্য Apigee Edge-এ স্থাপন করা একটি প্রক্সি ব্যবহার করে। আপনি যখন প্রাথমিকভাবে edgemicro configure
চালান তখন এই প্রক্সিটি স্থাপন করা হয়। ডিফল্টরূপে, এই প্রক্সির URL এজ মাইক্রোগেটওয়ে কনফিগারেশন ফাইলে নিম্নরূপ নির্দিষ্ট করা হয়েছে:
authUri: https://myorg-myenv.apigee.net/edgemicro-auth
আপনি যদি প্রমাণীকরণ পরিচালনা করতে আপনার নিজস্ব কাস্টম পরিষেবা ব্যবহার করতে চান তবে আপনার পরিষেবার দিকে নির্দেশ করতে কনফিগার ফাইলে authUri
মান পরিবর্তন করুন। উদাহরণস্বরূপ, আপনার একটি পরিষেবা থাকতে পারে যা পরিচয় যাচাই করতে LDAP ব্যবহার করে।
লগ ফাইল পরিচালনা
এজ মাইক্রোগেটওয়ে প্রতিটি অনুরোধ এবং প্রতিক্রিয়া সম্পর্কে তথ্য লগ করে। লগ ফাইলগুলি ডিবাগিং এবং সমস্যা সমাধানের জন্য দরকারী তথ্য প্রদান করে।
যেখানে লগ ফাইল সংরক্ষণ করা হয়
ডিফল্টরূপে, লগ ফাইলগুলি /var/tmp
এ সংরক্ষণ করা হয়।
ডিফল্ট লগ ফাইল ডিরেক্টরি পরিবর্তন কিভাবে
যে ডিরেক্টরিতে লগ ফাইলগুলি সংরক্ষণ করা হয় সেটি এজ মাইক্রোগেটওয়ে কনফিগারেশন ফাইলে নির্দিষ্ট করা আছে। কনফিগারেশন পরিবর্তন করাও দেখুন।
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 rotate_interval: 24
একটি ভিন্ন লগ ফাইল ডিরেক্টরি নির্দিষ্ট করতে dir মান পরিবর্তন করুন।
কনসোলে লগ পাঠান
আপনি লগিং কনফিগার করতে পারেন যাতে লগ তথ্য একটি লগ ফাইলের পরিবর্তে স্ট্যান্ডার্ড আউটপুটে পাঠানো হয়। নিম্নরূপ to_console
পতাকা সত্যে সেট করুন:
edgemicro: logging: to_console: true
এই সেটিং সহ, লগগুলি স্ট্যান্ডার্ড আউটে পাঠানো হবে। বর্তমানে, আপনি stdout এবং একটি লগ ফাইল উভয়েই লগ পাঠাতে পারবেন না।
লগিং লেভেল কিভাবে সেট করবেন
আপনি edgemicro
কনফিগারেশনে ব্যবহার করার জন্য লগ স্তর নির্দিষ্ট করুন। লগ লেভেলের সম্পূর্ণ তালিকা এবং তাদের বর্ণনার জন্য, এজমাইক্রো অ্যাট্রিবিউটস দেখুন।
উদাহরণস্বরূপ, নিম্নলিখিত কনফিগারেশনটি debug
জন্য লগিং স্তর সেট করে:
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: debug dir: /var/tmp stats_log_interval: 60 rotate_interval: 24
লগের ব্যবধান কিভাবে পরিবর্তন করবেন
আপনি এজ মাইক্রোগেটওয়ে কনফিগার ফাইলে এই ব্যবধানগুলি কনফিগার করতে পারেন। কনফিগারেশন পরিবর্তন করাও দেখুন।
কনফিগারযোগ্য বৈশিষ্ট্যগুলি হল:
- stats_log_interval : (ডিফল্ট: 60) ব্যবধান, সেকেন্ডে, যখন পরিসংখ্যান রেকর্ড API লগ ফাইলে লেখা হয়।
- rotate_interval : (ডিফল্ট: 24) ব্যবধান, ঘন্টার মধ্যে, যখন লগ ফাইলগুলি ঘোরানো হয়। যেমন:
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 rotate_interval: 24
কীভাবে কঠোর লগ ফাইলের অনুমতি শিথিল করবেন
ডিফল্টরূপে, এজ মাইক্রোগেটওয়ে অ্যাপ্লিকেশন লগ ফাইল তৈরি করে ( api-log.log
) ফাইল অনুমতি স্তর 0600 এ সেট করে। এই অনুমতি স্তর বহিরাগত অ্যাপ্লিকেশন বা ব্যবহারকারীদের লগ ফাইল পড়ার অনুমতি দেয় না। এই কঠোর অনুমতি স্তরটি শিথিল করতে, logging:disableStrictLogFile
true
সেট করুন। যখন এই অ্যাট্রিবিউটটি true
হয়, তখন লগ ফাইলটি 0755 সেট করা ফাইলের অনুমতি দিয়ে তৈরি করা হয়। যদি false
বা যদি অ্যাট্রিবিউট দেওয়া না হয়, অনুমতি ডিফল্ট 0600-এ থাকে।
v3.2.3 এ যোগ করা হয়েছে।
যেমন:
edgemicro: logging: disableStrictLogFile: true
ভাল লগ ফাইল রক্ষণাবেক্ষণ অনুশীলন
লগ ফাইল ডেটা সময়ের সাথে জমা হওয়ার সাথে সাথে, Apigee সুপারিশ করে যে আপনি নিম্নলিখিত অনুশীলনগুলি গ্রহণ করুন:
- যেহেতু লগ ফাইলগুলি বেশ বড় হতে পারে, নিশ্চিত করুন যে লগ ফাইল ডিরেক্টরিতে পর্যাপ্ত স্থান রয়েছে। নিম্নলিখিত বিভাগগুলি দেখুন যেখানে লগ ফাইলগুলি সংরক্ষণ করা হয় এবং কীভাবে ডিফল্ট লগ ফাইল ডিরেক্টরি পরিবর্তন করতে হয় ।
- সপ্তাহে অন্তত একবার লগ ফাইলগুলিকে আলাদা আর্কাইভ ডিরেক্টরিতে মুছুন বা সরান৷
- যদি আপনার নীতি লগ মুছে ফেলা হয়, আপনি CLI কমান্ড
edgemicro log -c
ব্যবহার করতে পারেন পুরানো লগ অপসারণ (পরিষ্কার) করতে।
লগ ফাইল নামকরণ কনভেনশন
প্রতিটি এজ মাইক্রোগেটওয়ে ইনস্ট্যান্স একটি .log
এক্সটেনশন সহ একটি লগ ফাইল তৈরি করে। লগ ফাইলের নামকরণের নিয়ম নিম্নরূপ:
edgemicro- HOST_NAME - INSTANCE_ID -api.log
যেমন:
edgemicro-mymachine-local-MTQzNTgNDMxODAyMQ-api.log
লগ ফাইল বিষয়বস্তু সম্পর্কে
যোগ করা হয়েছে: v2.3.3
ডিফল্টরূপে, লগিং পরিষেবা ডাউনলোড করা প্রক্সি, পণ্যের JSON এবং JSON ওয়েব টোকেন (JWT) বাদ দেয়। আপনি যদি এই বস্তুগুলিকে কনসোলে আউটপুট করতে চান, আপনি এজ মাইক্রোগেটওয়ে শুরু করার সময় কমান্ড-লাইন ফ্ল্যাগ DEBUG=*
সেট করুন। যেমন:
DEBUG=* edgemicro start -o docs -e test -k abc123 -s xyz456
"api" লগ ফাইলের বিষয়বস্তু
"api" লগ ফাইলটিতে এজ মাইক্রোগেটওয়ের মাধ্যমে অনুরোধ এবং প্রতিক্রিয়া প্রবাহ সম্পর্কে বিস্তারিত তথ্য রয়েছে। "api" লগ ফাইলগুলির নাম এইরকম:
edgemicro-mymachine-local-MTQzNjIxOTk0NzY0Nw-api.log
এজ মাইক্রোগেটওয়েতে করা প্রতিটি অনুরোধের জন্য, "api" লগ ফাইলে চারটি ইভেন্ট ক্যাপচার করা হয়েছে:
- ক্লায়েন্ট থেকে ইনকামিং অনুরোধ
- টার্গেট করা বহির্গামী অনুরোধ
- লক্ষ্য থেকে ইনকামিং প্রতিক্রিয়া
- ক্লায়েন্ট বহির্গামী প্রতিক্রিয়া
লগ ফাইলগুলিকে আরও কমপ্যাক্ট করতে সাহায্য করার জন্য এই পৃথক এন্ট্রিগুলির প্রতিটি একটি সংক্ষিপ্ত স্বরলিপিতে উপস্থাপন করা হয়। এখানে চারটি ইভেন্টের প্রতিটির প্রতিনিধিত্ব করে চারটি নমুনা এন্ট্রি রয়েছে৷ লগ ফাইলে, এগুলি দেখতে এইরকম (লাইন নম্বরগুলি কেবল ডকে রেফারেন্সের জন্য, সেগুলি লগ ফাইলে উপস্থিত হয় না)।
(1) 1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0 (2) 1436403888665 info treq m=GET, u=/, h=127.0.0.18080, i=0 (3) 1436403888672 info tres s=200, d=7, i=0 (4) 1436403888676 info res s=200, d=11, i=0
আসুন এক এক করে সেগুলি দেখি:
1. ক্লায়েন্ট থেকে আগত অনুরোধের নমুনা:
1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0
- 1436403888651 - ইউনিক্স তারিখ স্ট্যাম্প
- তথ্য - লগিং স্তর। এই মানটি লেনদেনের প্রসঙ্গে এবং
edgemicro
কনফিগারেশনে সেট করা লগিং স্তরের উপর নির্ভর করে। লগিং লেভেল কিভাবে সেট করবেন তা দেখুন। পরিসংখ্যান রেকর্ডের জন্য, স্তরটিstats
সেট করা হয়েছে। পরিসংখ্যান রেকর্ডগুলিstats_log_interval
কনফিগারেশনের সাথে সেট করা একটি নিয়মিত বিরতিতে রিপোর্ট করা হয়। লগ ইন্টারভাল কিভাবে পরিবর্তন করবেন তাও দেখুন। - req - ইভেন্ট সনাক্ত করে। এই ক্ষেত্রে, ক্লায়েন্ট থেকে অনুরোধ.
- m - অনুরোধে ব্যবহৃত HTTP ক্রিয়া।
- u - বেসপাথ অনুসরণ করে URL এর অংশ।
- h - হোস্ট এবং পোর্ট নম্বর যেখানে এজ মাইক্রোগেটওয়ে শুনছে।
- r - দূরবর্তী হোস্ট এবং পোর্ট যেখানে ক্লায়েন্ট অনুরোধ উদ্ভূত হয়েছে।
- i - অনুরোধ আইডি। চারটি ইভেন্ট এন্ট্রি এই আইডি শেয়ার করবে। প্রতিটি অনুরোধ একটি অনন্য অনুরোধ আইডি বরাদ্দ করা হয়. রিকোয়েস্ট আইডির মাধ্যমে লগ রেকর্ডের সম্পর্ক টার্গেটের লেটেন্সি সম্পর্কে মূল্যবান অন্তর্দৃষ্টি দিতে পারে।
- d - এজ মাইক্রোগেটওয়ে অনুরোধটি পাওয়ার পর থেকে মিলিসেকেন্ডে সময়কাল। উপরের উদাহরণে, অনুরোধ 0 এর লক্ষ্যের প্রতিক্রিয়া 7 মিলিসেকেন্ড (লাইন 3) পরে গৃহীত হয়েছিল এবং অতিরিক্ত 4 মিলিসেকেন্ড (লাইন 4) পরে ক্লায়েন্টকে প্রতিক্রিয়া পাঠানো হয়েছিল। অন্য কথায়, মোট অনুরোধের বিলম্ব ছিল 11 মিলিসেকেন্ড, যার মধ্যে 7 মিলিসেকেন্ড টার্গেট এবং 4 মিলিসেকেন্ড এজ মাইক্রোগেটওয়ে নিজেই নিয়েছিল।
2. লক্ষ্যে করা বহির্গামী অনুরোধের নমুনা:
1436403888665 info treq m=GET, u=/, h=127.0.0.1:8080, i=0
- 1436403888651 - ইউনিক্স তারিখ স্ট্যাম্প
- তথ্য - লগিং স্তর। এই মানটি লেনদেনের প্রসঙ্গে এবং
edgemicro
কনফিগারেশনে সেট করা লগিং স্তরের উপর নির্ভর করে। লগিং লেভেল কিভাবে সেট করবেন তা দেখুন। পরিসংখ্যান রেকর্ডের জন্য, স্তরটিstats
সেট করা হয়েছে। পরিসংখ্যান রেকর্ডগুলিstats_log_interval
কনফিগারেশনের সাথে সেট করা একটি নিয়মিত বিরতিতে রিপোর্ট করা হয়। লগ ইন্টারভাল কিভাবে পরিবর্তন করবেন তাও দেখুন। - treq - ইভেন্ট সনাক্ত করে। এই ক্ষেত্রে, লক্ষ্য অনুরোধ.
- m - লক্ষ্য অনুরোধে ব্যবহৃত HTTP ক্রিয়া।
- u - বেসপাথ অনুসরণ করে URL এর অংশ।
- h - ব্যাকএন্ড টার্গেটের হোস্ট এবং পোর্ট নম্বর।
- i - লগ এন্ট্রির আইডি। চারটি ইভেন্ট এন্ট্রি এই আইডি শেয়ার করবে।
3. লক্ষ্য থেকে আগত প্রতিক্রিয়ার নমুনা
1436403888672 info tres s=200, d=7, i=0
1436403888651 - ইউনিক্স তারিখ স্ট্যাম্প
- তথ্য - লগিং স্তর। এই মানটি লেনদেনের প্রসঙ্গে এবং
edgemicro
কনফিগারেশনে সেট করা লগিং স্তরের উপর নির্ভর করে। লগিং লেভেল কিভাবে সেট করবেন তা দেখুন। পরিসংখ্যান রেকর্ডের জন্য, স্তরটিstats
সেট করা হয়েছে। পরিসংখ্যান রেকর্ডগুলিstats_log_interval
কনফিগারেশনের সাথে সেট করা একটি নিয়মিত বিরতিতে রিপোর্ট করা হয়। লগ ইন্টারভাল কিভাবে পরিবর্তন করবেন তাও দেখুন। - tres - ঘটনা চিহ্নিত করে। এই ক্ষেত্রে, লক্ষ্য প্রতিক্রিয়া.
- s - HTTP প্রতিক্রিয়া স্থিতি।
- d - মিলিসেকেন্ডে সময়কাল। টার্গেট দ্বারা API কলের জন্য সময় লাগে।
- i - লগ এন্ট্রির আইডি। চারটি ইভেন্ট এন্ট্রি এই আইডি শেয়ার করবে।
4. ক্লায়েন্ট বহির্গামী প্রতিক্রিয়া নমুনা
1436403888676 info res s=200, d=11, i=0
1436403888651 - ইউনিক্স তারিখ স্ট্যাম্প
- তথ্য - লগিং স্তর। এই মানটি লেনদেনের প্রসঙ্গে এবং
edgemicro
কনফিগারেশনে সেট করা লগিং স্তরের উপর নির্ভর করে। লগিং লেভেল কিভাবে সেট করবেন তা দেখুন। পরিসংখ্যান রেকর্ডের জন্য, স্তরটিstats
সেট করা হয়েছে। পরিসংখ্যান রেকর্ডগুলিstats_log_interval
কনফিগারেশনের সাথে সেট করা একটি নিয়মিত বিরতিতে রিপোর্ট করা হয়। লগ ইন্টারভাল কিভাবে পরিবর্তন করবেন তাও দেখুন। - res - ইভেন্ট সনাক্ত করে। এই ক্ষেত্রে, ক্লায়েন্টের প্রতিক্রিয়া।
- s - HTTP প্রতিক্রিয়া স্থিতি।
- d - মিলিসেকেন্ডে সময়কাল। টার্গেট এপিআই দ্বারা নেওয়া সময় এবং এজ মাইক্রোগেটওয়ে নিজেই যে সময় নেয় তা সহ এটি API কল দ্বারা নেওয়া মোট সময়।
- i - লগ এন্ট্রির আইডি। চারটি ইভেন্ট এন্ট্রি এই আইডি শেয়ার করবে।
লগ ফাইল সময়সূচী
লগ ফাইলগুলি rotate_interval কনফিগারেশন বৈশিষ্ট্য দ্বারা নির্দিষ্ট ব্যবধানে ঘোরানো হয়। ঘূর্ণন ব্যবধানের মেয়াদ শেষ না হওয়া পর্যন্ত এন্ট্রি একই লগ ফাইলে যোগ করা অব্যাহত থাকবে। যাইহোক, প্রতিবার এজ মাইক্রোগেটওয়ে পুনরায় চালু হলে এটি একটি নতুন UID পায় এবং এই UID দিয়ে লগ ফাইলের একটি নতুন সেট তৈরি করে। এছাড়াও ভাল লগ ফাইল রক্ষণাবেক্ষণ অনুশীলন দেখুন.
ত্রুটি বার্তা
কিছু লগ এন্ট্রিতে ত্রুটি বার্তা থাকবে। কোথায় এবং কেন ত্রুটিগুলি ঘটছে তা সনাক্ত করতে সহায়তা করতে, এজ মাইক্রোগেটওয়ে ত্রুটির রেফারেন্স দেখুন।
এজ মাইক্রোগেটওয়ে কনফিগারেশন রেফারেন্স
কনফিগারেশন ফাইলের অবস্থান
এই বিভাগে বর্ণিত কনফিগারেশন বৈশিষ্ট্যগুলি এজ মাইক্রোগেটওয়ে কনফিগারেশন ফাইলে অবস্থিত। কনফিগারেশন পরিবর্তন করাও দেখুন।
edge_config বৈশিষ্ট্য
এই সেটিংস এজ মাইক্রোগেটওয়ে ইনস্ট্যান্স এবং এপিজি এজ এর মধ্যে মিথস্ক্রিয়া কনফিগার করতে ব্যবহৃত হয়।
- বুটস্ট্র্যাপ : (ডিফল্ট: কোনোটিই নয়) একটি URL যা Apigee এজ-এ চলমান একটি এজ মাইক্রোগেটওয়ে-নির্দিষ্ট পরিষেবার দিকে নির্দেশ করে। এজ মাইক্রোগেটওয়ে অ্যাপিজি এজের সাথে যোগাযোগ করতে এই পরিষেবাটি ব্যবহার করে। আপনি যখন পাবলিক/প্রাইভেট কী পেয়ার জেনারেট করতে কমান্ডটি চালান তখন এই URLটি ফেরত দেওয়া হয়:
edgemicro genkeys
। বিস্তারিত জানার জন্য এজ মাইক্রোগেটওয়ে সেট আপ এবং কনফিগার করা দেখুন। - jwt_public_key : (ডিফল্ট: কোনটিই নয়) একটি ইউআরএল যা এজ মাইক্রোগেটওয়ে প্রক্সির দিকে নির্দেশ করে যা এপিজি এজ এ স্থাপন করা হয়েছে। এই প্রক্সি ক্লায়েন্টদের স্বাক্ষরিত অ্যাক্সেস টোকেন ইস্যু করার জন্য একটি প্রমাণীকরণ শেষ পয়েন্ট হিসাবে কাজ করে। আপনি যখন প্রক্সি স্থাপনের কমান্ডটি চালান তখন এই URLটি ফেরত দেওয়া হয়: edgemicro configure । বিস্তারিত জানার জন্য এজ মাইক্রোগেটওয়ে সেট আপ এবং কনফিগার করা দেখুন।
- quotaUri : আপনি যদি আপনার প্রতিষ্ঠানে স্থাপন করা
edgemicro-auth
প্রক্সির মাধ্যমে কোটা পরিচালনা করতে চান তবে এই কনফিগার বৈশিষ্ট্যটি সেট করুন। এই প্রপার্টি সেট করা না থাকলে, কোটা এন্ডপয়েন্ট অভ্যন্তরীণ এজ মাইক্রোগেটওয়ে এন্ডপয়েন্টে ডিফল্ট হয়।edge_config: quotaUri: https://your_org-your_env.apigee.net/edgemicro-auth
edgemicro বৈশিষ্ট্য
এই সেটিংস এজ মাইক্রোগেটওয়ে প্রক্রিয়া কনফিগার করে।
- port : (ডিফল্ট: 8000) যে পোর্ট নম্বরে এজ মাইক্রোগেটওয়ে প্রক্রিয়া শোনে।
- max_connections : (ডিফল্ট: -1) এজ মাইক্রোগেটওয়ে প্রাপ্ত সর্বোচ্চ সংখ্যক যুগপত ইনকামিং সংযোগ নির্দিষ্ট করে। এই সংখ্যা অতিক্রম করা হলে, নিম্নলিখিত স্থিতি ফেরত দেওয়া হয়:
res.statusCode = 429; // Too many requests
- max_connections_hard : (ডিফল্ট: -1) সংযোগ বন্ধ করার আগে Edge Microgateway প্রাপ্ত সর্বোচ্চ সংখ্যক একযোগে অনুরোধ পেতে পারে। এই সেটিং পরিষেবা আক্রমণ অস্বীকার করার উদ্দেশ্যে করা হয়েছে. সাধারণত, এটিকে max_connections এর চেয়ে বড় সংখ্যায় সেট করুন।
- লগিং :
- স্তর : (ডিফল্ট: ত্রুটি)
- info - (প্রস্তাবিত) এজ মাইক্রোগেটওয়ে ইনস্ট্যান্সের মাধ্যমে প্রবাহিত সমস্ত অনুরোধ এবং প্রতিক্রিয়া লগ করে।
- সতর্কতা - শুধুমাত্র সতর্ক বার্তা লগ করুন।
- ত্রুটি - লগ ত্রুটি বার্তা শুধুমাত্র.
- ডিবাগ - তথ্য, সতর্কতা এবং ত্রুটি বার্তা সহ ডিবাগ বার্তাগুলি লগ করে।
- ট্রেস - তথ্য, সতর্কীকরণ এবং ত্রুটি বার্তা সহ ত্রুটিগুলির জন্য লগগুলি তথ্য ট্রেস করে।
- none - একটি লগ ফাইল তৈরি করবেন না।
- dir : (ডিফল্ট: /var/tmp) ডিরেক্টরি যেখানে লগ ফাইল সংরক্ষণ করা হয়।
- stats_log_interval : (ডিফল্ট: 60) ব্যবধান, সেকেন্ডে, যখন পরিসংখ্যান রেকর্ড এপিআই লগ ফাইলে লেখা হয়।
- rotate_interval : (ডিফল্ট: 24) ব্যবধান, ঘন্টার মধ্যে, যখন লগ ফাইলগুলি ঘোরানো হয়।
- স্তর : (ডিফল্ট: ত্রুটি)
- প্লাগইন : প্লাগইন এজ মাইক্রোগেটওয়েতে কার্যকারিতা যোগ করে। প্লাগইন উন্নয়ন সম্পর্কে বিস্তারিত জানার জন্য, কাস্টম প্লাগইন বিকাশ দেখুন।
- dir : ./gateway ডিরেক্টরি থেকে ./plugins ডিরেক্টরিতে একটি আপেক্ষিক পথ, বা একটি পরম পথ।
- ক্রম : আপনার এজ মাইক্রোগেটওয়ে উদাহরণে যোগ করার জন্য প্লাগইন মডিউলগুলির একটি তালিকা। মডিউলগুলি এখানে উল্লিখিত ক্রম অনুসারে কার্যকর হবে।
- ডিবাগ: এজ মাইক্রোগেটওয়ে প্রক্রিয়ায় দূরবর্তী ডিবাগিং যোগ করে।
- পোর্ট : শোনার জন্য পোর্ট নম্বর। উদাহরণস্বরূপ, এই পোর্টে শুনতে আপনার IDE ডিবাগার সেট করুন।
- args : ডিবাগ প্রক্রিয়ার আর্গুমেন্ট। যেমন:
args --nolazy
- config_change_poll_interval: (ডিফল্ট: 600 সেকেন্ড) Edge Microgateway পর্যায়ক্রমে একটি নতুন কনফিগারেশন লোড করে এবং কিছু পরিবর্তন হলে পুনরায় লোড চালায়। পোলিং এজ-এ করা যেকোনো পরিবর্তন (পণ্যে পরিবর্তন, মাইক্রোগেটওয়ে-সচেতন প্রক্সি, ইত্যাদি) এবং সেইসাথে স্থানীয় কনফিগারেশন ফাইলে করা পরিবর্তনগুলি তুলে নেয়।
- disable_config_poll_interval: (ডিফল্ট: মিথ্যা) স্বয়ংক্রিয় পরিবর্তন পোলিং বন্ধ করতে সত্য সেট করুন।
- request_timeout : লক্ষ্য অনুরোধের জন্য একটি টাইমআউট সেট করে। সময়সীমা সেকেন্ডে সেট করা হয়। যদি একটি টাইমআউট ঘটে, এজ মাইক্রোগেটওয়ে একটি 504 স্ট্যাটাস কোড সহ প্রতিক্রিয়া জানায়। (v2.4.x যোগ করা হয়েছে)
- keep_alive_timeout : এই বৈশিষ্ট্যটি আপনাকে এজ মাইক্রোগেটওয়ে টাইমআউট (মিলিসেকেন্ডে) সেট করতে সক্ষম করে। (ডিফল্ট: 5 সেকেন্ড) (সংযোজিত v3.0.6)
- headers_timeout : এই বৈশিষ্ট্যটি HTTP পার্সার সম্পূর্ণ HTTP শিরোনাম পাওয়ার জন্য অপেক্ষা করবে এমন সময়ের পরিমাণ (মিলিসেকেন্ডে) সীমিত করে।
যেমন:
edgemicro: keep_alive_timeout: 6000 headers_timeout: 12000
অভ্যন্তরীণভাবে, প্যারামিটার অনুরোধে Node.js
Server.headersTimeout
বৈশিষ্ট্য সেট করে। (ডিফল্ট:edgemicro.keep_alive_timeout
এর সাথে সেট করা সময়ের চেয়ে 5 সেকেন্ড বেশি। এই ডিফল্ট সেটিং লোড ব্যালেন্সার বা প্রক্সিকে ভুলভাবে সংযোগ বাদ দেওয়া থেকে বাধা দেয়।) (সংযোজিত v3.1.1) - noRuleMatchAction: (স্ট্রিং)
accesscontrol
প্লাগইনে নির্দিষ্ট ম্যাচের নিয়মটি সমাধান না হলে (অ্যাক্সেসের অনুমতি দেওয়া বা অস্বীকার) নেওয়ার পদক্ষেপ (অমিল)। বৈধ মান:ALLOW
বাDENY
ডিফল্ট:ALLOW
(যোগ করা হয়েছে: v3.1.7) - enableAnalytics: (ডিফল্ট: সত্য) বিশ্লেষণ প্লাগইন লোড হওয়া থেকে আটকাতে বৈশিষ্ট্যটিকে মিথ্যাতে সেট করুন। এই ক্ষেত্রে, Apigee Edge বিশ্লেষণে কোন কল করা হবে না। যদি সত্যে সেট করা হয়, বা যখন এই বৈশিষ্ট্যটি প্রদান করা না হয়, বিশ্লেষণ প্লাগইন যথারীতি কাজ করবে। বিস্তারিত জানার জন্য edgemicro বৈশিষ্ট্য দেখুন. (v3.1.8 যোগ করা হয়েছে)।
উদাহরণ:
edgemicro enableAnalytics=false|true
- on_target_response_abort : ক্লায়েন্ট (এজ মাইক্রোগেটওয়ে) এবং টার্গেট সার্ভারের মধ্যে সংযোগ অকালে বন্ধ হলে এজ মাইক্রোগেটওয়ে কীভাবে আচরণ করবে এই বৈশিষ্ট্যটি আপনাকে নিয়ন্ত্রণ করতে দেয়।
মান বর্ণনা ডিফল্ট যদি on_target_response_abort
অনির্দিষ্ট হয়, তাহলে ডিফল্ট আচরণ হল কোনো ত্রুটি না দেখিয়ে প্রতিক্রিয়াটি ছেঁটে ফেলা। লগ ফাইলগুলিতে, একটি সতর্কতা বার্তা টার্গেটtargetResponse aborted
এবং একটি 502 প্রতিক্রিয়া কোড দেখানো হয়েছে।appendErrorToClientResponseBody
কাস্টম ত্রুটি TargetResponseAborted
ক্লায়েন্টকে ফেরত দেওয়া হয়। লগ ফাইলগুলিতে, একটি সতর্কতা বার্তা টার্গেটtargetResponse aborted
এবং একটি 502 প্রতিক্রিয়া কোড দেখানো হয়েছে। উপরন্তু, ত্রুটিTargetResponseAborted
বার্তার সাথে লগ করা হয়েছেTarget response ended prematurely.
abortClientRequest
এজ মাইক্রোগেটওয়ে অনুরোধটি বাতিল করে এবং লগ ফাইলগুলিতে একটি সতর্কতা লেখা হয়: 502 অনুরোধ স্ট্যাটাস কোড সহ TargetResponseAborted
।
উদাহরণ:
edgemicro: on_target_response_abort: appendErrorToClientResponseBody | abortClientRequest
শিরোনাম বৈশিষ্ট্য
এই সেটিংসগুলি কনফিগার করে যে কীভাবে নির্দিষ্ট HTTP শিরোনামগুলি ব্যবহার করা হয়।
- x-forwarded-for : (ডিফল্ট: true) টার্গেটে পাস করার জন্য x-ফরোয়ার্ড-এর হেডার প্রতিরোধ করতে মিথ্যা সেট করুন। মনে রাখবেন যে যদি একটি x-ফরোয়ার্ড-এর জন্য হেডার অনুরোধে থাকে, তাহলে এর মান এজ অ্যানালিটিক্সে ক্লায়েন্ট-আইপি মানতে সেট করা হবে।
- x-forwarded-host : (ডিফল্ট: সত্য) x-ফরোয়ার্ডেড-হোস্ট শিরোনামকে লক্ষ্যে পাস করা প্রতিরোধ করতে মিথ্যাতে সেট করুন।
- x-request-id : (ডিফল্ট: true) x-request-id হেডার টার্গেটে পাস করা প্রতিরোধ করতে মিথ্যা সেট করুন।
- x-response-time : (ডিফল্ট: সত্য) টার্গেটে পাস করা x-প্রতিক্রিয়া-সময় শিরোনাম প্রতিরোধ করতে মিথ্যা সেট করুন।
- মাধ্যমে : (ডিফল্ট: সত্য) হেডারের মাধ্যমে লক্ষ্যে পাস করা প্রতিরোধ করতে মিথ্যা সেট করুন।
শপথ বৈশিষ্ট্য
এই সেটিংস কনফিগার করে কিভাবে ক্লায়েন্ট প্রমাণীকরণ এজ মাইক্রোগেটওয়ে দ্বারা প্রয়োগ করা হয়।
- allowNoAuthorization : (ডিফল্ট: মিথ্যা) সত্যে সেট করা হলে, API কলগুলিকে এজ মাইক্রোগেটওয়ের মধ্য দিয়ে যাওয়ার অনুমতি দেওয়া হয় কোনো অনুমোদন শিরোনাম ছাড়াই। একটি অনুমোদন শিরোনাম (ডিফল্ট) প্রয়োজনের জন্য এটি মিথ্যাতে সেট করুন।
- allowInvalidAuthorization : (ডিফল্ট: মিথ্যা) সত্যে সেট করা থাকলে, অনুমোদন শিরোনামে পাস করা টোকেনটি অবৈধ বা মেয়াদ শেষ হলে API কলগুলি পাস করার অনুমতি দেওয়া হয়। বৈধ টোকেন (ডিফল্ট) প্রয়োজনের জন্য এটি মিথ্যাতে সেট করুন।
- অনুমোদন-শিরোনাম : (ডিফল্ট: অনুমোদন: বহনকারী) হেডারটি এজ মাইক্রোগেটওয়েতে অ্যাক্সেস টোকেন পাঠাতে ব্যবহৃত হয়। আপনি এমন ক্ষেত্রে ডিফল্ট পরিবর্তন করতে চাইতে পারেন যেখানে লক্ষ্যকে অন্য কোনো উদ্দেশ্যে অনুমোদন শিরোনাম ব্যবহার করতে হবে।
- api-key-header : (ডিফল্ট: x-api-key) এজ মাইক্রোগেটওয়েতে একটি API কী পাস করতে ব্যবহৃত হেডার বা ক্যোয়ারী প্যারামিটারের নাম। এপিআই কী ব্যবহার করাও দেখুন।
- keep-authorization-header : (ডিফল্ট: মিথ্যা) সত্যে সেট করা হলে, অনুরোধে প্রেরিত অনুমোদনের শিরোনাম টার্গেটে চলে যায় (এটি সংরক্ষিত থাকে)।
- allowOAuthOnly -- যদি সত্যে সেট করা হয়, প্রতিটি API অবশ্যই একটি বিয়ারার অ্যাক্সেস টোকেন সহ একটি অনুমোদন শিরোনাম বহন করবে৷ আপনাকে শুধুমাত্র OAuth নিরাপত্তা মডেলের অনুমতি দেওয়ার অনুমতি দেয় (পশ্চাদগামী সামঞ্জস্য বজায় রাখার সময়)। (2.4.x যোগ করা হয়েছে)
- অনুমতি দেয়APIKeyOnly -- যদি সত্যে সেট করা হয়, প্রতিটি API-কে অবশ্যই একটি API কী সহ একটি x-api-কী শিরোনাম (বা একটি কাস্টম অবস্থান) বহন করতে হবে৷ আপনাকে শুধুমাত্র API কী নিরাপত্তা মডেলের অনুমতি দিতে দেয় (পশ্চাদগামী সামঞ্জস্য বজায় রাখার সময়)৷ (2.4.x যোগ করা হয়েছে)
- gracePeriod -- এই প্যারামিটারটি আপনার সিস্টেম ঘড়ি এবং JWT অনুমোদন টোকেনে উল্লেখিত সময়ে আগে নয় (nbf) বা ইস্যুড এ (iat) সময়ের মধ্যে সামান্য অসঙ্গতির কারণে ত্রুটিগুলি প্রতিরোধ করতে সাহায্য করে। এই ধরনের অসঙ্গতির জন্য অনুমতি দিতে সেকেন্ডের সংখ্যায় এই প্যারামিটার সেট করুন। (2.5.7 যোগ করা হয়েছে)
প্লাগইন-নির্দিষ্ট বৈশিষ্ট্য
প্রতিটি প্লাগইনের জন্য কনফিগারযোগ্য বৈশিষ্ট্যের বিস্তারিত জানার জন্য প্লাগইন ব্যবহার করা দেখুন।
ফিল্টারিং প্রক্সি
আপনি কোন মাইক্রোগেটওয়ে-সচেতন প্রক্সিগুলিকে একটি এজ মাইক্রোগেটওয়ে দৃষ্টান্ত প্রক্রিয়া করবে তা ফিল্টার করতে পারেন। যখন এজ মাইক্রোগেটওয়ে শুরু হয়, এটি যে সংস্থার সাথে যুক্ত তার সমস্ত মাইক্রোগেটওয়ে-সচেতন প্রক্সি ডাউনলোড করে। মাইক্রোগেটওয়ে কোন প্রক্সি প্রক্রিয়া করবে তা সীমাবদ্ধ করতে নিম্নলিখিত কনফিগারেশন ব্যবহার করুন। উদাহরণস্বরূপ, এই কনফিগারেশনটি মাইক্রোগেটওয়ে তিনটি প্রক্সিতে প্রসেস করবে তা সীমাবদ্ধ করে: edgemicro_proxy-1
, edgemicro_proxy-2
, এবং edgemicro_proxy-3
:
edgemicro: proxies: - edgemicro_proxy-1 - edgemicro_proxy-2 - edgemicro_proxy-3
নাম দ্বারা পণ্য ফিল্টারিং
এজ মাইক্রোগেটওয়ে ডাউনলোড এবং প্রসেস করে এমন API পণ্যের সংখ্যা সীমিত করতে নিম্নলিখিত কনফিগারেশন ব্যবহার করুন। ডাউনলোড করা পণ্যগুলিকে ফিল্টার করতে, এজ মাইক্রোগেটওয়ে *.config.yaml
ফাইলে তালিকাভুক্ত /products
API-এ productnamefilter
ক্যোয়ারী প্যারামিটার যোগ করুন। যেমন:
edge_config: bootstrap: >- https://edgemicroservices.apigee.net/edgemicro/bootstrap/organization/willwitman/environment/test jwt_public_key: 'https://myorg-test.apigee.net/edgemicro-auth/publicKey' managementUri: 'https://api.enterprise.apigee.com' vaultName: microgateway authUri: 'https://%s-%s.apigee.net/edgemicro-auth' baseUri: >- https://edgemicroservices.apigee.net/edgemicro/%s/organization/%s/environment/%s bootstrapMessage: Please copy the following property to the edge micro agent config keySecretMessage: The following credentials are required to start edge micro products: 'https://myorg-test.apigee.net/edgemicro-auth/products?productnamefilter=%5E%5BEe%5Ddgemicro.%2A%24'
মনে রাখবেন যে ক্যোয়ারী প্যারামিটারের মান অবশ্যই রেগুলার এক্সপ্রেশন ফরম্যাটে নির্দিষ্ট করতে হবে এবং URL এনকোডেড হতে হবে। উদাহরণস্বরূপ, regex ^[Ee]dgemicro.*$
নাম ধরে যেমন: "edgemicro-test-1", "edgemicro_demo" এবং "Edgemicro_New_Demo"। URL এনকোড করা মান, ক্যোয়ারী প্যারামিটারে ব্যবহারের জন্য উপযুক্ত, হল: %5E%5BEe%5Ddgemicro.%2A%24
।
নিম্নলিখিত ডিবাগ আউটপুট দেখায় যে শুধুমাত্র ফিল্টার করা পণ্যগুলি ডাউনলোড করা হয়েছে:
... 2020-05-27T03:13:50.087Z [76060] [microgateway-config network] products download from https://gsc-demo-prod.apigee.net/edgemicro-auth/products?productnamefilter=%5E%5BEe%5Ddgemicro.%2A%24 returned 200 OK ... .... .... { "apiProduct":[ { "apiResources":[ ], "approvalType":"auto", "attributes":[ { "name":"access", "value":"public" } ], "createdAt":1590549037549, "createdBy":"k***@g********m", "displayName":"test upper case in name", "environments":[ "prod", "test" ], "lastModifiedAt":1590549037549, "lastModifiedBy":"k***@g********m", "name":"Edgemicro_New_Demo", "proxies":[ "catchall" ], "quota":"null", "quotaInterval":"null", "quotaTimeUnit":"null", "scopes":[ ] }, { "apiResources":[ ], "approvalType":"auto", "attributes":[ { "name":"access", "value":"public" } ], "createdAt":1590548328998, "createdBy":"k***@g********m", "displayName":"edgemicro test 1", "environments":[ "prod", "test" ], "lastModifiedAt":1590548328998, "lastModifiedBy":"k***@g********m", "name":"edgemicro-test-1", "proxies":[ "Lets-Encrypt-Validation-DoNotDelete" ], "quota":"null", "quotaInterval":"null", "quotaTimeUnit":"null", "scopes":[ ] }, { "apiResources":[ "/", "/**" ], "approvalType":"auto", "attributes":[ { "name":"access", "value":"public" } ], "createdAt":1558182193472, "createdBy":"m*********@g********m", "displayName":"Edge microgateway demo product", "environments":[ "prod", "test" ], "lastModifiedAt":1569077897465, "lastModifiedBy":"m*********@g********m", "name":"edgemicro_demo", "proxies":[ "edgemicro-auth", "edgemicro_hello" ], "quota":"600", "quotaInterval":"1", "quotaTimeUnit":"minute", "scopes":[ ] } ] }
কাস্টম বৈশিষ্ট্য দ্বারা পণ্য ফিল্টারিং
কাস্টম বৈশিষ্ট্যের উপর ভিত্তি করে পণ্য ফিল্টার করতে:
- এজ UI-তে, আপনি যে প্রতিষ্ঠান/পরিবেশে এজ মাইক্রোগেটওয়ে কনফিগার করেছেন সেখানে edgemicro_auth প্রক্সি নির্বাচন করুন।
- ডেভেলপ ট্যাপে, এডিটরে JavaCallout নীতি খুলুন।
- কী
products.filter.attributes
এর সাথে একটি কাস্টম অ্যাট্রিবিউট যোগ করুন কমা দ্বারা আলাদা করা অ্যাট্রিবিউট নামের তালিকার সাথে। শুধুমাত্র যে পণ্যগুলিতে কাস্টম অ্যাট্রিবিউটের নাম রয়েছে তা এজ মাইক্রোগেটওয়েতে ফেরত দেওয়া হবে। - কাস্টম অ্যাট্রিবিউট
products.filter.env.enable
কেfalse
এ সেট করে বর্তমান পরিবেশের জন্য পণ্যটি সক্ষম হয়েছে কিনা তা দেখতে আপনি ঐচ্ছিকভাবে চেকটি নিষ্ক্রিয় করতে পারেন। (ডিফল্ট সত্য।) - (শুধুমাত্র ব্যক্তিগত ক্লাউড) আপনি যদি ব্যক্তিগত ক্লাউডের জন্য প্রান্তে থাকেন তবে নন-সিপিএস পরিবেশের জন্য পণ্যগুলি টানতে
org.noncps
সম্পত্তিটিকেtrue
সেট করুন।
যেমন:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JavaCallout async="false" continueOnError="false" enabled="true" name="JavaCallout"> <DisplayName>JavaCallout</DisplayName> <FaultRules/> <Properties> <Property name="products.filter.attributes">attrib.one, attrib.two</Property> <Property name="products.filter.env.enable">false</Property> <Property name="org.noncps">true</Property> </Properties> <ClassName>io.apigee.microgateway.javacallout.Callout</ClassName> <ResourceURL>java://micro-gateway-products-javacallout-2.0.0.jar</ResourceURL> </JavaCallout>
অ্যানালিটিক্স পুশ ফ্রিকোয়েন্সি কনফিগার করা হচ্ছে
এজ মাইক্রোগেটওয়ে Apigee-তে বিশ্লেষণ ডেটা পাঠায় সেই ফ্রিকোয়েন্সি নিয়ন্ত্রণ করতে এই কনফিগারেশন প্যারামিটারগুলি ব্যবহার করুন:
- bufferSize (ঐচ্ছিক): প্রাচীনতম রেকর্ড বাদ দেওয়া শুরু করার আগে বাফারটি ধরে রাখতে পারে এমন সর্বাধিক সংখ্যক বিশ্লেষণী রেকর্ড। ডিফল্ট: 10000
- ব্যাচসাইজ (ঐচ্ছিক): Apigee-এ পাঠানো অ্যানালিটিক্স রেকর্ডের ব্যাচের সর্বোচ্চ আকার। ডিফল্ট: 500
- flushInterval (ঐচ্ছিক): Apigee-এ পাঠানো বিশ্লেষণ রেকর্ডের একটি ব্যাচের প্রতিটি ফ্লাশের মধ্যে মিলিসেকেন্ডের সংখ্যা। ডিফল্ট: 5000
যেমন:
analytics: bufferSize: 15000 batchSize: 1000 flushInterval: 6000
বিশ্লেষণ তথ্য মাস্কিং
নিম্নলিখিত কনফিগারেশন এজ অ্যানালিটিক্সে দেখানো থেকে অনুরোধের পথের তথ্যকে বাধা দেয়। অনুরোধ URI এবং/অথবা অনুরোধ পাথ মাস্ক করতে মাইক্রোগেটওয়ে কনফিগারেশনে নিম্নলিখিত যোগ করুন। মনে রাখবেন যে ইউআরআই অনুরোধের হোস্টনাম এবং পাথ অংশ নিয়ে গঠিত।
analytics: mask_request_uri: 'string_to_mask' mask_request_path: 'string_to_mask'
এজ অ্যানালিটিক্সে API কলগুলি আলাদা করা
আপনি একটি নির্দিষ্ট API পাথ আলাদা করতে বিশ্লেষণ প্লাগইন কনফিগার করতে পারেন যাতে এটি এজ অ্যানালিটিক্স ড্যাশবোর্ডে একটি পৃথক প্রক্সি হিসাবে প্রদর্শিত হয়। উদাহরণস্বরূপ, আপনি প্রকৃত API প্রক্সি কলগুলির সাথে বিভ্রান্ত হওয়া এড়াতে ড্যাশবোর্ডে একটি স্বাস্থ্য পরীক্ষা API আলাদা করতে পারেন। অ্যানালিটিক্স ড্যাশবোর্ডে, বিচ্ছিন্ন প্রক্সি এই নামকরণ প্যাটার্ন অনুসরণ করে:
edgemicro_proxyname-health
নিম্নলিখিত চিত্রটি বিশ্লেষণ ড্যাশবোর্ডে দুটি পৃথক প্রক্সি দেখায়: edgemicro_hello-health
এবং edgemicro_mock-health
:
আলাদা প্রক্সি হিসাবে Analytics ড্যাশবোর্ডে আপেক্ষিক এবং পরম পাথগুলিকে আলাদা করতে এই প্যারামিটারগুলি ব্যবহার করুন:
- relatedPath (ঐচ্ছিক): Analytics ড্যাশবোর্ডে আলাদা করার জন্য একটি আপেক্ষিক পথ নির্দিষ্ট করে। উদাহরণ স্বরূপ, আপনি যদি
/healthcheck
নির্দিষ্ট করেন, path/healthcheck
ধারণ করে এমন সমস্ত API কলগুলি ড্যাশবোর্ডেedgemicro_ proxyname -health
হিসাবে প্রদর্শিত হবে। মনে রাখবেন যে এই পতাকাটি প্রক্সি বেসপাথ উপেক্ষা করে। বেসপাথ সহ একটি সম্পূর্ণ পথের উপর ভিত্তি করে আলাদা করতে,proxyPath
পতাকা ব্যবহার করুন। - proxyPath (ঐচ্ছিক): বিশ্লেষণ ড্যাশবোর্ডে আলাদা করার জন্য প্রক্সি বেসপাথ সহ একটি সম্পূর্ণ API প্রক্সি পাথ নির্দিষ্ট করে। উদাহরণস্বরূপ, আপনি যদি
/mocktarget/healthcheck
নির্দিষ্ট করেন, যেখানে/mocktarget
হল প্রক্সি বেসপাথ,/mocktarget/healthcheck
এর সাথে সমস্ত API কলগুলি ড্যাশবোর্ডেedgemicro_ proxyname -health
হিসাবে উপস্থিত হবে।
উদাহরণ স্বরূপ, নিম্নলিখিত কনফিগারেশনে /healthcheck
ধারণ করে এমন যেকোনো API পাথ বিশ্লেষণ প্লাগইন দ্বারা আলাদা করা হবে। এর মানে, /foo/healthcheck
এবং /foo/bar/healthcheck
বিশ্লেষণ ড্যাশবোর্ডে edgemicro_ proxyname -health
নামে একটি পৃথক প্রক্সি হিসাবে আলাদা করা হবে।
analytics: uri: >- https://xx/edgemicro/ax/org/docs/environment/test bufferSize: 100 batchSize: 50 flushInterval: 500 relativePath: /healthcheck
নিম্নলিখিত কনফিগারেশনে প্রক্সি পাথ /mocktarget/healthcheck
সহ যেকোনো API বিশ্লেষণ ড্যাশবোর্ডে edgemicro_ proxyname -health
নামে একটি পৃথক প্রক্সি হিসাবে আলাদা করা হবে।
analytics: uri: >- https://xx/edgemicro/ax/org/docs/environment/test bufferSize: 100 batchSize: 50 flushInterval: 500 proxyPath: /mocktarget/healthcheck
একটি কোম্পানির ফায়ারওয়ালের পিছনে এজ মাইক্রোগেটওয়ে সেট আপ করা হচ্ছে
Apigee Edge এর সাথে যোগাযোগের জন্য একটি HTTP প্রক্সি ব্যবহার করুন
সংস্করণ 3.1.2 এ যোগ করা হয়েছে।
এজ মাইক্রোগেটওয়ে এবং এপিজি এজের মধ্যে যোগাযোগের জন্য একটি HTTP প্রক্সি ব্যবহার করতে, নিম্নলিখিতগুলি করুন:
- এনভায়রনমেন্ট ভেরিয়েবল
HTTP_PROXY
,HTTPS_PROXY
, এবংNO_PROXY
সেট করুন। এই ভেরিয়েবলগুলি প্রতিটি HTTP প্রক্সির জন্য হোস্টগুলিকে নিয়ন্ত্রণ করে যা আপনি Apigee Edge-এর সাথে যোগাযোগের জন্য ব্যবহার করতে চান বা কোন হোস্টগুলি Apigee Edge-এর সাথে যোগাযোগ পরিচালনা করবে না৷ যেমন:export HTTP_PROXY='http://localhost:3786' export HTTPS_PROXY='https://localhost:3786' export NO_PROXY='localhost,localhost:8080'
নোট করুন যে
NO_PROXY
ডোমেনগুলির একটি কমা সীমিত তালিকা হতে পারে যা মাইক্রোগেটওয়ের প্রান্তে প্রক্সি হওয়া উচিত নয়।এই ভেরিয়েবলগুলি সম্পর্কে আরও তথ্যের জন্য, দেখুন https://www.npmjs.com/package/request#controling-proxy-feaviour-using-envirament-variablables
- এজ মাইক্রোগেটওয়ে পুনরায় চালু করুন।
লক্ষ্য যোগাযোগের জন্য একটি এইচটিটিপি প্রক্সি ব্যবহার করুন
সংস্করণ 3.1.2 এ যুক্ত।
এজ মাইক্রোগেটওয়ে এবং ব্যাকএন্ড লক্ষ্যগুলির মধ্যে যোগাযোগের জন্য একটি এইচটিটিপি প্রক্সি ব্যবহার করতে, নিম্নলিখিতগুলি করুন:
- মাইক্রোগেটওয়ে কনফিগারেশন ফাইলটিতে নিম্নলিখিত কনফিগারেশন যুক্ত করুন:
edgemicro: proxy: tunnel: true | false url: proxy_url bypass: target_host # target hosts to bypass the proxy. enabled: true | false
কোথায়:
- টানেল : (al চ্ছিক) যখন সত্য হয়, এজ মাইক্রোগেটওয়ে একটি একক টিসিপি সংযোগের মাধ্যমে এইচটিটিপি সংযোগের জন্য এইচটিটিপি সংযোগ পদ্ধতিটি ব্যবহার করে। (প্রক্সিটি কনফিগার করার জন্য নীচে উল্লিখিত পরিবেশের ভেরিয়েবলগুলি টিএলএস সক্ষম করা হয় তবে এটি একই সত্য)। ডিফল্ট:
false
- ইউআরএল : এইচটিটিপি প্রক্সি ইউআরএল।
- বাইপাস : (al চ্ছিক) এক বা একাধিক কমা-বিচ্ছিন্ন টার্গেট হোস্ট ইউআরএল নির্দিষ্ট করে যা এইচটিটিপি প্রক্সি বাইপাস করা উচিত। যদি এই সম্পত্তিটি সেট না করা থাকে, তবে কোন টার্গেট ইউআরএলগুলি বাইপাস করার জন্য নির্দিষ্ট করতে NO_PROXY পরিবেশের পরিবর্তনশীল ব্যবহার করুন।
- সক্ষম : যদি সত্য এবং
proxy.url
সেট করা থাকে তবে এইচটিটিপি প্রক্সিটির জন্যproxy.url
মানটি ব্যবহার করুন। যদি সত্য এবংproxy.url
সেট না করা থাকে তবে এপিআইজি এজের সাথে যোগাযোগের জন্য এইচটিটিপি প্রক্সি ব্যবহারে বর্ণিত হিসাবে এইচটিটিপি প্রক্সি এনভায়রনমেন্ট ভেরিয়েবলগুলিHTTP_PROXY
এবংHTTPS_PROXY
নির্দিষ্ট প্রক্সিগুলি ব্যবহার করুন।
যেমন:
edgemicro: proxy: tunnel: true url: 'http://localhost:3786' bypass: 'localhost','localhost:8080' # target hosts to bypass the proxy. enabled: true
- টানেল : (al চ্ছিক) যখন সত্য হয়, এজ মাইক্রোগেটওয়ে একটি একক টিসিপি সংযোগের মাধ্যমে এইচটিটিপি সংযোগের জন্য এইচটিটিপি সংযোগ পদ্ধতিটি ব্যবহার করে। (প্রক্সিটি কনফিগার করার জন্য নীচে উল্লিখিত পরিবেশের ভেরিয়েবলগুলি টিএলএস সক্ষম করা হয় তবে এটি একই সত্য)। ডিফল্ট:
- এজ মাইক্রোগেটওয়ে পুনরায় চালু করুন।
মাইক্রোগেটওয়ে-সচেতন প্রক্সিতে ওয়াইল্ডকার্ড ব্যবহার করা
আপনি এক বা একাধিক "*" ওয়াইল্ডকার্ড ব্যবহার করতে পারেন একটি এডেমিক্রো_* (মাইক্রোগেটওয়ে-সচেতন) প্রক্সির বেস পাথটিতে। উদাহরণস্বরূপ, /টিম/*/সদস্যদের একটি বেস পাথ ক্লায়েন্টদের https: // [হোস্ট]/দল/নীল/সদস্য এবং https: // [হোস্ট]/টিম/সবুজ/সদস্যদের কল করার অনুমতি দেয় আপনাকে নতুন তৈরি করার প্রয়োজন নেই নতুন দলগুলিকে সমর্থন করার জন্য এপিআই প্রক্সি। নোট করুন যে /**/
সমর্থিত নয়।
গুরুত্বপূর্ণ: এপিগি একটি বেস পাথের প্রথম উপাদান হিসাবে একটি ওয়াইল্ডকার্ড "*" ব্যবহার করে সমর্থন করে না। উদাহরণস্বরূপ, এটি সমর্থিত নয়: /*/
অনুসন্ধান।
জেডব্লিউটি কীগুলি ঘোরানো
আপনি প্রাথমিকভাবে কোনও জেডব্লিউটি তৈরি করার পরে কোনও সময়ে, আপনাকে প্রান্ত এনক্রিপ্ট করা কেভিএম -এ সঞ্চিত সরকারী/ব্যক্তিগত কী জুটি পরিবর্তন করতে হবে। একটি নতুন কী জুটি তৈরির এই প্রক্রিয়াটিকে কী রোটেশন বলা হয়।
এজ মাইক্রোগেটওয়ে কীভাবে জেডব্লিউটি ব্যবহার করে
জেএসএন ওয়েব টোকেন (জেডাব্লুটি) আরএফসি 7519 এ বর্ণিত একটি টোকেন স্ট্যান্ডার্ড। জেডব্লিউটি দাবিগুলির একটি সেট স্বাক্ষর করার একটি উপায় সরবরাহ করে, যা জেডাব্লুটি প্রাপক দ্বারা নির্ভরযোগ্যভাবে যাচাই করা যেতে পারে।
আপনি সিএলআই ব্যবহার করে একটি জেডব্লিউটি তৈরি করতে পারেন এবং এটি এপিআই কী এর পরিবর্তে এপিআই কলগুলির অনুমোদনের শিরোনামে ব্যবহার করতে পারেন। যেমন:
curl -i http://localhost:8000/hello -H "Authorization: Bearer eyJhbGciOiJ..dXDefZEA"
সিএলআই দিয়ে জেডব্লিউটি তৈরি করার তথ্যের জন্য, একটি টোকেন তৈরি করুন ।
কী ঘূর্ণন কী?
আপনি প্রাথমিকভাবে কোনও জেডব্লিউটি তৈরি করার পরে কোনও সময়ে, আপনাকে প্রান্ত এনক্রিপ্ট করা কেভিএম -এ সঞ্চিত সরকারী/ব্যক্তিগত কী জুটি পরিবর্তন করতে হবে। একটি নতুন কী জুটি তৈরির এই প্রক্রিয়াটিকে কী রোটেশন বলা হয়। আপনি যখন কীগুলি ঘোরান, তখন একটি নতুন বেসরকারী/পাবলিক কী জুটি আপনার অ্যাপিগি এজ সংস্থা/পরিবেশে "মাইক্রোগেটওয়ে" কেভিএম -তে উত্পন্ন এবং সংরক্ষণ করা হয়। এছাড়াও, পুরানো পাবলিক কীটি এর মূল কী আইডি মান সহ ধরে রাখা হয়।
একটি জেডাব্লুটি উত্পন্ন করতে, এজ এনক্রিপ্ট করা কেভিএম -এ সঞ্চিত তথ্য ব্যবহার করে। microgateway
নামে একটি কেভিএম তৈরি করা হয়েছিল এবং কীগুলি দিয়ে তৈরি করা হয়েছিল যখন আপনি প্রাথমিকভাবে (কনফিগার করা) এজ মাইক্রোগেটওয়ে সেট আপ করেন। কেভিএমের কীগুলি একটি জেডব্লিউটি সাইন এবং এনক্রিপ্ট করতে ব্যবহৃত হয়।
কেভিএম কীগুলির মধ্যে রয়েছে:
প্রাইভেট_কি - সর্বশেষ (সর্বাধিক নির্মিত) আরএসএ প্রাইভেট কী জেডব্লিউটিএস স্বাক্ষর করতে ব্যবহৃত।
পাবলিক_কি - প্রাইভেট_কি দিয়ে স্বাক্ষরিত জেডব্লিউটিগুলি যাচাই করতে ব্যবহৃত সর্বশেষ (সর্বাধিক নির্মিত) শংসাপত্র।
প্রাইভেট_কি_কিড - সর্বশেষতম (সম্প্রতি তৈরি) প্রাইভেট কী আইডি। এই কী আইডিটি প্রাইভেট_কি মানের সাথে সম্পর্কিত এবং কী ঘূর্ণন সমর্থন করতে ব্যবহৃত হয়।
পাবলিক_কি 1_কিড - সর্বশেষতম (সম্প্রতি তৈরি) পাবলিক কী আইডি। এই কীটি পাবলিক_কি 1 মানের সাথে সম্পর্কিত এবং কী ঘূর্ণন সমর্থন করতে ব্যবহৃত হয়। এই মানটি প্রাইভেট কী কিডের মতোই।
পাবলিক_কি 1 - সর্বশেষতম (সর্বাধিক সম্প্রতি তৈরি) পাবলিক কী।
আপনি যখন কী রোটেশন সম্পাদন করেন, বিদ্যমান কী মানগুলি মানচিত্রে প্রতিস্থাপন করা হয় এবং পুরানো পাবলিক কীগুলি ধরে রাখতে নতুন কীগুলি যুক্ত করা হয়। যেমন:
পাবলিক_কি 2_কিড - পুরানো পাবলিক কী আইডি। এই কীটি পাবলিক_কি 2 মানের সাথে সম্পর্কিত এবং কী ঘূর্ণন সমর্থন করতে ব্যবহৃত হয়।
পাবলিক_কি 2 - পুরানো পাবলিক কী।
যাচাইয়ের জন্য উপস্থাপিত জেডব্লিউটিএস নতুন পাবলিক কী ব্যবহার করে যাচাই করা হবে। যদি যাচাইকরণ ব্যর্থ হয়, তবে পুরানো পাবলিক কীটি ব্যবহার করা হবে, যতক্ষণ না জেডব্লিউটি মেয়াদ শেষ হয় (টোকেন_এক্সপিরি* ব্যবধান, ডিফল্ট 30 মিনিট) পরে। এইভাবে, আপনি তাত্ক্ষণিকভাবে এপিআই ট্র্যাফিক ব্যাহত না করে কীগুলি "ঘোরানো" করতে পারেন।
কীভাবে কী ঘূর্ণন করবেন
এই বিভাগটি কীভাবে একটি মূল ঘূর্ণন সম্পাদন করবেন তা ব্যাখ্যা করে।
- কেভিএম আপগ্রেড করতে,
edgemicro upgradekvm
কমান্ডটি ব্যবহার করুন। এই কমান্ডটি চালানোর বিষয়ে বিশদগুলির জন্য, কেভিএম আপগ্রেড করা দেখুন। আপনার কেবল একবারে এই পদক্ষেপটি করা দরকার। - এডেমিক্রো-ওথ প্রক্সি আপগ্রেড করতে,
edgemicro upgradeauth
কমান্ডটি ব্যবহার করুন। এই কমান্ডটি চালানোর বিষয়ে বিশদগুলির জন্য, এডেমিক্রো-এথ প্রক্সিটিকে উগ্রেড করা দেখুন। আপনার কেবল একবারে এই পদক্ষেপটি করা দরকার। - আপনার
~/.edgemicro/org-env-config.yaml
ফাইলটিতে নিম্নলিখিত লাইনটি যুক্ত করুন, যেখানে আপনাকে অবশ্যই একই সংস্থা এবং পরিবেশ নির্দিষ্ট করতে হবে যা আপনি ব্যবহারের জন্য মাইক্রোগেটওয়ে কনফিগার করেছেন:jwk_public_keys: 'https://$ORG-$ENV.apigee.net/edgemicro-auth/jwkPublicKeys'
কীগুলি ঘোরানোর জন্য কী রোটেশন কমান্ডটি চালান। এই কমান্ডের বিশদগুলির জন্য, ঘোরানো কীগুলি দেখুন।
edgemicro rotatekey -o $ORG -e $ENV -k $KEY -s $SECRET
যেমন:
edgemicro rotatekey -o docs -e test \ -k 27ee39567c75e4567a66236cbd4e86d1cc93df6481454301bd5fac4d3497fcbb \ -s 4618b0008a6185d7327ebf53bee3c50282ccf45a3cceb1ed9828bfbcf1148b47
কী ঘূর্ণনের পরে, এজ মাইক্রোগেটওয়েতে একাধিক কীগুলি ফেরত দেয়। নিম্নলিখিত উদাহরণে নোট করুন, প্রতিটি কীতে একটি অনন্য "কিড" (কী আইডি) মান রয়েছে। মাইক্রোগেটওয়ে এরপরে অনুমোদনের টোকেনগুলি যাচাই করতে এই কীগুলি ব্যবহার করে। যদি টোকেন বৈধতা ব্যর্থ হয় তবে মাইক্রোগেটওয়ে কী সেটে কোনও পুরানো কী আছে কিনা তা দেখতে এবং সেই কীটি চেষ্টা করে। ফেরত কীগুলির ফর্ম্যাটটি হ'ল জেএসএন ওয়েব কী (জেডব্লিউকে)। আপনি আরএফসি 7517 এ এই ফর্ম্যাটটি সম্পর্কে পড়তে পারেন।
{ "keys": [ { "kty": "RSA", "n": "nSl7R_0wKLiWi6cO3n8aOJwYGBtinq723Jgg8i7KKWTSTYoszOjgGsJf_MX4JEW1YCScwpE5o4o8ccQN09iHVTlIhk8CNiMZNPipClmRVjaL_8IWvMQp1iN66qy4ldWXzXnHfivUZZogCkBNqCz7VSC5rw2Jf57pdViULVvVDGwTgf46sYveW_6h8CAGaD0KLd3vZffxIkoJubh0yMy0mQP3aDOeIGf_akeZeZ6GzF7ltbKGd954iNTiKmdm8IKhz6Y3gLpC9iwQ-kex_j0CnO_daHl1coYxUSCIdv4ziWIeM3dmjQ5_2dEvUDIGG6_Az9hTpNgPE5J1tvrOHAmunQ", "e": "AQAB", "kid": "2" }, { "kty": "RSA", "n": "8BKwzx34BMUcHwTuQtmp8LFRCMxbkKg_zsWD6eOMIUTAsORexTGJsTy7z-4aH0wJ3fT-3luAAUPLBQwGcuHo0P1JnbtPrpuYjaJKSZOeIMOnlryJCspmv-1xG4qAqQ9XaZ9C97oecuj7MMoNwuaZno5MvsY-oi5B_gqED3vIHUjaWCErd4reONyFSWn047dvpE6mwRhZbcOTkAHT8ZyKkHISzopkFg8CD-Mij12unxA3ldcTV7yaviXgxd3eFSD1_Z4L7ZRsDUukCJkJ-8qY2-GWjewzoxl-mAW9D1tLK6qAdc89yFem3JHRW6L1le3YK37-bs6b2a_AqJKsKm5bWw", "e": "AQAB", "kid": "1" } ] }
একটি "আগে নয়" বিলম্ব কনফিগার করা
৩.১.৫ সংস্করণগুলির জন্য এবং এর আগে, rotatekey
কমান্ড দ্বারা উত্পাদিত নতুন প্রাইভেট কীটি তাত্ক্ষণিকভাবে কার্যকর হয়েছিল এবং উত্পন্ন নতুন টোকেনগুলি নতুন ব্যক্তিগত কী দিয়ে স্বাক্ষরিত হয়েছিল। যাইহোক, নতুন পাবলিক কীটি কেবলমাত্র মাইক্রোগেটওয়ে কনফিগারেশনটি রিফ্রেশ করা হলে প্রতি 10 মিনিটে (ডিফল্টরূপে) মাইক্রোগেটওয়ে দৃষ্টান্তগুলি প্রান্তে উপলব্ধ করা হয়েছিল। টোকেন সাইনিং এবং মাইক্রোগেটওয়ে উদাহরণ রিফ্রেশের মধ্যে এই ব্যবধানের কারণে, সর্বশেষ কী দিয়ে স্বাক্ষরিত টোকেনগুলি প্রত্যাখ্যান করা হবে যতক্ষণ না সমস্ত দৃষ্টান্তগুলি সর্বজনীন সর্বশেষ কী না পেয়ে।
একাধিক মাইক্রোগেটওয়ে দৃষ্টান্তগুলি বিদ্যমান এমন ক্ষেত্রে, পাবলিক কী ল্যাগের ফলে কখনও কখনও স্থিতি 403 এর সাথে অন্তর্বর্তী রানটাইম ত্রুটি দেখা দেয়, কারণ টোকেন বৈধতা একটি উদাহরণে চলে যায়, তবে সমস্ত দৃষ্টান্ত রিফ্রেশ না হওয়া পর্যন্ত অন্য কোনও উদাহরণে ব্যর্থ হয়।
সংস্করণ ৩.১..6 থেকে শুরু করে, rotatekey
কমান্ডে একটি নতুন পতাকা আপনাকে নতুন ব্যক্তিগত কী কার্যকর হওয়ার জন্য একটি বিলম্ব নির্দিষ্ট করতে দেয়, সমস্ত মাইক্রোগেটওয়ে দৃষ্টান্তগুলিকে সতেজ হতে এবং নতুন পাবলিক কী গ্রহণ করার জন্য সময় দেয়। নতুন পতাকাটি --nbf
, যার অর্থ "আগে নয়"। এই পতাকাটি একটি পূর্ণসংখ্যার মান নেয়, বিলম্ব করতে কয়েক মিনিটের সংখ্যা।
নিম্নলিখিত উদাহরণে, বিলম্ব 15 মিনিটে সেট করা আছে:
edgemicro rotatekey -o docs -e test \ -k 27ee39567c75e4567a66236cbd4e86d1cc93df6481454301bd5fac4d3497fcbb \ -s 4618b0008a6185d7327ebf53bee3c50282ccf45a3cceb1ed9828bfbcf1148b47 \ --nbf 15
নোট করুন যে একটি ভাল অনুশীলন হ'ল config_change_poll_internal
কনফিগারেশন সেটিংয়ের চেয়ে বেশি বিলম্ব সেট করা, যা ডিফল্টরূপে 10 মিনিট। এডজেমিক্রো বৈশিষ্ট্যগুলিও দেখুন।
ফিল্টারিং ডাউনলোড প্রক্সি
ডিফল্টরূপে, এজ মাইক্রোগেটওয়ে আপনার এজ সংস্থার সমস্ত প্রক্সি ডাউনলোড করে যা নামকরণের উপসর্গ "এডজেমিক্রো_" দিয়ে শুরু হয়। আপনি এই ডিফল্টটি এমন প্রক্সিগুলি ডাউনলোড করতে পরিবর্তন করতে পারেন যার নামগুলি একটি প্যাটার্নের সাথে মেলে।
- আপনার এজ মাইক্রো কনফিগার ফাইলটি খুলুন:
~/.edgemicro/org-env-config.yaml
- EGE_CONFIG এর অধীনে প্রক্সিপ্যাটার্ন উপাদান যুক্ত করুন। উদাহরণস্বরূপ, নিম্নলিখিত প্যাটার্নটি এডজেমিক্রো_ফু, এডেমিক্রো_ফাস্ট এবং এডজেমিক্রো_ফিরস্টের মতো প্রক্সিগুলি ডাউনলোড করবে।
edge_config: … proxyPattern: edgemicro_f*
এপিআই প্রক্সি ছাড়াই পণ্য নির্দিষ্ট করা
অ্যাপিগি প্রান্তে, আপনি এমন একটি এপিআই পণ্য তৈরি করতে পারেন যাতে কোনও এপিআই প্রক্সি থাকে না। এই পণ্য কনফিগারেশনটি সেই পণ্যটির সাথে যুক্ত একটি এপিআই কীকে আপনার সংস্থায় মোতায়েন করা কোনও প্রক্সি দিয়ে কাজ করার অনুমতি দেয়। সংস্করণ 2.5.4 হিসাবে, এজ মাইক্রোগেটওয়ে এই পণ্য কনফিগারেশনটিকে সমর্থন করে।
ডিবাগিং এবং সমস্যা সমাধান
একটি ডিবাগারের সাথে সংযোগ স্থাপন
আপনি নোড-ইনস্পেক্টর হিসাবে একটি ডিবাগার দিয়ে এজ মাইক্রোগেটওয়ে চালাতে পারেন। এটি কাস্টম প্লাগইনগুলির সমস্যা সমাধানের জন্য এবং ডিবাগ করার জন্য দরকারী।
- ডিবাগ মোডে এজ মাইক্রোগেটওয়ে পুনরায় চালু করুন। এটি করতে,
start
কমান্ডের শুরুতেDEBUG=*
যুক্ত করুন:DEBUG=* edgemicro start -o $ORG -e $ENV -k $KEY -s $SECRET
কোনও ফাইলে ডিবাগ আউটপুট সরাসরি করতে, আপনি এই কমান্ডটি ব্যবহার করতে পারেন:
export DEBUG=* nohup edgemicro start \ -o $ORG -e $ENV -k $KEY -s $SECRET 2>&1 | tee /tmp/file.log
- আপনার ডিবাগারটি শুরু করুন এবং ডিবাগিং প্রক্রিয়াটির জন্য পোর্ট নম্বরটি শুনতে এটি সেট করুন।
- আপনি এখন এজ মাইক্রোগেটওয়ে কোড, ব্রেকপয়েন্টগুলি সেট করতে, এক্সপ্রেশনগুলি দেখতে এবং আরও অনেক কিছু দিয়ে পদক্ষেপ নিতে পারেন।
আপনি ডিবাগ মোড সম্পর্কিত স্ট্যান্ডার্ড নোড.জেএস ফ্ল্যাগগুলি নির্দিষ্ট করতে পারেন। উদাহরণস্বরূপ, --nolazy
অ্যাসিঙ্ক্রোনাস কোড ডিবাগিংয়ে সহায়তা করে।
লগ ফাইলগুলি পরীক্ষা করা হচ্ছে
আপনার যদি সমস্যা হয় তবে কার্যকরকরণের বিশদ এবং ত্রুটির তথ্যের জন্য লগ ফাইলগুলি পরীক্ষা করতে ভুলবেন না। বিশদের জন্য, লগ ফাইলগুলি পরিচালনা করা দেখুন।
এপিআই কী সুরক্ষা ব্যবহার করে
এপিআই কীগুলি মাইক্রোগেটওয়ে প্রান্তে অনুরোধ করার জন্য ক্লায়েন্টদের প্রমাণীকরণের জন্য একটি সাধারণ প্রক্রিয়া সরবরাহ করে। আপনি একটি এপিজি এজ প্রোডাক্ট থেকে গ্রাহক কী (যাকে ক্লায়েন্ট আইডিও বলা হয়) মানটি অনুলিপি করে একটি এপিআই কী পেতে পারেন যা এজ মাইক্রোগেটওয়ে প্রমাণীকরণ প্রক্সি অন্তর্ভুক্ত করে।
কীগুলির ক্যাশে
এপিআই কীগুলি বহনকারী টোকেনের জন্য বিনিময় করা হয়, যা ক্যাশে করা হয়। আপনি Cache-Control: no-cache
।
একটি এপিআই কী ব্যবহার করে
আপনি একটি এপিআই অনুরোধে ক্যোয়ারী প্যারামিটার হিসাবে বা শিরোনামে এপিআই কীটি পাস করতে পারেন। ডিফল্টরূপে, শিরোনাম এবং ক্যোয়ারী প্যারাম নাম উভয়ই x-api-key
।
ক্যোয়ারী প্যারামিটার উদাহরণ:
curl http://localhost:8000/foobar?x-api-key=JG616Gjz7xs4t0dvpvVsGdI49G34xGsz
হেডার উদাহরণ:
curl http://localhost:8000/foobar -H "x-api-key:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"
এপিআই কী নামটি কনফিগার করছে
ডিফল্টরূপে, x-api-key
হ'ল এপিআই কী শিরোনাম এবং ক্যোয়ারী প্যারামিটারের জন্য ব্যবহৃত নাম। কনফিগারেশন পরিবর্তন করার ক্ষেত্রে আপনি কনফিগারেশন ফাইলে এই ডিফল্টটি পরিবর্তন করতে পারেন। উদাহরণস্বরূপ, নামটি অ্যাপিকে পরিবর্তন করতে:
oauth: allowNoAuthorization: false allowInvalidAuthorization: false api-key-header: apiKey
এই উদাহরণে, ক্যোয়ারী প্যারামিটার এবং শিরোনামের নাম উভয়ই apiKey
পরিবর্তন করা হয়েছে। x-api-key
নামটি আর কোনও ক্ষেত্রে কাজ করবে না। কনফিগারেশন পরিবর্তন করাও দেখুন।
যেমন:
curl http://localhost:8000/foobar -H "apiKey:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"
প্রক্সি অনুরোধগুলি সহ এপিআই কীগুলি ব্যবহার করার বিষয়ে আরও তথ্যের জন্য, সিকিউর এজ মাইক্রোগেটওয়ে দেখুন।
আপস্ট্রিম প্রতিক্রিয়া কোড সক্ষম করুন
ডিফল্টরূপে, oauth
প্লাগইন যদি প্রতিক্রিয়াটি 200 স্থিতি না হয় তবে কেবল 4xx ত্রুটি স্থিতি কোডগুলি ফেরত দেয়। আপনি এই আচরণটি পরিবর্তন করতে পারেন যাতে এটি সর্বদা ত্রুটির উপর নির্ভর করে সঠিক 4xx বা 5xx কোডটি দেয়।
এই বৈশিষ্ট্যটি সক্ষম করতে, oauth.useUpstreamResponse: true
সম্পত্তি যুক্ত করুন। যেমন:
oauth: allowNoAuthorization: false allowInvalidAuthorization: false gracePeriod: 10 useUpstreamResponse: true
OAuth2 টোকেন সুরক্ষা ব্যবহার করে
এই বিভাগটি কীভাবে OAuth2 অ্যাক্সেস টোকেন এবং রিফ্রেশ টোকেন পাবেন তা ব্যাখ্যা করে। অ্যাক্সেস টোকেনগুলি মাইক্রোগেটওয়ের মাধ্যমে সুরক্ষিত এপিআই কলগুলি তৈরি করতে ব্যবহৃত হয়। রিফ্রেশ টোকেনগুলি নতুন অ্যাক্সেস টোকেন পেতে ব্যবহৃত হয়।
কীভাবে অ্যাক্সেস টোকেন পাবেন
এই বিভাগটি অ্যাক্সেস টোকেন পেতে কীভাবে edgemicro-auth
প্রক্সি ব্যবহার করবেন তা ব্যাখ্যা করে।
আপনি edgemicro token
সিএলআই কমান্ড ব্যবহার করে একটি অ্যাক্সেস টোকেনও পেতে পারেন। সিএলআই সম্পর্কিত বিশদগুলির জন্য, টোকেনগুলি পরিচালনা করা দেখুন।
এপিআই 1: বডি প্যারামিটার হিসাবে শংসাপত্রগুলি প্রেরণ করুন
আপনার org এবং পরিবেশের নামগুলি ইউআরএল -এ প্রতিস্থাপন করুন এবং ক্লায়েন্ট_আইডি এবং ক্লায়েন্ট_সেক্রেট বডি প্যারামিটারগুলির জন্য অ্যাপিগি প্রান্তে একটি বিকাশকারী অ্যাপ্লিকেশন থেকে প্রাপ্ত গ্রাহক আইডি এবং গ্রাহক গোপন মানগুলি প্রতিস্থাপন করুন:
curl -i -X POST "http://<org>-<test>.apigee.net/edgemicro-auth/token" \ -d '{"grant_type": "client_credentials", "client_id": "your_client_id", \ "client_secret": "your_client_secret"}' -H "Content-Type: application/json"
এপিআই 2: একটি বেসিক এথ শিরোনামে শংসাপত্রগুলি প্রেরণ করুন
বেসিক প্রমাণীকরণ শিরোনাম হিসাবে ক্লায়েন্টের শংসাপত্রগুলি এবং ফর্ম প্যারামিটার হিসাবে grant_type
প্রেরণ করুন। এই কমান্ড ফর্মটি আরএফসি 6749 এও আলোচনা করা হয়েছে: ওএউথ 2.0 অনুমোদনের কাঠামো ।
http://<org>-<test>.apigee.net/edgemicro-auth/token -v -u your_client_id:your_client_secret \ -d 'grant_type=client_credentials' -H "Content-Type: application/x-www-form-urlencoded"
নমুনা আউটপুট
এপিআই একটি জেএসএন প্রতিক্রিয়া দেয়। নোট করুন যেtoken
এবং access_token
বৈশিষ্ট্যগুলির মধ্যে কোনও পার্থক্য নেই। আপনি যেকোনো একটি ব্যবহার করতে পারেন। নোট করুন যে expires_in
হ'ল সেকেন্ডে নির্দিষ্ট একটি পূর্ণসংখ্যার মান। { "token": "eyJraWQiOiIxIiwidHlwIjoi", "access_token": "eyJraWQiOiIxIiwid", "token_type": "bearer", "expires_in": 1799 }
কিভাবে একটি রিফ্রেশ টোকেন পাবেন
একটি রিফ্রেশ টোকেন পেতে, edgemicro-auth
প্রক্সির /token
শেষ পয়েন্টে একটি এপিআই কল করুন। আপনাকে অবশ্যই password
অনুদান প্রকারের সাথে এই এপিআই কল করতে হবে। নিম্নলিখিত পদক্ষেপগুলি প্রক্রিয়াটি দিয়ে চলে।
-
/token
এপিআই দিয়ে একটি অ্যাক্সেস এবং রিফ্রেশ টোকেন পান। নোট করুন যে অনুদানের ধরণটিpassword
:curl -X POST \ https://your_organization-your_environment.apigee.net/edgemicro-auth/token \ -H 'Content-Type: application/json' \ -d '{ "client_id":"mpK6l1Bx9oE5zLdifoDbF931TDnDtLq", "client_secret":"bUdDcFgv3nXffnU", "grant_type":"password", "username":"mpK6lBx9RoE5LiffoDbpF931TDnDtLq", "password":"bUdD2FvnMsXffnU" }'
এপিআই একটি অ্যাক্সেস টোকেন এবং একটি রিফ্রেশ টোকেন দেয়। প্রতিক্রিয়া এটির মতো দেখাচ্ছে। নোট করুন যে
expires_in
পূর্ণসংখ্যার মানগুলি এবং সেকেন্ডে নির্দিষ্ট করা হয়।{ "token": "your-access-token", "access_token": "your-access-token", "token_type": "bearer", "expires_in": 108, "refresh_token": "your-refresh-token", "refresh_token_expires_in": 431, "refresh_token_issued_at": "1562087304302", "refresh_token_status": "approved" }
- আপনি এখন একই এপিআইয়ের
/refresh
এন্ডপয়েন্টে কল করে একটি নতুন অ্যাক্সেস টোকেন পেতে রিফ্রেশ টোকেন ব্যবহার করতে পারেন। যেমন:curl -X POST \ https://willwitman-test.apigee.net/edgemicro-auth/refresh \ -H 'Content-Type: application/json' \ -d '{ "client_id":"mpK6l1Bx9RoE5zLifoDbpF931TDnDtLq", "client_secret":"bUdDc2Fv3nMXffnU", "grant_type":"refresh_token", "refresh_token":"your-refresh-token" }'
এপিআই একটি নতুন অ্যাক্সেস টোকেন দেয়। প্রতিক্রিয়া এটির মতো দেখাচ্ছে:
{ "token": "your-new-access-token" }
চিরকাল পর্যবেক্ষণ
চিরকালের জন্য একটি নোড.জেএস সরঞ্জাম যা প্রক্রিয়াটি নীচে চলে যাওয়ার ক্ষেত্রে বা কোনও ত্রুটি থাকলে স্বয়ংক্রিয়ভাবে একটি নোড.জেএস অ্যাপ্লিকেশন পুনরায় চালু করে। এজ মাইক্রোগেটওয়ের চিরকাল রয়েছে J জসন ফাইল যা আপনি কতবার এবং কোন অন্তরগুলির সাথে মাইক্রোগেটওয়ে পুনরায় চালু করা উচিত তা নিয়ন্ত্রণ করতে কনফিগার করতে পারেন। এই ফাইলটি চিরকালের জন্য একটি চিরকাল পরিষেবা কনফিগার করে যা চিরকালের জন্য প্রোগ্রামভাবে পরিচালনা করে।
আপনি এজ মাইক্রোগেটওয়ে রুট ইনস্টল ডিরেক্টরিতে চিরকালের জন্য JSON ফাইলটি খুঁজে পেতে পারেন। এজ মাইক্রোগেটওয়ে কোথায় ইনস্টল করা আছে দেখুন। কনফিগারেশন বিকল্পগুলির বিশদগুলির জন্য, চিরকালীন-মনিটর ডকুমেন্টেশন দেখুন।
edgemicro forever
কমান্ডে এমন পতাকা অন্তর্ভুক্ত রয়েছে যা আপনাকে forever.json
-f
অবস্থান নির্দিষ্ট করতে দেয় -a
যেমন:
edgemicro forever -f ~/mydir/forever.json -a start
আরও তথ্যের জন্য, সিএলআই রেফারেন্সে চিরকাল পর্যবেক্ষণ দেখুন।
একটি কনফিগার ফাইল শেষ পয়েন্ট নির্দিষ্ট করা
আপনি যদি একাধিক প্রান্তের মাইক্রোগেটওয়ে উদাহরণগুলি চালান তবে আপনি কোনও একক অবস্থান থেকে তাদের কনফিগারেশনগুলি পরিচালনা করতে চাইতে পারেন। আপনি এইচটিটিপি এন্ডপয়েন্ট নির্দিষ্ট করে এটি করতে পারেন যেখানে এজ মাইক্রো তার কনফিগারেশন ফাইলটি ডাউনলোড করতে পারে। আপনি যখন -ইউ পতাকাটি ব্যবহার করে এজ মাইক্রো শুরু করেন আপনি এই শেষ পয়েন্টটি নির্দিষ্ট করতে পারেন।
যেমন:
edgemicro start -o jdoe -e test -u http://mylocalserver/mgconfig -k public_key -s secret_key
যেখানে এমজি কনফিগ এন্ডপয়েন্টটি আপনার কনফিগারেশন ফাইলের সামগ্রীগুলি ফেরত দেয়। এটি সেই ফাইল যা ডিফল্টরূপে ~/.edgemicro
এ অবস্থিত এবং এর নামকরণ কনভেনশন রয়েছে: org-env-config.yaml
।
টিসিপি সংযোগ ডেটা বাফারিং অক্ষম করা
আপনি এজ মাইক্রোগেটওয়ে দ্বারা ব্যবহৃত টিসিপি সংযোগগুলির জন্য ডেটা বাফারিং অক্ষম করতে nodelay
কনফিগারেশন বৈশিষ্ট্যটি ব্যবহার করতে পারেন।
ডিফল্টরূপে টিসিপি সংযোগগুলি এটি পাঠানোর আগে বাফার ডেটা বাফার করতে নাগলে অ্যালগরিদম ব্যবহার করে। nodelay
true
সেট করা, এই আচরণটি অক্ষম করে (ডেটা অবিলম্বে socket.write()
বলা হয় ডেটা অবিলম্বে ডেটা বন্ধ করে দেবে)। আরও তথ্যের জন্য নোড.জেএস ডকুমেন্টেশনও দেখুন।
nodelay
সক্ষম করতে, নিম্নলিখিত হিসাবে এজ মাইক্রো কনফিগার ফাইলটি সম্পাদনা করুন:
edgemicro: nodelay: true port: 8000 max_connections: 1000 config_change_poll_interval: 600 logging: level: error dir: /var/tmp stats_log_interval: 60 rotate_interval: 24
স্ট্যান্ডেলোন মোডে এজ মাইক্রোগেটওয়ে চলমান
আপনি যে কোনও অ্যাপিগি প্রান্ত নির্ভরতা থেকে সম্পূর্ণ সংযোগ বিচ্ছিন্ন প্রান্তটি চালাতে পারেন। স্ট্যান্ডেলোন মোড নামে পরিচিত এই দৃশ্যটি আপনাকে কোনও ইন্টারনেট সংযোগ ছাড়াই মাইক্রোগেটওয়ে চালাতে এবং পরীক্ষা করতে দেয়।
স্ট্যান্ডেলোন মোডে, নিম্নলিখিত বৈশিষ্ট্যগুলি কাজ করে না, কারণ এপিগি এজের সাথে তাদের সংযোগ প্রয়োজন:
- ওআউথ এবং এপিআই কী
- কোটা
- বিশ্লেষণ
অন্যদিকে, কাস্টম প্লাগইনস এবং স্পাইক গ্রেপ্তার সাধারণত কাজ করে, কারণ এপিগি এজের সাথে তাদের সংযোগের প্রয়োজন হয় না। এছাড়াও, extauth
নামে একটি নতুন প্লাগইন আপনাকে স্ট্যান্ডেলোন মোডে থাকাকালীন জেডব্লিউটি সহ মাইক্রোগেটওয়েতে এপিআই কলগুলি অনুমোদিত করতে দেয়।
গেটওয়ে কনফিগার এবং শুরু
স্ট্যান্ডেলোন মোডে এজ মাইক্রোগেটওয়ে চালাতে:
- নিম্নরূপ হিসাবে নামকরণ করা একটি কনফিগারেশন ফাইল তৈরি করুন:
$HOME/.edgemicro/ $ORG
-
$ENV -config.yamlযেমন:
vi $HOME/.edgemicro/foo-bar-config.yaml
- ফাইলে নিম্নলিখিত কোড পেস্ট করুন:
edgemicro: port: 8000 max_connections: 1000 config_change_poll_interval: 600 logging: level: error dir: /var/tmp stats_log_interval: 60 rotate_interval: 24 plugins: sequence: - extauth - spikearrest headers: x-forwarded-for: true x-forwarded-host: true x-request-id: true x-response-time: true via: true extauth: publickey_url: https://www.googleapis.com/oauth2/v1/certs spikearrest: timeUnit: second allow: 10 buffersize: 0
- "1" মান সহ নিম্নলিখিত পরিবেশের পরিবর্তনশীল রফতানি করুন:
export EDGEMICRO_LOCAL=1
- নিম্নলিখিত
start
কমান্ডটি সম্পাদন করুন, যেখানে আপনি স্থানীয় প্রক্সিটি ইনস্ট্যান্ট করার জন্য মানগুলি সরবরাহ করেন:edgemicro start -o $ORG -e $ENV -a $LOCAL_PROXY_NAME \ -v $LOCAL_PROXY_VERSION -t $TARGET_URL -b $BASE_PATH
কোথায়:
- $ORG হ'ল "org" নাম যা আপনি কনফিগারেশন ফাইলের নামটিতে ব্যবহার করেছেন।
- $ENV হ'ল "এনভ" নাম যা আপনি কনফিগারেশন ফাইলের নামটিতে ব্যবহার করেছেন।
- $LOCAL_PROXY_NAME স্থানীয় প্রক্সিটির নাম যা তৈরি করা হবে। আপনি যে কোনও নাম ব্যবহার করতে পারেন।
- $LOCAL_PROXY_VERSION প্রক্সিটির সংস্করণ নম্বর।
- $TARGET_URL হ'ল প্রক্সিটির লক্ষ্যমাত্রার জন্য URL। ( লক্ষ্যটি হ'ল সেই পরিষেবা যা প্রক্সি কল করে))
- $BASE_PATH হ'ল প্রক্সিটির বেস পাথ। এই মানটি অবশ্যই একটি ফরোয়ার্ড স্ল্যাশ দিয়ে শুরু করতে হবে। একটি মূল বেস পাথের জন্য, কেবল একটি ফরোয়ার্ড স্ল্যাশ নির্দিষ্ট করুন; উদাহরণস্বরূপ, "/"।
যেমন:
edgemicro start -o local -e test -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
- কনফিগারেশন পরীক্ষা করুন।
curl http://localhost:8000/echo { "error" : "missing_authorization" }
যেহেতু
extauth
প্লাগইনটিfoo-bar-config.yaml
ফাইলে রয়েছে, আপনি একটি "অনুপস্থিত_আউথোরাইজেশন" ত্রুটি পাবেন। এই প্লাগইনটি একটি জেডব্লিউটি বৈধ করে যা অবশ্যই এপিআই কলের অনুমোদনের শিরোনামে উপস্থিত থাকতে হবে। পরবর্তী বিভাগে, আপনি একটি জেডব্লিউটি পাবেন যা এপিআই কলগুলিকে ত্রুটি ছাড়াই যেতে দেয়।
উদাহরণ: একটি অনুমোদনের টোকেন প্রাপ্তি
নিম্নলিখিত উদাহরণটি দেখায় যে কীভাবে এপিজি এজ ( edgemicro-auth/jwkPublicKeys
) এ এজ মাইক্রোগেটওয়ে জেডব্লিউটি এন্ডপয়েন্ট থেকে জেডব্লিউটি পাওয়া যায়। আপনি যখন এজ মাইক্রোগেটওয়ের একটি স্ট্যান্ডার্ড সেটআপ এবং কনফিগারেশন সম্পাদন করেন তখন এই শেষ পয়েন্টটি মোতায়েন করা হয়। অ্যাপিগি এন্ডপয়েন্ট থেকে জেডব্লিউটি পেতে, আপনাকে প্রথমে স্ট্যান্ডার্ড এজ মাইক্রোগেটওয়ে সেটআপ করতে হবে এবং ইন্টারনেটে সংযুক্ত থাকতে হবে। অ্যাপিগি এন্ডপয়েন্টটি এখানে উদাহরণস্বরূপ কেবল উদ্দেশ্যে ব্যবহৃত হয় এবং প্রয়োজন হয় না। আপনি যদি চান তবে আপনি অন্য জেডব্লিউটি টোকেন এন্ডপয়েন্ট ব্যবহার করতে পারেন। আপনি যদি তা করেন তবে আপনাকে সেই শেষ পয়েন্টের জন্য সরবরাহিত এপিআই ব্যবহার করে জেডব্লিউটি গ্রহণ করতে হবে।
নিম্নলিখিত পদক্ষেপগুলি edgemicro-auth/jwkPublicKeys
শেষ পয়েন্টটি ব্যবহার করে কীভাবে একটি টোকেন পাবেন তা ব্যাখ্যা করে:।
- এপিজি এজে আপনার সংস্থা/পরিবেশে
edgemicro-auth
প্রক্সিটি স্থাপনের জন্য আপনাকে অবশ্যই এজ মাইক্রোগেটওয়ের একটি স্ট্যান্ডার্ড সেটআপ এবং কনফিগারেশন সম্পাদন করতে হবে। আপনি যদি আগে এই পদক্ষেপটি করেন তবে আপনার এটির পুনরাবৃত্তি করার দরকার নেই। - আপনি যদি এপিজি ক্লাউডে এজ মাইক্রোগেটওয়ে স্থাপন করেন তবে আপনাকে অবশ্যই ইন্টারনেটের সাথে সংযুক্ত থাকতে হবে যাতে আপনি এই শেষ পয়েন্ট থেকে একটি জেডাব্লুটি পেতে পারেন।
- এজ মাইক্রোগেটওয়ে বন্ধ করুন:
edgemicro stop
- আপনি পূর্বে তৈরি কনফিগারেশন ফাইলটিতে (
$HOME/.edgemicro
/ org-config.yaml
env , আপনার অ্যাপিগি এজ সংস্থা/পরিবেশেedgemicro-auth/jwkPublicKeys
এন্ডপয়েন্টের কাছেextauth:publickey_url
বৈশিষ্ট্যটি নির্দেশ করুন। যেমন:extauth: publickey_url: 'https://your_org-your_env.apigee.net/edgemicro-auth/jwkPublicKeys'
- আপনি কনফিগার ফাইলের নামটিতে ব্যবহৃত org/ENV নামগুলি ব্যবহার করে আপনি আগে যেমন করেছিলেন তেমন এজ মাইক্রোগেটওয়ে পুনরায় চালু করুন। যেমন:
edgemicro start -o foo -e bar -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
- অনুমোদনের শেষ পয়েন্ট থেকে একটি জেডব্লিউটি টোকেন পান। যেহেতু আপনি
edgemicro-auth/jwkPublicKeys
শেষ পয়েন্টটি ব্যবহার করছেন, আপনি এই সিএলআই কমান্ডটি ব্যবহার করতে পারেন:
আপনি edgemicro token
কমান্ড বা একটি এপিআই ব্যবহার করে এজ মাইক্রোগেটওয়ের জন্য একটি জেডব্লিউটি তৈরি করতে পারেন। যেমন:
edgemicro token get -o your_org -e your_env \ -i G0IAeU864EtBo99NvUbn6Z4CBwVcS2 -s uzHTbwNWvoSmOy
কোথায়:
- your_org হ'ল আপনার অ্যাপিগি সংস্থার নাম যার জন্য আপনি পূর্বে এজ মাইক্রোগেটওয়ে কনফিগার করেছিলেন।
- your_env সংস্থার একটি পরিবেশ।
-
i
বিকল্পটি এমন একটি বিকাশকারী অ্যাপ্লিকেশন থেকে গ্রাহক কী নির্দিষ্ট করে যা এমন একটি পণ্য রয়েছে যাedgemicro-auth
প্রক্সি অন্তর্ভুক্ত করে। -
s
বিকল্পটি এমন একটি বিকাশকারী অ্যাপ্লিকেশন থেকে ভোক্তা গোপনীয়তা নির্দিষ্ট করে যার মধ্যে এমন একটি পণ্য রয়েছে যাedgemicro-auth
প্রক্সি অন্তর্ভুক্ত করে।
এই কমান্ডটি অ্যাপিগি এজকে এমন একটি জেডব্লিউটি তৈরি করতে বলে যা পরে এপিআই কলগুলি যাচাই করতে ব্যবহার করা যেতে পারে।
এছাড়াও একটি টোকেন উত্পন্ন দেখুন।স্ট্যান্ডেলোন কনফিগারেশন পরীক্ষা করুন
কনফিগারেশনটি পরীক্ষা করতে, অনুমোদনের শিরোনামে যুক্ত টোকেন দিয়ে এপিআইকে কল করুন:
curl http://localhost:8000/echo -H "Authorization: Bearer your_token
উদাহরণ:
curl http://localhost:8000/echo -H "Authorization: Bearer eyJraWQiOiIxIiwidHlwIjo...iryF3kwcDWNv7OQ"
উদাহরণ আউটপুট:
{ "headers":{ "user-agent":"curl/7.54.0", "accept":"*/*", "x-api-key":"DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP", "client_received_start_timestamp":"1535134472699", "x-authorization-claims":"eyJhdDbiO...M1OTE5MTA1NDkifQ==", "target_sent_start_timestamp":"1535134472702", "x-request-id":"678e3080-a7ae-11e8-a70f-87ae30db3896.8cc81cb0-a7c9-11e8-a70f-87ae30db3896", "x-forwarded-proto":"http", "x-forwarded-host":"localhost:8000", "host":"mocktarget.apigee.net", "x-cloud-trace-context":"e2ac4fa0112c2d76237e5473714f1c85/1746478453618419513", "via":"1.1 localhost, 1.1 google", "x-forwarded-for":"::1, 216.98.205.223, 35.227.194.212", "connection":"Keep-Alive" }, "method":"GET", "url":"/", "body":"" }
স্থানীয় প্রক্সি মোড ব্যবহার করে
স্থানীয় প্রক্সি মোডে, এজ মাইক্রোগেটওয়ের জন্য অ্যাপিগি এজে মোতায়েন করার জন্য কোনও মাইক্রোগেটওয়ে-সচেতন প্রক্সি প্রয়োজন হয় না। পরিবর্তে, আপনি মাইক্রোগেটওয়ে শুরু করার সময় একটি স্থানীয় প্রক্সি নাম, বেসপাথ এবং টার্গেট ইউআরএল সরবরাহ করে একটি "স্থানীয় প্রক্সি" কনফিগার করেন। মাইক্রোগেটওয়েতে এপিআই কলগুলি তখন স্থানীয় প্রক্সির টার্গেট ইউআরএলে প্রেরণ করা হয়। অন্যান্য সমস্ত ক্ষেত্রে, স্থানীয় প্রক্সি মোড তার স্বাভাবিক মোডে এজ মাইক্রোগেটওয়ে চলমান হিসাবে ঠিক একই কাজ করে। প্রমাণীকরণ একই কাজ করে, যেমন স্পাইক গ্রেপ্তার এবং কোটা প্রয়োগ, কাস্টম প্লাগইন এবং আরও অনেক কিছু করে।
কেস এবং উদাহরণ ব্যবহার করুন
স্থানীয় প্রক্সি মোডটি কার্যকর যখন আপনাকে কেবল একটি প্রান্ত মাইক্রোগেটওয়ে উদাহরণের সাথে একটি একক প্রক্সি সংযুক্ত করতে হবে। উদাহরণস্বরূপ, আপনি সিডিকার প্রক্সি হিসাবে কুবারনেটেসে এজ মাইক্রোগেটওয়েতে ইনজেকশন করতে পারেন, যেখানে একটি মাইক্রোগেটওয়ে এবং একটি পরিষেবা প্রতিটি একক পোডে চালিত হয় এবং যেখানে মাইক্রোগেটওয়ে ট্র্যাফিককে তার সহযোগী পরিষেবাতে এবং থেকে পরিচালনা করে। নিম্নলিখিত চিত্রটি এই আর্কিটেকচারটিকে চিত্রিত করে যেখানে এজ মাইক্রোগেটওয়ে একটি কুবারনেটস ক্লাস্টারে সিডিকার প্রক্সি হিসাবে কাজ করে। প্রতিটি মাইক্রোগেটওয়ে উদাহরণ কেবল তার সহযোগী পরিষেবায় একক প্রান্তের সাথে কথা বলে:
আর্কিটেকচারের এই স্টাইলের একটি সুবিধা হ'ল এজ মাইক্রোগেটওয়ে একটি কুবারনেটস ক্লাস্টার হিসাবে একটি ধারক পরিবেশে মোতায়েন করা পৃথক পরিষেবার জন্য এপিআই পরিচালনা সরবরাহ করে।
স্থানীয় প্রক্সি মোড কনফিগার করা
স্থানীয় প্রক্সি মোডে চালানোর জন্য এজ মাইক্রোগেটওয়ে কনফিগার করতে, এই পদক্ষেপগুলি অনুসরণ করুন:
- আপনার স্থানীয় কনফিগারেশন পরিবেশ সেট আপ করতে
edgemicro init
চালান, ঠিক যেমন আপনি একটি সাধারণ প্রান্তের মাইক্রোগেটওয়ে সেটআপে চান। এজ মাইক্রোগেটওয়ে কনফিগার করুন । -
edgemicro configure
চালান, যেমন আপনি একটি সাধারণ এজ মাইক্রোগেটওয়ে সেটআপ পদ্ধতিতে চান। যেমন:edgemicro configure -o your_org -e your_env -u your_apigee_username
এই কমান্ডটি এজমিক্রো-এথ নীতিটি প্রান্তে স্থাপন করে এবং একটি কী এবং গোপনীয়তা দেয় যা আপনাকে মাইক্রোগেটওয়ে শুরু করতে হবে। আপনার যদি সাহায্যের প্রয়োজন হয় তবে এজ মাইক্রোগেটওয়ে কনফিগার করুন।
- অ্যাপিগি এজে, একটি এপিআই পণ্য তৈরি করুন এবং নিম্নলিখিত বাধ্যতামূলক কনফিগারেশন প্রয়োজনীয়তা সহ (আপনি নিজের ইচ্ছামত অন্যান্য সমস্ত কনফিগারেশন পরিচালনা করতে পারেন):
- আপনাকে অবশ্যই পণ্যটিতে এডজেমিক্রো-এথ প্রক্সি যুক্ত করতে হবে। আপনি যখন
edgemicro configure
চালান তখন এই প্রক্সিটি স্বয়ংক্রিয়ভাবে মোতায়েন করা হয়েছিল। - আপনাকে অবশ্যই একটি সংস্থান পথ সরবরাহ করতে হবে। অ্যাপিগি পণ্যটিতে এই পথটি যুক্ত করার পরামর্শ দেয়:
/**
। আরও জানতে, রিসোর্স পাথের আচরণটি কনফিগার করা দেখুন। এজ ডকুমেন্টেশনে এপিআই পণ্যগুলিও তৈরি করুন দেখুন।
- আপনাকে অবশ্যই পণ্যটিতে এডজেমিক্রো-এথ প্রক্সি যুক্ত করতে হবে। আপনি যখন
অ্যাপিগি প্রান্তে, একটি বিকাশকারী তৈরি করুন, বা আপনি যদি চান তবে একটি বিদ্যমান বিকাশকারী ব্যবহার করতে পারেন। সাহায্যের জন্য, এজ ম্যানেজমেন্ট ইউআই ব্যবহার করে বিকাশকারীদের যুক্ত করা দেখুন।
- অ্যাপিগি প্রান্তে, একটি বিকাশকারী অ্যাপ্লিকেশন তৈরি করুন। আপনি অবশ্যই অ্যাপটিতে তৈরি করা এপিআই পণ্য যুক্ত করতে হবে। সাহায্যের জন্য, এজ ম্যানেজমেন্ট ইউআই -তে একটি অ্যাপ্লিকেশন নিবন্ধকরণ দেখুন।
- যে মেশিনে এজ মাইক্রোগেটওয়ে ইনস্টল করা আছে সেখানে "1" মান সহ নিম্নলিখিত পরিবেশের পরিবর্তনশীলটি রফতানি করুন।
export EDGEMICRO_LOCAL_PROXY=1
- নিম্নলিখিত
start
কমান্ডটি কার্যকর করুন:edgemicro start -o your_org -e your_environment -k your_key -s your_secret \ -a local_proxy_name -v local_proxy_version -t target_url -b base_path
কোথায়:
- your_org আপনার অ্যাপিগি সংস্থা।
- your_environment আপনার সংস্থার একটি পরিবেশ।
- your_key হ'ল সেই কী যা আপনি
edgemicro configure
চালানোর সময় ফিরে এসেছিলেন। - your_secret হ'ল গোপনীয়তা যা আপনি
edgemicro configure
চালানোর সময় ফিরে এসেছিলেন। - local_proxy_name হ'ল স্থানীয় প্রক্সিটির নাম যা তৈরি করা হবে।
- local_proxy_version প্রক্সিটির সংস্করণ নম্বর।
- target_url হ'ল প্রক্সিটির লক্ষ্যমাত্রার জন্য URL (প্রক্সি যে পরিষেবাটি কল করবে)।
- base_path হ'ল প্রক্সির বেস পাথ। এই মানটি অবশ্যই একটি ফরোয়ার্ড স্ল্যাশ দিয়ে শুরু করতে হবে। একটি মূল বেস পাথের জন্য, কেবল একটি ফরোয়ার্ড স্ল্যাশ নির্দিষ্ট করুন; উদাহরণস্বরূপ, "/"।
যেমন:
edgemicro start -o your_org -e test -k 7eb6aae644cbc09035a...d2eae46a6c095f \ -s e16e7b1f5d5e24df...ec29d409a2df853163a -a proxy1 -v 1 \ -t http://mocktarget.apigee.net -b /echo
কনফিগারেশন পরীক্ষা করা হচ্ছে
আপনি প্রক্সি এন্ডপয়েন্টে কল করে স্থানীয় প্রক্সি কনফিগারেশনটি পরীক্ষা করতে পারেন। উদাহরণস্বরূপ, আপনি যদি /echo
একটি বেসপাথ নির্দিষ্ট করে থাকেন তবে আপনি প্রক্সিটিকে নিম্নরূপে কল করতে পারেন:
curl http://localhost:8000/echo { "error" : "missing_authorization", "error_description" : "Missing Authorization header" }
এই প্রাথমিক এপিআই কলটি একটি ত্রুটি তৈরি করেছে কারণ আপনি কোনও বৈধ এপিআই কী সরবরাহ করেন নি। আপনি আগে তৈরি করা বিকাশকারী অ্যাপ্লিকেশনটিতে কীটি খুঁজে পেতে পারেন। প্রান্তটি ইউআইতে অ্যাপ্লিকেশনটি খুলুন, গ্রাহক কীটি অনুলিপি করুন এবং নিম্নলিখিত কীটি ব্যবহার করুন:
curl http://localhost:8000/echo -H 'x-api-key:your_api_key'
যেমন:
curl http://localhost:8000/echo -H "x-api-key:DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP"
উদাহরণ আউটপুট:
{ "headers":{ "user-agent":"curl/7.54.0", "accept":"*/*", "x-api-key":"DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP", "client_received_start_timestamp":"1535134472699", "x-authorization-claims":"eyJhdWQiOi...TQ0YmUtOWNlOS05YzM1OTE5MTA1NDkifQ==", "target_sent_start_timestamp":"1535134472702", "x-request-id":"678e3080-a7ae-11e8-a70f-87ae30db3896.8cc81cb0-a7c9-11e8-a70f-87ae30db3896", "x-forwarded-proto":"http", "x-forwarded-host":"localhost:8000", "host":"mocktarget.apigee.net", "x-cloud-trace-context":"e2ac4fa0112c2d76237e5473714f1c85/1746478453618419513", "via":"1.1 localhost, 1.1 google", "x-forwarded-for":"::1, 216.98.205.223, 35.227.194.212", "connection":"Keep-Alive" }, "method":"GET", "url":"/", "body":"" }
সিঙ্ক্রোনাইজার ব্যবহার করে
এই বিভাগটি কীভাবে সিঙ্ক্রোনাইজারটি ব্যবহার করবেন তা ব্যাখ্যা করে, একটি al চ্ছিক বৈশিষ্ট্য যা এপিজি এজ থেকে কনফিগারেশন ডেটা পুনরুদ্ধার করতে এবং এটি স্থানীয় রেডিস ডাটাবেসে লিখতে অনুমতি দিয়ে এজ মাইক্রোগটওয়ের স্থিতিস্থাপকতা উন্নত করে। একটি সিঙ্ক্রোনাইজার উদাহরণ চলমান সহ, বিভিন্ন নোডে চলমান অন্যান্য প্রান্তের মাইক্রোগেটওয়ে দৃষ্টান্তগুলি এই ডাটাবেস থেকে সরাসরি তাদের কনফিগারেশনটি পুনরুদ্ধার করতে পারে।
সিঙ্ক্রোনাইজার বৈশিষ্ট্যটি বর্তমানে রেডিস 5.0.x. এর সাথে কাজ করার জন্য সমর্থিত।
সিঙ্ক্রোনাইজার কী?
সিঙ্ক্রোনাইজার এজ মাইক্রোগেটওয়ের জন্য একটি স্তরের স্থিতিস্থাপকতা সরবরাহ করে। এটি নিশ্চিত করতে সহায়তা করে যে এজ মাইক্রোগেটওয়ের প্রতিটি উদাহরণ একই কনফিগারেশন ব্যবহার করে এবং ইন্টারনেট বিঘ্ন ঘটলে এজ মাইক্রোগেটওয়ে উদাহরণগুলি সঠিকভাবে শুরু হতে পারে এবং সঠিকভাবে চালাতে পারে।
ডিফল্টরূপে, এজ মাইক্রোগেটওয়ে দৃষ্টান্তগুলি অবশ্যই এপিআই প্রক্সি এবং এপিআই পণ্য কনফিগারেশনগুলির মতো তাদের কনফিগারেশন ডেটা পুনরুদ্ধার এবং রিফ্রেশ করতে এপিজি এজের সাথে যোগাযোগ করতে সক্ষম হতে হবে। যদি প্রান্তের সাথে ইন্টারনেট সংযোগ ব্যাহত হয় তবে মাইক্রোগেটওয়ে উদাহরণগুলি কাজ চালিয়ে যেতে পারে কারণ সর্বশেষতম কনফিগারেশন ডেটা ক্যাশে করা হয়। যাইহোক, নতুন মাইক্রোগেটওয়ে উদাহরণগুলি একটি পরিষ্কার সংযোগ ছাড়া শুরু করতে পারে না। তদ্ব্যতীত, ইন্টারনেট বিঘ্নের ফলে অন্য কোনও দৃষ্টান্তের সাথে সিঙ্কের বাইরে থাকা কনফিগারেশন তথ্যের সাথে চলমান এক বা একাধিক মাইক্রোগেটওয়ে দৃষ্টান্তের ফলস্বরূপ সম্ভব।
এজ মাইক্রোগেটওয়ে সিঙ্ক্রোনাইজার কনফিগারেশন ডেটা পুনরুদ্ধার করার জন্য এজ মাইক্রোগেটওয়ে দৃষ্টান্তগুলির জন্য একটি বিকল্প ব্যবস্থা সরবরাহ করে যা তাদের এপিআই প্রক্সি ট্র্যাফিকটি শুরু করতে এবং প্রক্রিয়া করতে হবে। কলগুলি থেকে অ্যাপিগি এজগুলিতে পুনরুদ্ধার করা কনফিগারেশন ডেটাগুলির মধ্যে রয়েছে: jwk_public_keys
কল, jwt_public_key
কল, বুটস্ট্র্যাপ কল এবং এপিআই পণ্য কল। প্রান্ত মাইক্রোগেটওয়ে এবং অ্যাপিগি প্রান্তের মধ্যে ইন্টারনেট সংযোগ ব্যাহত হলেও সিঙ্ক্রোনাইজারটি বিভিন্ন নোডে চলমান সমস্ত প্রান্তের মাইক্রোগেটওয়ে দৃষ্টান্তগুলির পক্ষে এটি সম্ভব করে তোলে।
সিঙ্ক্রোনাইজারটি এজ মাইক্রোগেটওয়ের একটি বিশেষভাবে কনফিগার করা উদাহরণ। এর একমাত্র উদ্দেশ্য হ'ল অ্যাপিগি এজ (সময়টি কনফিগারযোগ্য) পোল করা, কনফিগারেশন ডেটা পুনরুদ্ধার করা এবং এটি একটি স্থানীয় রেডিস ডাটাবেসে লিখুন। সিঙ্ক্রোনাইজার উদাহরণ নিজেই এপিআই প্রক্সি ট্র্যাফিক প্রক্রিয়া করতে পারে না। বিভিন্ন নোডে চলমান এজ মাইক্রোগেটওয়ের অন্যান্য দৃষ্টান্তগুলি অ্যাপিগি প্রান্তের পরিবর্তে রেডিস ডাটাবেস থেকে কনফিগারেশন ডেটা পুনরুদ্ধার করতে কনফিগার করা যেতে পারে। যেহেতু সমস্ত মাইক্রোগেটওয়ে দৃষ্টান্তগুলি স্থানীয় ডাটাবেস থেকে তাদের কনফিগারেশন ডেটা টানছে, তারা কোনও ইন্টারনেট বিঘ্ন ঘটলেও এপিআই অনুরোধগুলি শুরু করতে এবং প্রক্রিয়া করতে পারে।
একটি সিঙ্ক্রোনাইজার উদাহরণ কনফিগার করা
আপনি সিঙ্ক্রোনাইজার হিসাবে ব্যবহার করতে চান এমন এজ মাইক্রোগেটওয়ে ইনস্টলেশনটির জন্য org-env /config.yaml
ফাইলটিতে নিম্নলিখিত কনফিগারেশন যুক্ত করুন:
edgemicro: redisHost: host_IP redisPort: host_port redisDb: database_index redisPassword: password edge_config: synchronizerMode: 1 redisBasedConfigCache: true
যেমন:
edgemicro: redisHost: 192.168.4.77 redisPort: 6379 redisDb: 0 redisPassword: codemaster edge_config: synchronizerMode: 1 redisBasedConfigCache: true
অপশন | বর্ণনা |
---|---|
redisHost | হোস্ট যেখানে আপনার রেডিস উদাহরণটি চলছে। ডিফল্ট: 127.0.0.1 |
redisPort | রেডিস উদাহরণ পোর্ট। ডিফল্ট: 6379 |
redisDb | রেডিস ডিবি ব্যবহার করতে। ডিফল্ট: 0 |
redisPassword | আপনার ডাটাবেস পাসওয়ার্ড। |
অবশেষে, কনফিগারেশন ফাইলটি সংরক্ষণ করুন এবং প্রান্ত মাইক্রোগেটওয়ে উদাহরণটি শুরু করুন। এটি পোলিং এপিজি এজ এবং রেডিস ডাটাবেসে ডাউনলোড কনফিগারেশন ডেটা সংরক্ষণ করা শুরু করবে।
নিয়মিত এজ মাইক্রোগেটওয়ে উদাহরণগুলি কনফিগার করা
সিঙ্ক্রোনাইজারটি চলার সাথে সাথে, আপনি নিয়মিত মাইক্রোগেটওয়ে উদাহরণগুলি চালানোর জন্য অতিরিক্ত এজ মাইক্রোগেটওয়ে নোডগুলি কনফিগার করতে পারেন যা এপিআই প্রক্সি ট্র্যাফিক প্রক্রিয়া করে। তবে, আপনি এপিগি এজ থেকে পরিবর্তে রেডিস ডাটাবেস থেকে তাদের কনফিগারেশন ডেটা পেতে এই দৃষ্টান্তগুলি কনফিগার করেন।
প্রতিটি অতিরিক্ত এজ মাইক্রোগেটওয়ে নোডের org-env /config.yaml
ফাইলটিতে নিম্নলিখিত কনফিগারেশন যুক্ত করুন। নোট করুন যে synchronizerMode
সম্পত্তি 0
এ সেট করা আছে। এই সম্পত্তিটি এপিআই প্রক্সি ট্র্যাফিক প্রক্রিয়া করে এমন একটি সাধারণ এজ মাইক্রোগেটওয়ে উদাহরণ হিসাবে পরিচালনা করার জন্য উদাহরণটি সেট করে এবং উদাহরণটি রেডিস ডাটাবেস থেকে তার কনফিগারেশন ডেটা গ্রহণ করবে।
edgemicro: redisHost: host_IP redisPort: host_port redisDb: database_index redisPassword: password edge_config: synchronizerMode: 0 redisBasedConfigCache: true
যেমন:
edgemicro: redisHost: 192.168.4.77 redisPort: 6379 redisDb: 0 redisPassword: codemaster edge_config: synchronizerMode: 0 redisBasedConfigCache: true
কনফিগারেশন বৈশিষ্ট্য
সিঙ্ক্রোনাইজারের ব্যবহার সমর্থন করার জন্য নিম্নলিখিত কনফিগারেশন বৈশিষ্ট্যগুলি যুক্ত করা হয়েছে:
বৈশিষ্ট্য | মূল্যবোধ | বর্ণনা |
---|---|---|
edge_config.synchronizerMode | 0 বা 1 | যদি 0 (ডিফল্ট) এজ মাইক্রোগেটওয়ে তার স্ট্যান্ডার্ড মোডে কাজ করে। যদি 1 হয় তবে সিঙ্ক্রোনাইজার হিসাবে পরিচালনা করার জন্য এজ মাইক্রোগেটওয়ে উদাহরণটি শুরু করুন। এই মোডে, উদাহরণটি অ্যাপিগি এজ থেকে কনফিগারেশন ডেটা টানবে এবং এটি একটি স্থানীয় রেডিস ডাটাবেসে সঞ্চয় করবে। এই উদাহরণটি এপিআই প্রক্সি অনুরোধগুলি প্রক্রিয়া করতে সক্ষম নয়; এর একমাত্র উদ্দেশ্য হ'ল কনফিগারেশন ডেটার জন্য অ্যাপিগি এজকে পোল করা এবং এটি স্থানীয় ডাটাবেসে লিখতে। তারপরে আপনাকে অবশ্যই ডাটাবেস থেকে পড়তে অন্যান্য মাইক্রোগেটওয়ে দৃষ্টান্তগুলি কনফিগার করতে হবে। |
edge_config.redisBasedConfigCache | সত্য বা মিথ্যা | যদি সত্য হয় তবে এজ মাইক্রোগেটওয়ে উদাহরণটি অ্যাপিগি এজ থেকে পরিবর্তে রেডিস ডাটাবেস থেকে তার কনফিগারেশন ডেটা নিয়ে আসে। রেডিস ডাটাবেসটি অবশ্যই একইরকম হতে হবে যা সিঙ্ক্রোনাইজারটি লিখতে কনফিগার করা আছে। যদি রেডিস ডাটাবেসটি অনুপলব্ধ থাকে বা যদি ডাটাবেসটি খালি থাকে তবে মাইক্রোগেটওয়ে তার কনফিগারেশনের জন্য একটি বিদ্যমান cache-config.yaml ফাইলের সন্ধান করে।যদি মিথ্যা (ডিফল্ট) হয় তবে এজ মাইক্রোগেটওয়ে উদাহরণটি যথারীতি অ্যাপিগি এজ থেকে কনফিগারেশন ডেটা নিয়ে আসে। |
edgemicro.config_change_poll_interval | সময়ের ব্যবধান, সেকেন্ডে | অ্যাপিগি এজ থেকে ডেটা টানতে সিঙ্ক্রোনাইজারের জন্য পোলিং অন্তর নির্দিষ্ট করে। |
প্লাগইনগুলির জন্য ইউআরএলগুলি বাদ দিন কনফিগার করা
নির্দিষ্ট ইউআরএলগুলির জন্য প্লাগইনগুলির প্রক্রিয়াকরণ এড়াতে আপনি মাইক্রোগেটওয়ে কনফিগার করতে পারেন। আপনি এই "বাদ" ইউআরএলগুলি বিশ্বব্যাপী (সমস্ত প্লাগইনগুলির জন্য) বা নির্দিষ্ট প্লাগইনগুলির জন্য কনফিগার করতে পারেন।
যেমন:
... edgemicro: ... plugins: excludeUrls: '/hello,/proxy_one' # global exclude urls sequence: - oauth - json2xml - quota json2xml: excludeUrls: '/hello/xml' # plugin level exclude urls ...
এই উদাহরণে, প্লাগইনগুলি পাথ /hello
বা /proxy_one
সাথে আগত এপিআই প্রক্সি কলগুলি প্রক্রিয়া করবে না। এছাড়াও, json2xml
প্লাগইনটি তাদের পথে /hello/xml
সহ এপিআইয়ের জন্য এড়িয়ে যাবে।
পরিবেশের পরিবর্তনশীল মানগুলির সাথে কনফিগারেশন বৈশিষ্ট্যগুলি সেট করা
আপনি কনফিগারেশন ফাইলে ট্যাগ ব্যবহার করে পরিবেশের ভেরিয়েবলগুলি নির্দিষ্ট করতে পারেন। নির্দিষ্ট পরিবেশের পরিবর্তনশীল ট্যাগগুলি প্রকৃত পরিবেশের পরিবর্তনশীল মান দ্বারা প্রতিস্থাপন করা হয়। প্রতিস্থাপনগুলি কেবল মেমরিতে সংরক্ষণ করা হয় এবং মূল কনফিগারেশন বা ক্যাশে ফাইলগুলিতে সংরক্ষণ করা হয় না।
এই উদাহরণে, অ্যাট্রিবিউট key
TARGETS_SSL_CLIENT_KEY
পরিবেশের পরিবর্তনশীল এবং এর মান দ্বারা প্রতিস্থাপন করা হয়।
targets: - ssl: client: key: <E>TARGETS_SSL_CLIENT_KEY</E> cert: <E>TARGETS_SSL_CLIENT_CERT</E> passphrase: <E>TARGETS_SSL_CLIENT_PASSPHRASE</E>
এই উদাহরণে, <n>
ট্যাগটি একটি পূর্ণসংখ্যার মান নির্দেশ করতে ব্যবহৃত হয়। শুধুমাত্র ইতিবাচক পূর্ণসংখ্যা সমর্থিত।
edgemicro: port: <E><n>EMG_PORT</n></E>
এই উদাহরণে, <b>
ট্যাগটি একটি বুলিয়ান (যা সত্য বা মিথ্যা) মান নির্দেশ করতে ব্যবহৃত হয়।
quotas: useRedis: <E><b>EMG_USE_REDIS</b></E>,
আপনি অ্যাপিগি এজ ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান । তথ্য
এজ মাইক্রোগেটওয়ে বনাম 3.2.x
এই বিষয়টি কীভাবে এজ মাইক্রোগেটওয়ে পরিচালনা এবং কনফিগার করতে হবে তা নিয়ে আলোচনা করে।
আপনার যদি ইন্টারনেট সংযোগ থাকে তবে এজ মাইক্রোগেটওয়ে আপগ্রেড করা
এই বিভাগটি কীভাবে এজ মাইক্রোগেটওয়ের একটি বিদ্যমান ইনস্টলেশন আপগ্রেড করবেন তা ব্যাখ্যা করে। আপনি যদি ইন্টারনেট সংযোগ ছাড়াই কাজ করেন, দেখুন আমি কি ইন্টারনেট সংযোগ ছাড়া এজ মাইক্রোগেটওয়ে ইনস্টল করতে পারি? .
Apigee আপনাকে আপনার উৎপাদন পরিবেশ আপগ্রেড করার আগে নতুন সংস্করণের সাথে আপনার বিদ্যমান কনফিগারেশন পরীক্ষা করার পরামর্শ দেয়।
- এজ মাইক্রোগেটওয়ের সর্বশেষ সংস্করণে আপগ্রেড করতে নিম্নলিখিত
npm
কমান্ডটি কার্যকর করুন:npm upgrade edgemicro -g
এজ মাইক্রোগেটওয়ের একটি নির্দিষ্ট সংস্করণ ইনস্টল করতে, আপনাকে ইনস্টল কমান্ডে সংস্করণ নম্বর নির্দিষ্ট করতে হবে। উদাহরণস্বরূপ, সংস্করণ 3.2.3 এ ইনস্টল করতে, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
npm install edgemicro@3.2.3 -g
- সংস্করণ নম্বরটি পরীক্ষা করুন। উদাহরণস্বরূপ, আপনি যদি সংস্করণ 3.2.3 ইনস্টল করেন:
edgemicro --version current nodejs version is v12.5.0 current edgemicro version is 3.2.3
- অবশেষে, এডেমিক্রো-এথ প্রক্সির সর্বশেষ সংস্করণে আপগ্রেড করুন:
edgemicro upgradeauth -o $ORG -e $ENV -u $USERNAME
Making configuration changes
The configuration files you need to know about include:
- Default system configuration file
- Default config file for a newly initialized Edge Microgateway instance
- Dynamic configuration file for running instances
This section discusses these files and what you need to know about changing them.
Default system configuration file
When you install Edge Microgateway, a default system configuration file is placed here:
prefix/lib/node_modules/edgemicro/config/default.yaml
Where prefix is the npm
prefix directory. See Where is Edge Microgateway installed if you can't locate this directory.
If you change the system config file, you must reinitialize, reconfigure, and restart Edge Microgateway:
edgemicro initedgemicro configure [params]
edgemicro start [params]
Default config file for newly initialized Edge Microgateway instances
When you run edgemicro init
, the system config file (described above), default.yaml
, is placed in the ~/.edgemicro
directory.
If you change the config file in ~/.edgemicro
, you must reconfigure and restart Edge Microgateway:
edgemicro stopedgemicro configure [params]
edgemicro start [params]
Dynamic configuration file for running instances
When you run edgemicro configure [params]
, a dynamic configuration file is created in ~/.edgemicro
. The file is named according to this pattern: org - env -config.yaml
, where org and env are your Apigee Edge organization and environment names. You can use this file to make configuration changes, and then reload them with zero-downtime. For example, if you add and configure a plugin, you can reload the configuration without incurring any downtime, as explained below.
If Edge Microgateway is running (zero-downtime option):
- Reload the Edge Microgateway configuration:
edgemicro reload -o $ORG -e $ENV -k $KEY -s $SECRET
Where:
- $ORG is your Edge organization name (you must be an organization administrator).
- $ENV হল আপনার প্রতিষ্ঠানের একটি পরিবেশ (যেমন "পরীক্ষা" বা "প্রোড")।
- $KEY is the key returned previously by the configure command.
- $SECRET is the key returned previously by the configure command.
যেমন
edgemicro reload -o docs -e test -k 701e70ee718ce6dc188...78b6181d000723 \ -s 05c14356e42ed1...4e34ab0cc824
If Edge Microgateway is stopped:
- Restart Edge Microgateway:
edgemicro start -o $ORG -e $ENV -k $KEY -s $SECRET
Where:
- $ORG is your Edge organization name (you must be an organization administrator).
- $ENV is an environment in your organization (such as "test" or "prod").
- $KEY is the key returned previously by the configure command.
- $SECRET is the key returned previously by the configure command.
যেমন:
edgemicro start -o docs -e test -k 701e70ee718ce...b6181d000723 \ -s 05c1435...e34ab0cc824
Here is an example config file. For details about configuration file settings, see Edge Microgateway configuration reference .
edge_config: bootstrap: >- https://edgemicroservices-us-east-1.apigee.net/edgemicro/bootstrap/organization/docs/environment/test jwt_public_key: 'https://docs-test.apigee.net/edgemicro-auth/publicKey' managementUri: 'https://api.enterprise.apigee.com' vaultName: microgateway authUri: 'https://%s-%s.apigee.net/edgemicro-auth' baseUri: >- https://edgemicroservices.apigee.net/edgemicro/%s/organization/%s/environment/%s bootstrapMessage: Please copy the following property to the edge micro agent config keySecretMessage: The following credentials are required to start edge micro products: 'https://docs-test.apigee.net/edgemicro-auth/products' edgemicro: port: 8000 max_connections: 1000 max_connections_hard: 5000 config_change_poll_interval: 600 logging: level: error dir: /var/tmp stats_log_interval: 60 rotate_interval: 24 plugins: sequence: - oauth headers: x-forwarded-for: true x-forwarded-host: true x-request-id: true x-response-time: true via: true oauth: allowNoAuthorization: false allowInvalidAuthorization: false verify_api_key_url: 'https://docs-test.apigee.net/edgemicro-auth/verifyApiKey' analytics: uri: >- https://edgemicroservices-us-east-1.apigee.net/edgemicro/axpublisher/organization/docs/environment/test
Setting environment variables
The command-line interface commands that require values for your Edge organization and environment, and the key and secret needed for starting Edge Microgateway can be stored in these environment variables:
-
EDGEMICRO_ORG
-
EDGEMICRO_ENV
-
EDGEMICRO_KEY
-
EDGEMICRO_SECRET
Setting these variables is optional. If you set them, you do not have to specify their values when you use the Command-Line Interface (CLI) to configure and start Edge Microgateway.
Configuring SSL on the Edge Microgateway server
Watch the following videos to learn about configuring TLS in Apigee Edge Microgateway:
ভিডিও | বর্ণনা |
---|---|
Configure 1-way Northbound TLS | Learn about configuring TLS in Apigee Edge Microgateway. This video provides an Overview of TLS and its importance, introduces TLS in Edge Microgateway, and demonstrates how to configure Northbound One-Way TLS. |
Configure 2-way Northbound TLS | This is the second video on configuring TLS in Apigee Edge Microgateway. This video explains how to configure northbound 2-way TLS. |
Configure 1-way and 2-way Southbound TLS | This third video on configuring TLS in Apigee Edge Microgateway explains how to configure southbound 1-way and 2-way TLS. |
You can configure the Microgateway server to use SSL. For example, with SSL configured, you can call APIs through Edge Microgateway with the "https" protocol, like this:
https://localhost:8000/myapi
To configure SSL on the Microgateway server, follow these steps:
- Generate or obtain an SSL certificate and key using the openssl utility or whichever method you prefer.
- Add the
edgemicro:ssl
attribute to the Edge Microgateway configuration file . For a complete list of options, see the table below. যেমন:
edgemicro: ssl: key: <absolute path to the SSL key file> cert: <absolute path to the SSL cert file> passphrase: admin123 #option added in v2.2.2 rejectUnauthorized: true #option added in v2.2.2 requestCert: true
- এজ মাইক্রোগেটওয়ে পুনরায় চালু করুন। Follow the steps outlined in Making configuration changes depending on which configuration file you edited: the default file or the runtime config file.
Here's an example of the edgemicro
section of the config file, with SSL configured:
edgemicro: port: 8000 max_connections: 1000 max_connections_hard: 5000 logging: level: error dir: /var/tmp stats_log_interval: 60 rotate_interval: 24 plugins: sequence: - oauth ssl: key: /MyHome/SSL/em-ssl-keys/server.key cert: /MyHome/SSL/em-ssl-keys/server.crt passphrase: admin123 #option added in v2.2.2 rejectUnauthorized: true #option added in v2.2.2
Here is a list of all of the supported server options:
অপশন | বর্ণনা |
---|---|
key | Path to a ca.key file (in PEM format). |
cert | Path to a ca.cert file (in PEM format). |
pfx | Path to a pfx file containing the private key, certificate, and CA certs of the client in PFX format. |
passphrase | A string containing the passphrase for the private key or PFX. |
ca | Path to a file containing a list of trusted certificates in PEM format. |
ciphers | A string describing the ciphers to use separated by a ":". |
rejectUnauthorized | If true, the server certificate is verified against the list of supplied CAs. If verification fails, an error is returned. |
secureProtocol | The SSL method to use. For example, SSLv3_method to force SSL to version 3. |
servername | The server name for the SNI (Server Name Indication) TLS extension. |
requestCert | true for 2-way SSL; false for 1-way SSL |
Using client SSL/TLS options
You can configure Edge Microgateway to be a TLS or SSL client when connecting to target endpoints. In the Microgateway configuration file, use the targets element to set SSL/TLS options. Note that you can specify multiple specific targets. A multi-target example is included below.
This example provides settings that will be applied to all hosts:
edgemicro: ... targets: ssl: client: key: /Users/jdoe/nodecellar/twowayssl/ssl/client.key cert: /Users/jdoe/nodecellar/twowayssl/ssl/ca.crt passphrase: admin123 rejectUnauthorized: true
In this example, the settings are applied only to the specified host:
edgemicro: ... targets: - host: 'myserver.example.com' ssl: client: key: /Users/myname/twowayssl/ssl/client.key cert: /Users/myname/twowayssl/ssl/ca.crt passphrase: admin123 rejectUnauthorized: true
Here is an example for TLS:
edgemicro: ... targets: - host: 'myserver.example.com' tls: client: pfx: /Users/myname/twowayssl/ssl/client.pfx passphrase: admin123 rejectUnauthorized: true
In the case where you want to apply TLS/SSL settings to multiple specific targets, you must specify the first host in the configuration as "empty", which enables universal requests, and then specify specific hosts in any order. In this example, the settings are applied to multiple specific hosts:
targets: - host: ## Note that this value must be "empty" ssl: client: key: /Users/myname/twowayssl/ssl/client.key cert: /Users/myname/twowayssl/ssl/ca.crt passphrase: admin123 rejectUnauthorized: true - host: 'myserver1.example.com' ssl: client: key: /Users/myname/twowayssl/ssl/client.key cert: /Users/myname/twowayssl/ssl/ca.crt rejectUnauthorized: true - host: 'myserver2.example.com' ssl: client: key: /Users/myname/twowayssl/ssl/client.key cert: /Users/myname/twowayssl/ssl/ca.crt rejectUnauthorized: true
Here is a list of all of the supported client options:
অপশন | বর্ণনা |
---|---|
pfx | Path to a pfx file containing the private key, certificate, and CA certs of the client in PFX format. |
key | Path to a ca.key file (in PEM format). |
passphrase | A string containing the passphrase for the private key or PFX. |
cert | Path to a ca.cert file (in PEM format). |
ca | Path to a file containing a list of trusted certificates in PEM format. |
ciphers | A string describing the ciphers to use separated by a ":". |
rejectUnauthorized | If true, the server certificate is verified against the list of supplied CAs. If verification fails, an error is returned. |
secureProtocol | The SSL method to use. For example, SSLv3_method to force SSL to version 3. |
servername | The server name for the SNI (Server Name Indication) TLS extension. |
Customizing the edgemicro-auth proxy
By default, Edge Microgateway uses a proxy deployed on Apigee Edge for OAuth2 authentication. This proxy is deployed when you initially run edgemicro configure
. You can change the default configuration of this proxy to add support for custom claims to a JSON Web Token (JWT), configure token expiration, and generate refresh tokens. For details, see the edgemicro-auth page in GitHub.
Using a custom auth service
By default, Edge Microgateway uses a proxy deployed on Apigee Edge for OAuth2 authentication. This proxy is deployed when you initially run edgemicro configure
. By default, this proxy's URL is specified in the Edge Microgateway config file as follows:
authUri: https://myorg-myenv.apigee.net/edgemicro-auth
If you want to use your own custom service to handle authentication, change the authUri
value in the config file to point to your service. For example, you may have a service that uses LDAP to verify identity.
Managing log files
Edge Microgateway logs information about each request and response. Log files provide useful information for debugging and troubleshooting.
Where log files are stored
By default, log files are stored in /var/tmp
.
How to change the default log file directory
The directory where log files are stored is specified in the Edge Microgateway configuration file. See also Making configuration changes .
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 rotate_interval: 24
Change the dir value to specify a different log file directory.
Send logs to the console
You can configure logging so that log information is sent to standard output instead of to a log file. Set the to_console
flag to true as follows:
edgemicro: logging: to_console: true
With this setting, logs will be sent to standard out. Currently, you cannot send logs to both stdout and to a log file.
How to set the logging level
You specify the log level to use in the edgemicro
configuration. For a complete list of log levels and their descriptions, see edgemicro attributes .
For example, the following configuration sets the logging level to debug
:
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: debug dir: /var/tmp stats_log_interval: 60 rotate_interval: 24
How to change log intervals
You can configure these intervals in the Edge Microgateway config file. See also Making configuration changes .
The configurable attributes are:
- stats_log_interval : (default: 60) Interval, in seconds, when the stats record is written to the API log file.
- rotate_interval : (default: 24) Interval, in hours, when log files are rotated. যেমন:
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 rotate_interval: 24
How to relax strict log file permissions
By default, Edge Microgateway generates the application log file ( api-log.log
) with the file permission level set to 0600. This permission level does not allow external applications or users to read the log file. To relax this strict permission level, set logging:disableStrictLogFile
to true
. When this attribute is true
, the log file is created with the file permission set to 0755. If false
or if the attribute is not provided, permission defaults to 0600.
Added in v3.2.3.
যেমন:
edgemicro: logging: disableStrictLogFile: true
Good log file maintenance practices
As log file data accumulates over time, Apigee recommends that you adopt the following practices:
- Because log files can become quite large, be sure that the log file directory has sufficient space. See the following sections Where log files are stored and How to change the default log file directory .
- Either delete or move log files to a separate archive directory at least once a week.
- If your policy is to delete logs, you can use the CLI command
edgemicro log -c
to remove (clean) older logs.
Log file naming convention
Each Edge Microgateway instance produces a log file with a .log
extension. The naming convention for log files is as follows:
edgemicro- HOST_NAME - INSTANCE_ID -api.log
যেমন:
edgemicro-mymachine-local-MTQzNTgNDMxODAyMQ-api.log
About log file contents
যোগ করা হয়েছে: v2.3.3
By default, the logging service omits the JSON of downloaded proxies, products, and the JSON Web Token (JWT). If you wish to output these objects to the console, set the command-line flag DEBUG=*
when you start Edge Microgateway. যেমন:
DEBUG=* edgemicro start -o docs -e test -k abc123 -s xyz456
Contents of the "api" log file
The "api" log file contains detailed information about the flow of requests and responses through Edge Microgateway. The "api" log files are named like this:
edgemicro-mymachine-local-MTQzNjIxOTk0NzY0Nw-api.log
For each request made to Edge Microgateway, four events are captured in the "api" log file:
- Incoming request from the client
- Outgoing request made to the target
- Incoming response from the target
- Outgoing response to the client
Each of these separate entries is represented in a shorthand notation to help make the log files more compact. Here are four sample entries representing each of the four events. In the log file, they look like this (the line numbers are only for reference in the doc, they don't appear in the log file).
(1) 1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0 (2) 1436403888665 info treq m=GET, u=/, h=127.0.0.18080, i=0 (3) 1436403888672 info tres s=200, d=7, i=0 (4) 1436403888676 info res s=200, d=11, i=0
Let's look at them one by one:
1. Sample of incoming request from client:
1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0
- 1436403888651 - Unix date stamp
- info - The logging level. This value depends on context of the transaction and the logging level set in the
edgemicro
configuration. See How to set the logging level . For stats records, the level is set tostats
. Stats records are reported at a regular interval set with thestats_log_interval
configuration. See also How to change log intervals . - req - Identifies the event. In this case, request from the client.
- m - The HTTP verb used in the request.
- u - The part of the URL following the basepath.
- h - The host and port number where Edge Microgateway is listening.
- r - The remote host and port where the client request originated.
- i - The request ID. All four event entries will share this ID. Each request is assigned a unique request ID. Correlating log records by request ID can give valuable insight into the target's latency.
- d - The duration in milliseconds since the request was received by Edge Microgateway. In the example above, the target's response for request 0 was received after 7 milliseconds (line 3), and the response was sent to the client after an additional 4 milliseconds (line 4). In other words, the total request latency was 11 milliseconds, out of which 7 milliseconds were taken by the target and 4 milliseconds by Edge Microgateway itself.
2. Sample of outgoing request made to the target:
1436403888665 info treq m=GET, u=/, h=127.0.0.1:8080, i=0
- 1436403888651 - Unix date stamp
- info - The logging level. This value depends on context of the transaction and the logging level set in the
edgemicro
configuration. See How to set the logging level . For stats records, the level is set tostats
. Stats records are reported at a regular interval set with thestats_log_interval
configuration. See also How to change log intervals . - treq - Identifies the event. In this case, target request.
- m - The HTTP verb used in the target request.
- u - The part of the URL following the basepath.
- h - The host and port number of the backend target.
- i - The ID of the log entry. All four event entries will share this ID.
3. Sample of incoming response from the target
1436403888672 info tres s=200, d=7, i=0
1436403888651 - Unix date stamp
- info - The logging level. This value depends on context of the transaction and the logging level set in the
edgemicro
configuration. See How to set the logging level . For stats records, the level is set tostats
. Stats records are reported at a regular interval set with thestats_log_interval
configuration. See also How to change log intervals . - tres - Identifies the event. In this case, target response.
- s - The HTTP response status.
- d - The duration in milliseconds. The time taken for the API call by the target.
- i - The ID of the log entry. All four event entries will share this ID.
4. Sample of outgoing response to the client
1436403888676 info res s=200, d=11, i=0
1436403888651 - Unix date stamp
- info - The logging level. This value depends on context of the transaction and the logging level set in the
edgemicro
configuration. See How to set the logging level . For stats records, the level is set tostats
. Stats records are reported at a regular interval set with thestats_log_interval
configuration. See also How to change log intervals . - res - Identifies the event. In this case, response to the client.
- s - The HTTP response status.
- d - The duration in milliseconds. This is the total time taken by the API call, including the time taken by the target API and the time take by Edge Microgateway itself.
- i - The ID of the log entry. All four event entries will share this ID.
Log file schedule
Log files are rotated on the interval specified by the rotate_interval configuration attribute . Entries will continue being added to the same log file until the rotation interval expires. However, each time Edge Microgateway is restarted it receives a new UID and creates a new set of log files with this UID. See also Good log file maintenance practices .
ত্রুটি বার্তা
Some log entries will contain error messages. To help identify where and why the errors occur, see the Edge Microgateway error reference .
Edge Microgateway configuration reference
Location of the configuration file
The configurations attributes described in this section are located in the Edge Microgateway configuration file. See also Making configuration changes .
edge_config attributes
These settings are used to configure interaction between the Edge Microgateway instance and Apigee Edge.
- bootstrap : (default: none) A URL that points to an Edge Microgateway-specific service running on Apigee Edge. Edge Microgateway uses this service to communicate with Apigee Edge. This URL is returned when you execute the command to generate the public/private key pair:
edgemicro genkeys
. See the Setting up and configuring Edge Microgateway for details. - jwt_public_key : (default: none) A URL that points to the Edge Microgateway proxy that is deployed on Apigee Edge. This proxy serves as an authentication endpoint for issuing signed access tokens to clients. This URL is returned when you execute the command to deploy the proxy: edgemicro configure . See the Setting up and configuring Edge Microgateway for details.
- quotaUri : Set this config property if you want to manage quotas through the
edgemicro-auth
proxy that is deployed to your org. If this property is not set, the quota endpoint defaults to the internal Edge Microgateway endpoint.edge_config: quotaUri: https://your_org-your_env.apigee.net/edgemicro-auth
edgemicro attributes
These settings configure the Edge Microgateway process.
- port : (default: 8000) The port number on which the Edge Microgateway process listens.
- max_connections : (default: -1) Specifies the maximum number of simultaneous incoming connections that Edge Microgateway can receive. If this number is exceeded, the following status is returned:
res.statusCode = 429; // Too many requests
- max_connections_hard : (default: -1) The maximum number of simultaneous requests that Edge Microgateway can receive before shutting down the connection. This setting is intended to thwart denial of service attacks. Typically, set it to a number larger than max_connections.
- লগিং :
- level : (default: error)
- info - (Recommended) Logs all requests and responses that flow through an Edge Microgateway instance.
- warn - Logs warning messages only.
- error - Logs error messages only.
- debug - Logs debug messages along with info, warn, and error messages.
- trace - Logs trace information for errors along with info, warn, and error messages.
- none - Do not create a log file.
- dir : (default: /var/tmp) The directory where log files are stored.
- stats_log_interval : (default: 60) Interval, in seconds, when the stats record is written to the api log file.
- rotate_interval : (default: 24) Interval, in hours, when log files are rotated.
- level : (default: error)
- plugins : Plugins add functionality to Edge Microgateway. For details about developing plugins, see Develop custom plugins .
- dir : A relative path from ./gateway directory to the ./plugins directory, or an absolute path.
- sequence : A list of plugin modules to add to your Edge Microgateway instance. The modules will execute in the order they are specified here.
- debug: Adds remote debugging to the Edge Microgateway process.
- port : The port number to listen on. For example, set your IDE debugger to listen on this port.
- args : Arguments to the debug process. For example:
args --nolazy
- config_change_poll_interval: (default: 600 seconds) Edge Microgateway loads a new configuration periodically and executes a reload if anything changed. The polling picks up any changes made on Edge (changes to products, microgateway-aware proxies, etc) as well as changes made to the local config file.
- disable_config_poll_interval: (default: false) Set to true to turn off automatic change polling.
- request_timeout : Sets a timeout for target requests. The timeout is set in seconds. If a timeout occurs, Edge Microgateway responds with a 504 status code. (v2.4.x যোগ করা হয়েছে)
- keep_alive_timeout : This property enables you to set the Edge Microgateway timeout (in milliseconds). (Default: 5 seconds) (Added v3.0.6)
- headers_timeout : This attribute limits the amount of time (in milliseconds) the HTTP parser will wait to receive the complete HTTP headers.
যেমন:
edgemicro: keep_alive_timeout: 6000 headers_timeout: 12000
Internally, the parameter sets the Node.js
Server.headersTimeout
attribute on requests. (Default: 5 seconds more than the time set withedgemicro.keep_alive_timeout
. This default setting prevents load balancers or proxies from erroneously dropping the connection.) (Added v3.1.1) - noRuleMatchAction: (String) The action to take (allow or deny access) if the match rule specified in the
accesscontrol
plugin is not resolved (is unmatched). Valid values:ALLOW
orDENY
Default:ALLOW
(Added: v3.1.7) - enableAnalytics: (default: true) Set the attribute to false to prevent the analytics plugin from being loaded. In this case, no calls to Apigee Edge analytics will be made. If set to true , or when this attribute is not provided, analytics plugin will work as usual. See edgemicro attributes for details. (Added v3.1.8).
উদাহরণ:
edgemicro enableAnalytics=false|true
- on_target_response_abort : This attribute lets you control how Edge Microgateway behaves if the connection between the client (Edge Microgateway) and the target server closes prematurely.
মান বর্ণনা ডিফল্ট If on_target_response_abort
is unspecified, then the default behavior is to truncate the response without showing an error. In log files, a warning message is shown withtargetResponse aborted
and a 502 response code.appendErrorToClientResponseBody
The custom error TargetResponseAborted
is returned to the client. In log files, a warning message is shown withtargetResponse aborted
and a 502 response code. In addition, the errorTargetResponseAborted
is logged with the messageTarget response ended prematurely.
abortClientRequest
Edge Microgateway aborts the request and a warning is written to the log files: TargetResponseAborted
with the 502 request status code.
উদাহরণ:
edgemicro: on_target_response_abort: appendErrorToClientResponseBody | abortClientRequest
headers attributes
These settings configure how certain HTTP headers are treated.
- x-forwarded-for : (default: true) Set to false to prevent x-forwarded-for headers to be passed to the target. Note that if an x-forwarded-for header is in the request, its value will be set to the client-ip value in Edge Analytics.
- x-forwarded-host : (default: true) Set to false to prevent x-forwarded-host headers to be passed to the target.
- x-request-id : (default: true) Set to false to prevent x-request-id headers to be passed to the target.
- x-response-time : (default: true) Set to false to prevent x-response-time headers to be passed to the target.
- via : (default: true) Set to false to prevent via headers to be passed to the target.
oauth attributes
These settings configure how client authentication is enforced by Edge Microgateway.
- allowNoAuthorization : (default: false) If set to true, API calls are allowed to pass through Edge Microgateway without any Authorization header at all. Set this to false to require an Authorization header (default).
- allowInvalidAuthorization : (default: false) If set to true, API calls are allowed to pass if the token passed in the Authorization header is invalid or expired. Set this to false to require valid tokens (default).
- authorization-header : (default: Authorization: Bearer) The header used to send the access token to Edge Microgateway. You may wish to change the default in cases where the target needs to use the Authorization header for some other purpose.
- api-key-header : (default: x-api-key) The name of the header or query parameter used to pass an API key to Edge Microgateway. See also Using an API key .
- keep-authorization-header : (default: false) If set to true, the Authorization header sent in the request is passed on to the target (it is preserved).
- allowOAuthOnly -- If set to true, every API must carry an Authorization header with a Bearer Access Token. Allows you to permit only the OAuth security model (while maintaining backward compatibility). (Added 2.4.x)
- allowAPIKeyOnly -- If set to true, every API must carry an x-api-key header (or a custom location) with an API Key.Allows you to permit only the API key security model (while maintaining backward compatibility). (Added 2.4.x)
- gracePeriod -- This parameter helps prevent errors caused by slight discrepancies between your system clock and the Not Before (nbf) or Issued At (iat) times specified in the JWT authorization token. Set this parameter to the number of seconds to allow for such discrepancies. (Added 2.5.7)
Plugin-specific attributes
See Using plugins for details on configurable attributes for each plugin.
Filtering proxies
You can filter which microgateway-aware proxies an Edge Microgateway instance will process. When Edge Microgateway starts, it downloads all of the microgateway-aware proxies in the organization it's associated with. Use the following configuration to limit which proxies the microgateway will process. For example, this configuration limits the proxies the microgateway will process to three: edgemicro_proxy-1
, edgemicro_proxy-2
, and edgemicro_proxy-3
:
edgemicro: proxies: - edgemicro_proxy-1 - edgemicro_proxy-2 - edgemicro_proxy-3
Filtering products by name
Use the following configuration to limit the number of API products that Edge Microgateway downloads and processes. To filter downloaded products, add the productnamefilter
query parameter to the /products
API listed in the Edge Microgateway *.config.yaml
file. যেমন:
edge_config: bootstrap: >- https://edgemicroservices.apigee.net/edgemicro/bootstrap/organization/willwitman/environment/test jwt_public_key: 'https://myorg-test.apigee.net/edgemicro-auth/publicKey' managementUri: 'https://api.enterprise.apigee.com' vaultName: microgateway authUri: 'https://%s-%s.apigee.net/edgemicro-auth' baseUri: >- https://edgemicroservices.apigee.net/edgemicro/%s/organization/%s/environment/%s bootstrapMessage: Please copy the following property to the edge micro agent config keySecretMessage: The following credentials are required to start edge micro products: 'https://myorg-test.apigee.net/edgemicro-auth/products?productnamefilter=%5E%5BEe%5Ddgemicro.%2A%24'
Note that the value of the query parameter must be specified in regular expression format and be URL encoded. For example, the regex ^[Ee]dgemicro.*$
catches names such as: "edgemicro-test-1" , "edgemicro_demo" and "Edgemicro_New_Demo". The URL encoded value, suitable for use in the query parameter, is: %5E%5BEe%5Ddgemicro.%2A%24
.
The following debug output shows that only the filtered products were downloaded:
... 2020-05-27T03:13:50.087Z [76060] [microgateway-config network] products download from https://gsc-demo-prod.apigee.net/edgemicro-auth/products?productnamefilter=%5E%5BEe%5Ddgemicro.%2A%24 returned 200 OK ... .... .... { "apiProduct":[ { "apiResources":[ ], "approvalType":"auto", "attributes":[ { "name":"access", "value":"public" } ], "createdAt":1590549037549, "createdBy":"k***@g********m", "displayName":"test upper case in name", "environments":[ "prod", "test" ], "lastModifiedAt":1590549037549, "lastModifiedBy":"k***@g********m", "name":"Edgemicro_New_Demo", "proxies":[ "catchall" ], "quota":"null", "quotaInterval":"null", "quotaTimeUnit":"null", "scopes":[ ] }, { "apiResources":[ ], "approvalType":"auto", "attributes":[ { "name":"access", "value":"public" } ], "createdAt":1590548328998, "createdBy":"k***@g********m", "displayName":"edgemicro test 1", "environments":[ "prod", "test" ], "lastModifiedAt":1590548328998, "lastModifiedBy":"k***@g********m", "name":"edgemicro-test-1", "proxies":[ "Lets-Encrypt-Validation-DoNotDelete" ], "quota":"null", "quotaInterval":"null", "quotaTimeUnit":"null", "scopes":[ ] }, { "apiResources":[ "/", "/**" ], "approvalType":"auto", "attributes":[ { "name":"access", "value":"public" } ], "createdAt":1558182193472, "createdBy":"m*********@g********m", "displayName":"Edge microgateway demo product", "environments":[ "prod", "test" ], "lastModifiedAt":1569077897465, "lastModifiedBy":"m*********@g********m", "name":"edgemicro_demo", "proxies":[ "edgemicro-auth", "edgemicro_hello" ], "quota":"600", "quotaInterval":"1", "quotaTimeUnit":"minute", "scopes":[ ] } ] }
Filtering products by custom attributes
To filter products based on custom attributes:
- In the Edge UI, select the edgemicro_auth proxy in the organization/environment where you configured Edge Microgateway.
- In the Develop tap, open the JavaCallout policy in the editor.
- Add a custom attribute with the key
products.filter.attributes
with a comma-separated list of attribute names. Only products that contain any of the custom attribute names will be returned to Edge Microgateway. - You can optionally disable the check to see if the product is enabled for the current environment by setting the custom attribute
products.filter.env.enable
tofalse
. (The default is true.) - (Private Cloud Only) If you are on Edge for Private Cloud, set the property
org.noncps
totrue
to pull products for non-CPS environments.
যেমন:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JavaCallout async="false" continueOnError="false" enabled="true" name="JavaCallout"> <DisplayName>JavaCallout</DisplayName> <FaultRules/> <Properties> <Property name="products.filter.attributes">attrib.one, attrib.two</Property> <Property name="products.filter.env.enable">false</Property> <Property name="org.noncps">true</Property> </Properties> <ClassName>io.apigee.microgateway.javacallout.Callout</ClassName> <ResourceURL>java://micro-gateway-products-javacallout-2.0.0.jar</ResourceURL> </JavaCallout>
Configuring analytics push frequency
Use these configuration parameters to control the frequency at which Edge Microgateway sends analytics data to Apigee:
- bufferSize (Optional): The maximum number of analytics records that the buffer can hold before beginning to drop the oldest records. Default: 10000
- batchSize (Optional): The maximum size of a batch of analytics records sent to Apigee. Default: 500
- flushInterval (Optional): The number of milliseconds between each flush of a batch of analytics records sent to Apigee. Default: 5000
যেমন:
analytics: bufferSize: 15000 batchSize: 1000 flushInterval: 6000
Masking analytics data
The following configuration prevents request path information from showing up in Edge analytics. Add the following to the microgateway configuration to mask the request URI and/or request path. Note that the URI consists of the hostname and path parts of the request.
analytics: mask_request_uri: 'string_to_mask' mask_request_path: 'string_to_mask'
Segregating API calls in Edge Analytics
You can configure the analytics plugin to segregate a specific API path so that it appears as a separate proxy in the Edge Analytics dashboards. For example, you can segregate a health check API in the dashboard to avoid confusing it with actual API proxy calls. In the Analytics dashboard, segregated proxies follow this naming pattern:
edgemicro_proxyname-health
The following image shows two segregated proxies in the Analytics dashboard: edgemicro_hello-health
and edgemicro_mock-health
:
Use these parameters to segregate relative and absolute paths in the Analytics dashboard as separate proxies:
- relativePath (Optional): Specifies a relative path to segregate in the Analytics dashboard. For example, if you specify
/healthcheck
, all API calls that contain the path/healthcheck
will appear in the dashboard asedgemicro_ proxyname -health
. Note that this flag ignores the proxy basepath. To segregate based on a full path, including basepath, use theproxyPath
flag. - proxyPath (Optional): Specifies a full API proxy path, including the proxy basepath, to segregate in the analytics dashboard. For example, if you specify
/mocktarget/healthcheck
, where/mocktarget
is the proxy basepath, all API calls with the path/mocktarget/healthcheck
will appear in the dashboard asedgemicro_ proxyname -health
.
For example, in the following configuration any API path that contains /healthcheck
will be segregated by the analytics plugin. This means, /foo/healthcheck
and /foo/bar/healthcheck
will be segregated as a separate proxy called edgemicro_ proxyname -health
in the analytics dashboard.
analytics: uri: >- https://xx/edgemicro/ax/org/docs/environment/test bufferSize: 100 batchSize: 50 flushInterval: 500 relativePath: /healthcheck
In the following configuration any API with the proxy path /mocktarget/healthcheck
will be will be segregated as a separate proxy called edgemicro_ proxyname -health
in the analytics dashboard.
analytics: uri: >- https://xx/edgemicro/ax/org/docs/environment/test bufferSize: 100 batchSize: 50 flushInterval: 500 proxyPath: /mocktarget/healthcheck
Setting up Edge Microgateway behind a company firewall
Use an HTTP proxy for communication with Apigee Edge
Added in version 3.1.2.
To use an HTTP proxy for communication between Edge Microgateway and Apigee Edge, do the following:
- Set the environment variables
HTTP_PROXY
,HTTPS_PROXY
, andNO_PROXY
. These variables control the hosts for each HTTP proxy that you wish to use for communication with Apigee Edge, or which hosts should not handle communication with Apigee Edge. যেমন:export HTTP_PROXY='http://localhost:3786' export HTTPS_PROXY='https://localhost:3786' export NO_PROXY='localhost,localhost:8080'
Note that
NO_PROXY
can be a comma delimited list of domains that Edge Microgateway should not proxy to.For more information on these variables, see https://www.npmjs.com/package/request#controlling-proxy-behaviour-using-environment-variables
- এজ মাইক্রোগেটওয়ে পুনরায় চালু করুন।
Use an HTTP proxy for target communication
Added in version 3.1.2.
To use an HTTP proxy for communication between Edge Microgateway and backend targets, do the following:
- Add the following configuration to the microgateway config file:
edgemicro: proxy: tunnel: true | false url: proxy_url bypass: target_host # target hosts to bypass the proxy. enabled: true | false
Where:
- tunnel : (Optional) When true, Edge Microgateway uses the HTTP CONNECT method to tunnel HTTP requests over a single TCP connection. (The same is true if the environment variables, as mentioned below, for configuring the proxy are TLS enabled). Default:
false
- url : The HTTP proxy URL.
- bypass : (Optional) Specifies one or more comma-separated target host URLs that should bypass the HTTP proxy. If this property is not set, then use the NO_PROXY environment variable to specify which target URLs to bypass.
- enabled : If true and
proxy.url
is set, use theproxy.url
value for the HTTP proxy. If true andproxy.url
is not set, use the proxies specified in the HTTP proxy environment variablesHTTP_PROXY
andHTTPS_PROXY
, as described in Use an HTTP proxy for communication with Apigee Edge .
যেমন:
edgemicro: proxy: tunnel: true url: 'http://localhost:3786' bypass: 'localhost','localhost:8080' # target hosts to bypass the proxy. enabled: true
- tunnel : (Optional) When true, Edge Microgateway uses the HTTP CONNECT method to tunnel HTTP requests over a single TCP connection. (The same is true if the environment variables, as mentioned below, for configuring the proxy are TLS enabled). Default:
- এজ মাইক্রোগেটওয়ে পুনরায় চালু করুন।
Using wildcards in Microgateway-aware proxies
You can use one or more "*" wildcards in the base path of an edgemicro_* (Microgateway-aware) proxy. For example, a base path of /team/*/members allows clients to call https://[host]/team/blue/members and https://[host]/team/green/members without you needing to create new API proxies to support new teams. Note that /**/
is not supported.
Important: Apigee does NOT support using a wildcard "*" as the first element of a base path. For example, this is NOT supported: /*/
search.
Rotating JWT keys
At some time after you initially generate a JWT, you might need to change the public/private key pair stored in the Edge encrypted KVM. This process of generating a new key pair is called key rotation.
How Edge Microgateway uses JWTs
JSON Web Token (JWT) is a token standard described in RFC7519 . JWT provides a way to sign a set of claims, which can be verified reliably by the recipient of the JWT.
You can generate a JWT using the CLI and use it in the Authorization header of API calls instead of an API key. যেমন:
curl -i http://localhost:8000/hello -H "Authorization: Bearer eyJhbGciOiJ..dXDefZEA"
For information on generating JWTs with the CLI, see Generate a token .
What is key rotation?
At some time after you initially generate a JWT, you might need to change the public/private key pair stored in the Edge encrypted KVM. This process of generating a new key pair is called key rotation. When you rotate keys, a new private/public key pair is generated and stored in the "microgateway" KVM in your Apigee Edge organization/environment. In addition, the old public key is retained along with its original key ID value.
To generate a JWT, Edge uses information stored in the encrypted KVM. A KVM called microgateway
was created and populated with keys when you initially set up (configured) Edge Microgateway. The keys in the KVM are used to sign and encrypt a JWT.
The KVM keys include:
private_key - The latest (most recently created) RSA private key used to sign JWTs.
public_key - The latest (most recently created) certificate used to verify JWTs signed with the private_key.
private_key_kid - The latest (most recently created) private key ID. This key ID is associated with the private_key value and is used to support key rotation.
public_key1_kid - The latest (most recently created) public key ID. This key is associated with the public_key1 value and is used to support key rotation. This value is the same as the private key kid.
public_key1 - The latest (most recently created) public key.
When you perform key rotation, existing key values are replaced in the map and new keys are added to retain the old public keys. যেমন:
public_key2_kid - The old public key ID. This key is associated with the public_key2 value and is used to support key rotation.
public_key2 - The old public key.
JWTs presented for verification will be verified using the new public key. If verification fails, then the old public key will be used, until the JWT expires (after token_expiry* interval, default 30 mins). In this way, you can "rotate" keys without immediately disrupting API traffic.
How to do key rotation
This section explains how to perform a key rotation.
- To upgrade the KVM, use the
edgemicro upgradekvm
command. For details on running this command, see Upgrading the KVM . You only need to do this step one time. - To upgrade the edgemicro-oauth proxy, use the
edgemicro upgradeauth
command. For details on running this command, see Ugrading the edgemicro-auth proxy . You only need to do this step one time. - Add the following line to your
~/.edgemicro/org-env-config.yaml
file, where you must specify the same organization and environment that you configured the microgateway to use:jwk_public_keys: 'https://$ORG-$ENV.apigee.net/edgemicro-auth/jwkPublicKeys'
Run the key rotation command to rotate the keys. For details on this command, see Rotating keys .
edgemicro rotatekey -o $ORG -e $ENV -k $KEY -s $SECRET
যেমন:
edgemicro rotatekey -o docs -e test \ -k 27ee39567c75e4567a66236cbd4e86d1cc93df6481454301bd5fac4d3497fcbb \ -s 4618b0008a6185d7327ebf53bee3c50282ccf45a3cceb1ed9828bfbcf1148b47
After key rotation, Edge returns multiple keys to Edge Microgateway. Note in the following example, each key has a unique "kid" (Key ID) value. The microgateway then uses these keys to validate authorization tokens. If the token validation fails, the microgateway looks to see if there is an older key in the key set and tries that key. The format of the returned keys is JSON Web Key (JWK). You can read about this format in RFC 7517 .
{ "keys": [ { "kty": "RSA", "n": "nSl7R_0wKLiWi6cO3n8aOJwYGBtinq723Jgg8i7KKWTSTYoszOjgGsJf_MX4JEW1YCScwpE5o4o8ccQN09iHVTlIhk8CNiMZNPipClmRVjaL_8IWvMQp1iN66qy4ldWXzXnHfivUZZogCkBNqCz7VSC5rw2Jf57pdViULVvVDGwTgf46sYveW_6h8CAGaD0KLd3vZffxIkoJubh0yMy0mQP3aDOeIGf_akeZeZ6GzF7ltbKGd954iNTiKmdm8IKhz6Y3gLpC9iwQ-kex_j0CnO_daHl1coYxUSCIdv4ziWIeM3dmjQ5_2dEvUDIGG6_Az9hTpNgPE5J1tvrOHAmunQ", "e": "AQAB", "kid": "2" }, { "kty": "RSA", "n": "8BKwzx34BMUcHwTuQtmp8LFRCMxbkKg_zsWD6eOMIUTAsORexTGJsTy7z-4aH0wJ3fT-3luAAUPLBQwGcuHo0P1JnbtPrpuYjaJKSZOeIMOnlryJCspmv-1xG4qAqQ9XaZ9C97oecuj7MMoNwuaZno5MvsY-oi5B_gqED3vIHUjaWCErd4reONyFSWn047dvpE6mwRhZbcOTkAHT8ZyKkHISzopkFg8CD-Mij12unxA3ldcTV7yaviXgxd3eFSD1_Z4L7ZRsDUukCJkJ-8qY2-GWjewzoxl-mAW9D1tLK6qAdc89yFem3JHRW6L1le3YK37-bs6b2a_AqJKsKm5bWw", "e": "AQAB", "kid": "1" } ] }
Configuring a "not before" delay
For versions 3.1.5 and before, the new private key generated by the rotatekey
command took effect immediately, and new tokens generated were signed with the new private key. However, the new public key was only made available to Edge Microgateway instances every 10 minutes (by default) when the microgateway configuration was refreshed. Because of this lag between the token signing and microgateway instance refresh, tokens signed with the latest key would be rejected until all instances received the public latest key.
In cases where multiple microgateway instances exist, the public key lag sometimes resulted in intermittent runtime errors with status 403, because token validation would pass on one instance, but fail on another instance until all instances were refreshed.
Starting in version 3.1.6, a new flag on the rotatekey
command allows you to specify a delay for the new private key to become effective, allowing time for all microgateway instances to be refreshed and receive the new public key. The new flag is --nbf
, which stands for "not before." This flag takes an integer value, the number of minutes to delay.
In the following example, the delay is set to 15 minutes:
edgemicro rotatekey -o docs -e test \ -k 27ee39567c75e4567a66236cbd4e86d1cc93df6481454301bd5fac4d3497fcbb \ -s 4618b0008a6185d7327ebf53bee3c50282ccf45a3cceb1ed9828bfbcf1148b47 \ --nbf 15
Note that a good practice is to set the delay to be more than the config_change_poll_internal
configuration setting, which is 10 minutes by default. See also edgemicro attributes .
Filtering downloaded proxies
By default, Edge Microgateway downloads all of the proxies in your Edge organization that start with the naming prefix "edgemicro_". You can change this default to download proxies whose names match a pattern.
- Open your Edge Micro config file:
~/.edgemicro/org-env-config.yaml
- Add the proxyPattern element under edge_config. For example, the following pattern will download proxies such as edgemicro_foo, edgemicro_fast, and edgemicro_first.
edge_config: … proxyPattern: edgemicro_f*
Specifying products without API proxies
In Apigee Edge, you can create an API product that does not contain any API proxies. This product configuration allows an API key associated with that product to work for with any proxy deployed in your organization. As of version 2.5.4, Edge Microgateway supports this product configuration.
ডিবাগিং এবং সমস্যা সমাধান
Connecting to a debugger
You can run Edge Microgateway with a debugger, such as node-inspector . This is useful for troubleshooting and debugging custom plugins.
- Restart Edge Microgateway in debug mode. To do this, add
DEBUG=*
to the beginning of thestart
command:DEBUG=* edgemicro start -o $ORG -e $ENV -k $KEY -s $SECRET
To direct debug output to a file, you can use this command:
export DEBUG=* nohup edgemicro start \ -o $ORG -e $ENV -k $KEY -s $SECRET 2>&1 | tee /tmp/file.log
- Start your debugger and set it to listen on the port number for the debugging process.
- You can now step through the Edge Microgateway code, set breakpoints, watch expressions, and so on.
You can specify standard Node.js flags related to debug mode. For example, --nolazy
helps with debugging asynchronous code.
Checking log files
If you're having problems, be sure to examine the log files for execution details and error information. For details, see Managing log files .
Using API key security
API keys provide a simple mechanism for authenticating clients making requests to Edge Microgateway. You can obtain an API key by copying the Consumer Key (also called Client ID) value from an Apigee Edge product that includes the Edge Microgateway authentication proxy.
Caching of keys
API keys are exchanged for bearer tokens, which are cached. You can disable caching by setting the Cache-Control: no-cache
header on incoming requests to Edge Microgateway.
Using an API key
You can pass the API key in an API request either as a query parameter or in a header. By default, the header and query param name are both x-api-key
.
Query parameter example:
curl http://localhost:8000/foobar?x-api-key=JG616Gjz7xs4t0dvpvVsGdI49G34xGsz
হেডার উদাহরণ:
curl http://localhost:8000/foobar -H "x-api-key:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"
Configuring the API key name
By default, x-api-key
is the name used for both the API key header and query parameter. You can change this default in the configuration file, as explained in Making configuration changes . For example, to change the name to apiKey :
oauth: allowNoAuthorization: false allowInvalidAuthorization: false api-key-header: apiKey
In this example, both the query parameter and header name are changed to apiKey
. The name x-api-key
will no longer work in either case. See also Making configuration changes .
যেমন:
curl http://localhost:8000/foobar -H "apiKey:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"
For more information about using API keys with proxy requests, see Secure Edge Microgateway .
Enable upstream response codes
By default, the oauth
plugin returns only 4xx error status codes if the response is not a 200 status. You can change this behavior so that it always returns the exact 4xx or 5xx code, depending on the error.
To enable this feature, add the oauth.useUpstreamResponse: true
property to your Edge Microgateway configuration. যেমন:
oauth: allowNoAuthorization: false allowInvalidAuthorization: false gracePeriod: 10 useUpstreamResponse: true
Using OAuth2 token security
This section explains how to get OAuth2 access tokens and refresh tokens. Access tokens are used to make secure API calls through the microgateway. Refresh tokens are used to obtain new access tokens.
How to get an access token
This section explains how to use the edgemicro-auth
proxy to get an access token.
You can also get an access token using the edgemicro token
CLI command. For details on the CLI, see Managing tokens .
API 1: Send credentials as body parameters
Substitute your org and environment names in the URL, and substitute the Consumer Id and Consumer Secret values obtained from a developer app on Apigee Edge for the client_id and client_secret body parameters:
curl -i -X POST "http://<org>-<test>.apigee.net/edgemicro-auth/token" \ -d '{"grant_type": "client_credentials", "client_id": "your_client_id", \ "client_secret": "your_client_secret"}' -H "Content-Type: application/json"
API 2: Send credentials in a Basic Auth header
Send the client credentials as a Basic Authentication header and the grant_type
as a form parameter. This command form is also discussed in RFC 6749: The OAuth 2.0 Authorization Framework .
http://<org>-<test>.apigee.net/edgemicro-auth/token -v -u your_client_id:your_client_secret \ -d 'grant_type=client_credentials' -H "Content-Type: application/x-www-form-urlencoded"
নমুনা আউটপুট
The API returns a JSON response. Note that there's no difference between thetoken
and access_token
properties. আপনি যেকোনো একটি ব্যবহার করতে পারেন। Note that expires_in
is an integer value specified in seconds. { "token": "eyJraWQiOiIxIiwidHlwIjoi", "access_token": "eyJraWQiOiIxIiwid", "token_type": "bearer", "expires_in": 1799 }
How to get a refresh token
To get a refresh token, make an API call to the /token
endpoint of the edgemicro-auth
proxy. You MUST make this API call with the password
grant type. The following steps walk through the process.
- Get an access and refresh token with the
/token
API. Note that the grant type ispassword
:curl -X POST \ https://your_organization-your_environment.apigee.net/edgemicro-auth/token \ -H 'Content-Type: application/json' \ -d '{ "client_id":"mpK6l1Bx9oE5zLdifoDbF931TDnDtLq", "client_secret":"bUdDcFgv3nXffnU", "grant_type":"password", "username":"mpK6lBx9RoE5LiffoDbpF931TDnDtLq", "password":"bUdD2FvnMsXffnU" }'
The API returns an access token and a refresh token. The response looks similar to this. Note that
expires_in
values integers and are specified in seconds.{ "token": "your-access-token", "access_token": "your-access-token", "token_type": "bearer", "expires_in": 108, "refresh_token": "your-refresh-token", "refresh_token_expires_in": 431, "refresh_token_issued_at": "1562087304302", "refresh_token_status": "approved" }
- You can now use the refresh token to get a new access token by calling the
/refresh
endpoint of the same API. যেমন:curl -X POST \ https://willwitman-test.apigee.net/edgemicro-auth/refresh \ -H 'Content-Type: application/json' \ -d '{ "client_id":"mpK6l1Bx9RoE5zLifoDbpF931TDnDtLq", "client_secret":"bUdDc2Fv3nMXffnU", "grant_type":"refresh_token", "refresh_token":"your-refresh-token" }'
The API returns a new access token. The response looks similar to this:
{ "token": "your-new-access-token" }
চিরকাল পর্যবেক্ষণ
Forever is a Node.js tool that automatically restarts a Node.js app in case the process goes down or has an error. Edge Microgateway has a forever.json file that you can configure to control how many times and with what intervals Edge Microgateway should be restarted. This file configures a Forever service called forever-monitor , which manages Forever programmatically.
You can find the forever.json file in the Edge Microgateway root install directory. এজ মাইক্রোগেটওয়ে কোথায় ইনস্টল করা আছে দেখুন। For details on the configuration options, refer to the forever-monitor documentation .
The edgemicro forever
command includes flags that let you specify the location of the forever.json
file (the -f
flag), and start/stop the Forever monitoring process (the -a
flag). যেমন:
edgemicro forever -f ~/mydir/forever.json -a start
For more information, see the Forever monitoring in the CLI reference.
Specifying a config file endpoint
If you run multiple Edge Microgateway instances, you may wish to manage their configurations from a single location. You can do this by specifying an HTTP endpoint where Edge Micro can download its configuration file. You can specify this endpoint when you start Edge Micro using the -u flag.
যেমন:
edgemicro start -o jdoe -e test -u http://mylocalserver/mgconfig -k public_key -s secret_key
where the mgconfig endpoint returns the contents of your configuration file. This is the file that, by default, is located in ~/.edgemicro
and has the naming convention: org-env-config.yaml
.
Disabling TCP connection data buffering
You can use the nodelay
configuration attribute to disable data buffering for TCP connections used by Edge Microgateway.
By default TCP connections use the Nagle algorithm to buffer data before sending it off. Setting nodelay
to true
, disables this behavior (data will immediately fire off data each time socket.write()
is called). See also the Node.js documentation for more details.
To enable nodelay
, edit the Edge Micro config file as follows:
edgemicro: nodelay: true port: 8000 max_connections: 1000 config_change_poll_interval: 600 logging: level: error dir: /var/tmp stats_log_interval: 60 rotate_interval: 24
Running Edge Microgateway in standalone mode
You can run Edge Microgateway disconnected completely from any Apigee Edge dependency. This scenario, called standalone mode, lets you run and test Edge Microgateway without an Internet connection.
In standalone mode, the following features do not work, as they require connection to Apigee Edge:
- OAuth and API key
- কোটা
- বিশ্লেষণ
On the other hand, custom plugins and spike arrest work normally, because they do not require a connection to Apigee Edge. In addition, a new plugin called extauth
lets you authorize API calls to the microgateway with a JWT while in standalone mode.
Configuring and starting the gateway
To run Edge Microgateway in standalone mode:
- Create a configuration file named as follows:
$HOME/.edgemicro/ $ORG
-
$ENV -config.yamlযেমন:
vi $HOME/.edgemicro/foo-bar-config.yaml
- ফাইলে নিম্নলিখিত কোড পেস্ট করুন:
edgemicro: port: 8000 max_connections: 1000 config_change_poll_interval: 600 logging: level: error dir: /var/tmp stats_log_interval: 60 rotate_interval: 24 plugins: sequence: - extauth - spikearrest headers: x-forwarded-for: true x-forwarded-host: true x-request-id: true x-response-time: true via: true extauth: publickey_url: https://www.googleapis.com/oauth2/v1/certs spikearrest: timeUnit: second allow: 10 buffersize: 0
- Export the following environment variable with the value "1":
export EDGEMICRO_LOCAL=1
- Execute the following
start
command, where you provide values to instantiate the local proxy:edgemicro start -o $ORG -e $ENV -a $LOCAL_PROXY_NAME \ -v $LOCAL_PROXY_VERSION -t $TARGET_URL -b $BASE_PATH
Where:
- $ORG is the "org" name that you used in the configuration file name.
- $ENV is the "env" name that you used in the configuration file name.
- $LOCAL_PROXY_NAME is the name of the local proxy that will be created. You can use any name you want.
- $LOCAL_PROXY_VERSION is the version number for the proxy.
- $TARGET_URL is the URL for the target of the proxy. (The target is the service that the proxy calls.)
- $BASE_PATH is the base path of the proxy. This value must start with a forward slash. For a root base path, specify just a forward slash; for example, "/".
যেমন:
edgemicro start -o local -e test -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
- কনফিগারেশন পরীক্ষা করুন।
curl http://localhost:8000/echo { "error" : "missing_authorization" }
Because the
extauth
plugin is in thefoo-bar-config.yaml
file, you get a "missing_authorization" error. This plugin validates a JWT that must be present in the Authorization header of the API call. In the next section, you will obtain a JWT that will allow API calls to go through without the error.
Example: Obtaining an authorization token
The following example shows how to obtain a JWT from the Edge Microgateway JWT endpoint on Apigee Edge ( edgemicro-auth/jwkPublicKeys
). This endpoint is deployed when you perform a standard setup and configuration of Edge Microgateway. To obtain the JWT from the Apigee endpoint, you must first do the standard Edge Microgateway setup, and be connected to the Internet. The Apigee endpoint is used here for example purposes only and is not required. You can use another JWT token endpoint if you wish. If you do, then you'll need to obtain the JWT using the API provided for that endpoint.
The following steps explain how to get a token using the edgemicro-auth/jwkPublicKeys
endpoint:.
- You must perform a standard setup and configuration of Edge Microgateway to deploy the
edgemicro-auth
proxy to your organization/environment on Apigee Edge. If you did this step previously, you do not need to repeat it. - If you deployed Edge Microgateway to Apigee Cloud, you must be connected to the Internet so that you can obtain a JWT from this endpoint.
- Stop Edge Microgateway:
edgemicro stop
- In the configuration file you created previously (
$HOME/.edgemicro
/ org - env-config.yaml
), point theextauth:publickey_url
attribute to theedgemicro-auth/jwkPublicKeys
endpoint in your Apigee Edge organization/environment. যেমন:extauth: publickey_url: 'https://your_org-your_env.apigee.net/edgemicro-auth/jwkPublicKeys'
- Restart Edge Microgateway as you did previously, using the org/env names you used in the config file name. যেমন:
edgemicro start -o foo -e bar -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
- Get a JWT token from the authorization endpoint. Because you are using the
edgemicro-auth/jwkPublicKeys
endpoint, you can use this CLI command:
You can generate a JWT for Edge Microgateway using the edgemicro token
command or an API. যেমন:
edgemicro token get -o your_org -e your_env \ -i G0IAeU864EtBo99NvUbn6Z4CBwVcS2 -s uzHTbwNWvoSmOy
Where:
- your_org is the name of your Apigee organization for which you previously configured Edge Microgateway.
- your_env is an environment in the organization.
- The
i
option specifies the Consumer Key from a developer app that has a product that includes theedgemicro-auth
proxy. - The
s
option specifies the Consumer Secret from a developer app that has a product that includes theedgemicro-auth
proxy.
This command asks Apigee Edge to generate a JWT that can then be used to verify API calls.
See also Generate a token .Test the standalone configuration
To test the configuration, call the API with the token added in the Authorization header as follows:
curl http://localhost:8000/echo -H "Authorization: Bearer your_token
উদাহরণ:
curl http://localhost:8000/echo -H "Authorization: Bearer eyJraWQiOiIxIiwidHlwIjo...iryF3kwcDWNv7OQ"
উদাহরণ আউটপুট:
{ "headers":{ "user-agent":"curl/7.54.0", "accept":"*/*", "x-api-key":"DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP", "client_received_start_timestamp":"1535134472699", "x-authorization-claims":"eyJhdDbiO...M1OTE5MTA1NDkifQ==", "target_sent_start_timestamp":"1535134472702", "x-request-id":"678e3080-a7ae-11e8-a70f-87ae30db3896.8cc81cb0-a7c9-11e8-a70f-87ae30db3896", "x-forwarded-proto":"http", "x-forwarded-host":"localhost:8000", "host":"mocktarget.apigee.net", "x-cloud-trace-context":"e2ac4fa0112c2d76237e5473714f1c85/1746478453618419513", "via":"1.1 localhost, 1.1 google", "x-forwarded-for":"::1, 216.98.205.223, 35.227.194.212", "connection":"Keep-Alive" }, "method":"GET", "url":"/", "body":"" }
Using local proxy mode
In local proxy mode, Edge Microgateway does not require a microgateway-aware proxy to be deployed on Apigee Edge. Instead, you configure a "local proxy" by providing a local proxy name, basepath, and target URL when you start the microgateway. API calls to the microgateway are then sent to the target URL of the local proxy. In all other respects, local proxy mode works exactly the same as running Edge Microgateway in its normal mode. Authentication works the same, as do spike arrest and quota enforcement, custom plugins, and so on.
Use case and example
Local proxy mode is useful when you only need to associate one single proxy with an Edge Microgateway instance. For example, you can inject Edge Microgateway into Kubernetes as a sidecar proxy, where a microgateway and a service each run in a single pod, and where the microgateway manages traffic to and from its companion service. The following figure illustrates this architecture where Edge Microgateway functions as a sidecar proxy in a Kubernetes cluster. Each microgateway instance talks only to a single endpoint on its companion service:
A benefit of this style of architecture is that Edge Microgateway provides API management for individual services deployed to a container environment, such as a Kubernetes cluster.
Configuring local proxy mode
To configure Edge Microgateway to run in local proxy mode, follow these steps:
- Run
edgemicro init
to set up your local configuration environment, exactly as you would in a typical Edge Microgateway setup. See also Configure Edge Microgateway . - Run
edgemicro configure
, as you would in a typical Edge Microgateway setup procedure. যেমন:edgemicro configure -o your_org -e your_env -u your_apigee_username
This command deploys the edgemicro-auth policy to Edge and returns a key and secret that you will need to start the microgateway. If you need help, see Configure Edge Microgateway .
- On Apigee Edge, create an API product and with the following mandatory configuration requirements (you can manage all other configurations as you wish):
- You must add the edgemicro-auth proxy to the product. This proxy was deployed automatically when you ran
edgemicro configure
. - You must provide a resource path. Apigee recommends adding this path to the product:
/**
. To learn more, see Configuring the behavior of the resource path . See also Create API products in the Edge documentation.
- You must add the edgemicro-auth proxy to the product. This proxy was deployed automatically when you ran
On Apigee Edge, create a developer, or you can use an existing developer if you wish. For help, see Adding developers using the Edge management UI .
- On Apigee Edge, create a developer app. You must add the API product you just created to the app. For help, see Registering an app in the Edge management UI .
- On the machine where Edge Microgateway is installed, export the following environment variable with the value "1".
export EDGEMICRO_LOCAL_PROXY=1
- Execute the following
start
command:edgemicro start -o your_org -e your_environment -k your_key -s your_secret \ -a local_proxy_name -v local_proxy_version -t target_url -b base_path
Where:
- your_org is your Apigee organization.
- your_environment is an environment in your organization.
- your_key is the key that was returned when you ran
edgemicro configure
. - your_secret is the secret that was returned when you ran
edgemicro configure
. - local_proxy_name is the name of the local proxy that will be created.
- local_proxy_version is the version number for the proxy.
- target_url is the URL for the target of the proxy (the service the proxy will call).
- base_path is the base path of the proxy. This value must start with a forward slash. For a root base path, specify just a forward slash; for example, "/".
যেমন:
edgemicro start -o your_org -e test -k 7eb6aae644cbc09035a...d2eae46a6c095f \ -s e16e7b1f5d5e24df...ec29d409a2df853163a -a proxy1 -v 1 \ -t http://mocktarget.apigee.net -b /echo
কনফিগারেশন পরীক্ষা করা হচ্ছে
You can test the local proxy configuration by calling the proxy endpoint. For example, if you specified a basepath of /echo
, you can call the proxy as follows:
curl http://localhost:8000/echo { "error" : "missing_authorization", "error_description" : "Missing Authorization header" }
This initial API call produced an error because you did not provide a valid API key. You can find the key in the Developer app you created previously. Open the app in the Edge UI, copy the Consumer Key, and use that key as follows:
curl http://localhost:8000/echo -H 'x-api-key:your_api_key'
যেমন:
curl http://localhost:8000/echo -H "x-api-key:DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP"
উদাহরণ আউটপুট:
{ "headers":{ "user-agent":"curl/7.54.0", "accept":"*/*", "x-api-key":"DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP", "client_received_start_timestamp":"1535134472699", "x-authorization-claims":"eyJhdWQiOi...TQ0YmUtOWNlOS05YzM1OTE5MTA1NDkifQ==", "target_sent_start_timestamp":"1535134472702", "x-request-id":"678e3080-a7ae-11e8-a70f-87ae30db3896.8cc81cb0-a7c9-11e8-a70f-87ae30db3896", "x-forwarded-proto":"http", "x-forwarded-host":"localhost:8000", "host":"mocktarget.apigee.net", "x-cloud-trace-context":"e2ac4fa0112c2d76237e5473714f1c85/1746478453618419513", "via":"1.1 localhost, 1.1 google", "x-forwarded-for":"::1, 216.98.205.223, 35.227.194.212", "connection":"Keep-Alive" }, "method":"GET", "url":"/", "body":"" }
Using the synchronizer
This section explains how to use the synchronizer, an optional feature that improves the resiliency of Edge Microgteway by allowing it to retrieve configuration data from Apigee Edge and write it to a local Redis database. With a synchronizer instance running, other Edge Microgateway instances running on different nodes can retrieve their configuration directly from this database.
The syncrhonizer feature is currently supported to work with Redis 5.0.x.
What is the synchronizer?
The synchronizer provides a level of resilience for Edge Microgateway. It helps ensure that every instance of Edge Microgateway uses the same configuration, and that in the event of an internet disruption, Edge Microgateway instances can start up and run properly.
By default, Edge Microgateway instances must be able to communicate with Apigee Edge to retrieve and refresh their configuration data, such as API proxy and API product configurations. If the internet connection with Edge is disrupted, microgateway instances can continue to function because the latest configuration data is cached. However, new microgateway instances cannot start up without a clear connection. Furthermore, it is possible for an internet disruption to result in one or more microgateway instances running with configuration information that is out of sync with other instances.
The Edge Microgateway synchronizer provides an alternative mechanism for Edge Microgateway instances to retrieve configuration data that they require to start up and process API proxy traffic. The configuration data retrieved from calls to Apigee Edge include: the jwk_public_keys
call, the jwt_public_key
call, the bootstrap call, and the API products call. The synchronizer makes it possible for all of the Edge Microgateway instances running on different nodes to start up properly and stay in sync even if the internet connection between Edge Microgateway and Apigee Edge is disrupted.
The synchronizer is a specially configured instance of Edge Microgateway. Its only purpose is to poll Apigee Edge (the timing is configurable), retrieve configuration data, and write it to a local Redis database. The synchronizer instance itself cannot process API proxy traffic. Other instances of Edge Microgateway running on different nodes can be configured to retrieve configuration data from the Redis database rather than from Apigee Edge. Because all microgateway instances pull their configuration data from the local database, they can start up and process API requests even in the event of an internet disruption.
Configuring a synchronizer instance
Add the following configuration to the org-env /config.yaml
file for the Edge Microgateway installation that you wish to use as the synchronizer:
edgemicro: redisHost: host_IP redisPort: host_port redisDb: database_index redisPassword: password edge_config: synchronizerMode: 1 redisBasedConfigCache: true
যেমন:
edgemicro: redisHost: 192.168.4.77 redisPort: 6379 redisDb: 0 redisPassword: codemaster edge_config: synchronizerMode: 1 redisBasedConfigCache: true
অপশন | বর্ণনা |
---|---|
redisHost | The host where your Redis instance is running. Default: 127.0.0.1 |
redisPort | The port of the Redis instance. Default: 6379 |
redisDb | The Redis DB to use. ডিফল্ট: 0 |
redisPassword | Your database password. |
Finally, save the configuration file and start the Edge Microgateway instance. It will begin polling Apigee Edge and storing downloaded configuration data in the Redis database.
Configuring regular Edge Microgateway instances
With the synchronizer running, you can configure additional Edge Microgateway nodes to run regular microgateway instances that process API proxy traffic. However, you configure these instances to obtain their configuration data from the Redis database rather than from Apigee Edge.
Add the following configuration to each additional Edge Microgateway node's org-env /config.yaml
file. Note that the synchronizerMode
property is set to 0
. This property sets the instance to operate as a normal Edge Microgateway instance that processes API proxy traffic, and the instance will obtain its configuration data from the Redis database.
edgemicro: redisHost: host_IP redisPort: host_port redisDb: database_index redisPassword: password edge_config: synchronizerMode: 0 redisBasedConfigCache: true
যেমন:
edgemicro: redisHost: 192.168.4.77 redisPort: 6379 redisDb: 0 redisPassword: codemaster edge_config: synchronizerMode: 0 redisBasedConfigCache: true
কনফিগারেশন বৈশিষ্ট্য
The following configuration properties have been added to support the use of the synchronizer:
বৈশিষ্ট্য | মূল্যবোধ | বর্ণনা |
---|---|---|
edge_config.synchronizerMode | 0 বা 1 | If 0 (the default) Edge Microgateway operates in its standard mode. If 1, start the Edge Microgateway instance to operate as a synchronizer. In this mode, the instance will pull configuration data from Apigee Edge and store it in a local Redis database. This instance is not able to process API proxy requests; its only purpose is to poll Apigee Edge for configuration data and write it to the local database. You must then configure other microgateway instances to read from the database. |
edge_config.redisBasedConfigCache | সত্য বা মিথ্যা | If true, the Edge Microgateway instance fetches its configuration data from the Redis database instead of from Apigee Edge. The Redis database must be the same one that the synchronizer is configured to write to. If the Redis database is unavailable or if the database is empty, the microgateway looks for an existing cache-config.yaml file for its configuration.If false (the default), the Edge Microgateway instance fetches configuration data from Apigee Edge as usual. |
edgemicro.config_change_poll_interval | Time interval, in seconds | Specifies the polling interval for the synchronizer to pull data from Apigee Edge. |
Configuring exclude URLs for plugins
You can configure the microgateway to skip the processing of plugins for specified URLs. You can configure these "exclude" URLs globally (for all plugins) or for specific plugins.
যেমন:
... edgemicro: ... plugins: excludeUrls: '/hello,/proxy_one' # global exclude urls sequence: - oauth - json2xml - quota json2xml: excludeUrls: '/hello/xml' # plugin level exclude urls ...
In this example, plugins will not process incoming API proxy calls with the paths /hello
or /proxy_one
. In addition, the json2xml
plugin will be skipped for APIs with /hello/xml
in their path.
Setting configuration attributes with environment variable values
You can specify environment variables using tags in the configuration file. The specified environment variable tags are replaced by the actual environment variable values. Replacements are stored in memory only and not stored in the original configuration or cache files.
In this example, the attribute key
is replaced by the value of the TARGETS_SSL_CLIENT_KEY
environment variable, and so on.
targets: - ssl: client: key: <E>TARGETS_SSL_CLIENT_KEY</E> cert: <E>TARGETS_SSL_CLIENT_CERT</E> passphrase: <E>TARGETS_SSL_CLIENT_PASSPHRASE</E>
In this example, the <n>
tag is used to indicate an integer value. Only positive integers are supported.
edgemicro: port: <E><n>EMG_PORT</n></E>
In this example, the <b>
tag is used to indicate a boolean ( that is, true or false) value.
quotas: useRedis: <E><b>EMG_USE_REDIS</b></E>