আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন .info- তে যান।
এই টপিকে একটি ডকার কন্টেইনারে কীভাবে এজ মাইক্রোগেটওয়ে চালানো যায় তা ব্যাখ্যা করা হয়েছে। এই টপিকে বর্ণিত ধাপগুলো ডকার, ডকার কমান্ড এবং এজ মাইক্রোগেটওয়ে সেটআপ ও কনফিগারেশন সম্পর্কে প্রাথমিক ধারণা আছে বলে ধরে নেওয়া হয়েছে। আরও তথ্যের জন্য, ডকার এবং এজ মাইক্রোগেটওয়ের ডকুমেন্টেশন দেখুন।
পূর্বশর্ত
ডকার কন্টেইনারে এজ মাইক্রোগেটওয়ে চালানোর আগে, আপনাকে অবশ্যই নিম্নলিখিত কাজগুলো করতে হবে:
আপনার Apigee অর্গানাইজেশন/এনভায়রনমেন্টের জন্য Edge Microgateway কনফিগার করুন:
edgemicro configure -o your_org -e your_env -u your_username
কনফিগারেশন সম্পর্কে আরও বিস্তারিত জানতে, পার্ট ১: এজ মাইক্রোগেটওয়ে কনফিগার করুন দেখুন।
কনফিগারেশন ধাপগুলো সম্পন্ন করার পর, কনফিগারেশন ফাইলটি খুঁজে বের করুন। এর ডিফল্ট অবস্থান এখানে:
$HOME/.edgemicro/your_org-your_env-config.yaml
যেখানে
your_orgএবংyour_envহলো সেই অর্গানাইজেশন এবং এনভায়রনমেন্ট যা আপনিedgemicro configকমান্ডটি চালানোর সময় ব্যবহার করেছিলেন। একটি ডকার কন্টেইনারে Edge Microgateway চালু করার সময় আপনার এই ফাইলটির প্রয়োজন হবে।নিশ্চিত করুন যে আপনার কাছে
edgemicro configকমান্ডটি চালানোর পর প্রাপ্ত key এবং secret credentials আছে। উদাহরণস্বরূপ:The following credentials are required to start edge micro key: d9c34e1aff68ed969273c016699eabf48780e4f652242e72fc88a43e21252cb0 secret: 3bc95a71c86a3c8ce04537fbcb788158731t51dfc6cdec13b7c05aa0bd969430একটি ডকার কন্টেইনারে Edge Microgateway শুরু করার আগে, অথেনটিকেটেড এপিআই প্রক্সি কল করার জন্য প্রয়োজনীয় Apigee Edge এনটিটিগুলো আপনাকে তৈরি করতে হবে (বা তৈরি করিয়ে নিতে হবে)। এই এনটিটিগুলোর মধ্যে রয়েছে একটি Edge Microgateway-aware প্রক্সি, একটি এপিআই প্রোডাক্ট, একজন ডেভেলপার এবং একটি ডেভেলপার অ্যাপ। সম্পূর্ণ নির্দেশাবলীর জন্য, "Apigee Edge-এ এনটিটি তৈরি করুন" দেখুন।
Edge Micro-কে একটি ডকার কন্টেইনার হিসেবে চালান
Edge Microgateway-এর জন্য ডকার ইমেজটি ডাউনলোড করুন:
docker pull gcr.io/apigee-microgateway/edgemicro:latest
পরবর্তী ধাপে যাওয়ার আগে, নিশ্চিত হয়ে নিন যে আপনি পূর্বশর্ত বিভাগে উল্লিখিত সমস্ত ধাপ সম্পন্ন করেছেন।
$HOME/.edgemicroতে অবস্থিত Edge Microgateway কনফিগারেশন ফাইলটিকে base64-এনকোড করতে নিম্নলিখিত কমান্ডটি চালান:export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`
যেখানে
your_orgএবংyour_envহলো সেই অর্গানাইজেশন এবং এনভায়রনমেন্ট যা আপনিedgemicro configকমান্ডটি চালানোর সময় ব্যবহার করেছিলেন।কমান্ডের চারপাশে ব্যাক-টিক (`) বসাতে মনে রাখবেন। উদাহরণস্বরূপ:
export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
Edge Microgateway-কে একটি কন্টেইনার হিসেবে চালান। এই কমান্ডটি বেশ কিছু এনভায়রনমেন্ট ভেরিয়েবল সেট করে, যা কন্টেইনার রানটাইম Edge Microgateway চালু করার জন্য ব্যবহার করে:
chown -R 100:101 ~/.edgemicro/ \ docker run -P -p 8000:8000 -d --name edgemicro \ -v /var/tmp:/opt/apigee/logs \ -e EDGEMICRO_PROCESSES=1 \ -e EDGEMICRO_ORG=your_org \ -e EDGEMICRO_ENV=your_env \ -e EDGEMICRO_KEY=your_key \ -e EDGEMICRO_SECRET=your_secret \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ -e "LOG_CONSOLE_OUTPUT_TO_FILE=false" \ -e SERVICE_NAME=edgemicro \ --security-opt=no-new-privileges \ --cap-drop=ALL \ gcr.io/apigee-microgateway/edgemicro:latest
প্যারামিটার
প্যারামিটার বর্ণনা -Pহোস্টের কাছে সমস্ত উন্মুক্ত পোর্ট প্রকাশ করুন। ডকার রান রেফারেন্সও দেখুন। -pএকটি একক পোর্ট বা পোর্টসমূহের একটি পরিসর স্পষ্টভাবে ম্যাপ করুন। আরও দেখুন ডকার রান রেফারেন্স । -dডিটাচড মোডে চালান। ডকার রান রেফারেন্সও দেখুন। -v, -- volumeএকটি ভলিউম মাউন্ট নির্দিষ্ট করে। মনে রাখবেন যে, যদি আপনি ডকার কন্টেইনারে TLS ব্যবহার করার জন্য Edge Microgateway কনফিগার করেন, তাহলে লগ ফাইল ডিরেক্টরি মাউন্ট করার সময় আপনাকে অবশ্যই 8443 পোর্টটি উন্মুক্ত করতে হবে। আরও দেখুন VOLUME [শেয়ার্ড ফাইলসিস্টেম] । আরও দেখুন ডকার কন্টেইনারে TLS ব্যবহার । -w, -- workdir(ঐচ্ছিক) সেই ডিরেক্টরির পথ নির্দিষ্ট করে যেখানে edgemicro.sockএবংedgemicro.pidফাইলগুলো তৈরি করা হবে। আপনি rootedgemicroফাইলের নামটি পরিবর্তন করতে পারবেন না। ডিফল্ট হিসেবে বর্তমান ওয়ার্কিং ডিরেক্টরির পথ ব্যবহৃত হয়।উদাহরণ:
docker run -P -p 8000:8000 -d -w /tmp --name edgemicro
...EDGEMICRO_ORGEdge Microgateway কনফিগার করতে আপনি যে Apigee অর্গানাইজেশনটি ব্যবহার করেছেন তার নাম। EDGEMICRO_ENVEdge Microgateway কনফিগার করতে আপনি যে Apigee এনভায়রনমেন্টটি ব্যবহার করেছেন তার নাম। EDGEMICRO_PROCESSESশুরু করার জন্য প্রসেসের সংখ্যা। EDGEMICRO_KEYআপনি Edge Microgateway কনফিগার করার সময় যে কী-টি ফেরত পেয়েছেন। EDGEMICRO_SECRETআপনি Edge Microgateway কনফিগার করার সময় গোপনীয় তথ্যটি ফেরত পেয়েছেন। EDGEMICRO_CONFIGএকটি ভেরিয়েবল, যা বেস৬৪-এনকোডেড এজ মাইক্রোগেটওয়ে কনফিগারেশন ফাইল ধারণ করে। LOG_CONSOLE_OUTPUT_TO_FILE(বুলিয়ান) লগ আউটপুট কোথায় পাঠানো হবে তা নির্দিষ্ট করার সুযোগ দেয়। লগ ফাইলের অপশন নির্দিষ্ট করা দেখুন। <tr> <td><code>SERVICE_NAME</code></td> <td>If you are on Kubernetes, this parameter is auto-populated. Otherwise, you can set it to anything you wish. If you specify nothing, the service name is set to <code>default</code>.</td> </tr> <tr> <tr> <td><code>DEBUG</code></td> <td>Set to <code>*</code> to enable debugging. </td> </tr> <tr> <td><code>HTTP_PROXY</code> <code>HTTPS_PROXY</code></td> <td>Use when Edge Microgateway is running behind a firewall and the gateway cannot communicate with Apigee Edge. For more information, see <a href="operation-and-configuration-reference-edge-microgateway#settingupedgemicrogatewaybehindacompanyfirewall">Setting up Edge Microgateway behind a company firewall</a>. <p>For example: <code>HTTP_PROXY=http://10.203.0.1:5187/</code></p></td> </tr> <tr> <td><code>NO_PROXY</code></td> <td>A comma delimited list of domains that Edge Microgateway should not proxy to. For more information, see <a href="operation-and-configuration-reference-edge-microgateway#settingupedgemicrogatewaybehindacompanyfirewall">Setting up Edge Microgateway behind a company firewall</a>. <p>For example: <code>localhost,127.0.0.1,localaddress,.localdomain.com</code></p></td> </tr> <tr> <tr> <tr> <td><code>NODE_EXTRA_CA_CERTS</code></td> <td>(Optional) Use this parameter if you are using a CA that's not trusted by default by Node.js. Set the value of this parameter to the path to a file containing one or more trusted certificates in PEM format. For details, see <a href="#tls_certificates">TLS certificates</a>.</td> </tr> <tr> <td><code>--security-opt</code></td> <td>(Optional) Sets desired Docker security options. See <a href="https://docs.docker.com/engine/reference/run/#security-configuration">Security configuration</a> in the Docker documentation.</td> </tr> <tr> <td><code>--cap-drop</code></td> <td>(Optional) Sets limits on Linux capabilities permitted in the container. See <a href="https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities">Runtime privilege and Linux capabilities</a> in the Docker documentation.</td> </tr> </tbody>উদাহরণস্বরূপ:
chown -R 100:101 ~/.edgemicro/
docker run -P -p 8000:8000 -d --name edgemicro
-v /var/tmp:/opt/apigee/logs
-e EDGEMICRO_PROCESS=1
-e EDGEMICRO_ORG=docs
-e EDGEMICRO_ENV=test
-e EDGEMICRO_KEY=d9c34e1aff68ed969273b016699eabf48780e4f652242e72fc88a23e21252cb0
-e EDGEMICRO_SECRET=3bc95a71c86a3c8ce04137fbcb788158731t51dfc6cdec13b7c05aa0bd969430
-e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG"
-e SERVICE_NAME=edgemicro
--security-opt=no-new-privileges
--cap-drop=ALL
gcr.io/apigee-microgateway/edgemicroকন্টেইনারটি চলছে কিনা তা পরীক্ষা করতে:
docker ps
আপনি নিম্নলিখিতের অনুরূপ আউটপুট দেখতে পাবেন:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8b92e082ea9c edgemicro "/tmp/entrypoint.sh" 12 minutes ago Up 12 minutes 0.0.0.0:8000->8000/tcp, 0.0.0.0:32775->8443/tcp edgemicro
লগ ফাইল আউটপুট বিকল্পগুলি নির্দিষ্ট করা
Edge Microgateway-এর `to_console` কনফিগারেশন প্যারামিটারটি আপনাকে লগ ফাইলের পরিবর্তে স্ট্যান্ডার্ড আউটপুটে লগ তথ্য পাঠানোর বিকল্প দেয়। আপনি যদি একটি ডকার কন্টেইনারে Edge Microgateway চালানোর ধাপগুলো অনুসরণ করেন, তাহলে কন্টেইনারটি ডিফল্টরূপে stdout এবং error আউটপুটকে কন্টেইনারের ভেতরে থাকা
${APIGEE_ROOT}/logs/edgemicro.logলোকেশনের একটি ফাইলে রিডাইরেক্ট করে।edgemicro.logএ লগ তথ্য পাঠানো বন্ধ করতে, কন্টেইনারটি চালানোর সময়LOG_CONSOLE_OUTPUT_TO_FILEভেরিয়েবলটি ব্যবহার করুন।নিম্নলিখিত সারণিতে
to_consoleসাথেLOG_CONSOLE_OUTPUT_TO_FILEব্যবহার করার সময় লগ আউটপুটের আচরণ বর্ণনা করা হয়েছে:to_console: trueLOG_CONSOLE_OUTPUT_TO_FILE=false- লগ ফাইল ব্যবস্থাপনা (Managing log files) অংশে বর্ণিত অনুযায়ী, Edge Microgateway লগ ফাইলে কোনো লগ পাঠানো হবে না।
- লগগুলো
edgemicro.logফাইলে পাঠানো হবে না।
to_console: trueLOG_CONSOLE_OUTPUT_TO_FILE=true- লগ ফাইল ব্যবস্থাপনা (Managing log files) অংশে বর্ণিত অনুযায়ী, Edge Microgateway লগ ফাইলে কোনো লগ পাঠানো হবে না।
- লগগুলো
edgemicro.logফাইলে পাঠানো হবে।
to_console: falseLOG_CONSOLE_OUTPUT_TO_FILE=true- লগ ফাইলগুলি পরিচালনা (Managing log files) অংশে বর্ণিত পদ্ধতি অনুসারে লগগুলি Edge Microgateway লগ ফাইলে পাঠানো হবে।
- লগগুলো
edgemicro.logফাইলে পাঠানো হবে।
একটি এপিআই কল পরীক্ষা করা হচ্ছে
কন্টেইনারে Edge Microgateway চালু করার পর, আপনি এতে API কল করতে পারবেন। উদাহরণস্বরূপ, যদি আপনার API-এর বেসপ্যাথ
/helloহয়:http://localhost:8000/hello
নমুনা আউটপুট:
{"error":"missing_authorization","error_description":"Missing Authorization header"}আপনি যদি এই প্রতিক্রিয়াটি দেখেন, তার মানে হলো Edge Microgateway সফলভাবে API কলটি পরিচালনা করেছে। তবে, ডিফল্টরূপে, Edge Microgateway প্রমাণীকরণের জন্য একটি API কী চায়। পরবর্তী অংশে, আপনি একটি বৈধ API কী দিয়ে API-টি পরীক্ষা করবেন।
বৈধ এপিআই কী দিয়ে একটি এপিআই পরীক্ষা করুন
Edge UI-তে, আপনার পূর্বে তৈরি করা ডেভেলপার অ্যাপটিতে যান। ডেভেলপার অ্যাপ পেজে, কনজিউমার কী (Consumer Key) দেখান এবং এটি কপি করুন। এই ভ্যালুটিই হলো এপিআই কী (API key)। অথেনটিকেটেড এপিআই কল করার জন্য আপনি এই কী-টি ব্যবহার করবেন।
নিম্নলিখিতভাবে
x-api-keyহেডার ব্যবহার করে API-কে কল করুন। আপনি ডেভেলপার অ্যাপ থেকে যে কনজিউমার কী (Consumer Key) ভ্যালুটি কপি করেছেন, সেটিই হলো API কী। ডিফল্টরূপে, Edge Microgateway আশা করে যে আপনিx-api-keyনামক একটি হেডারে কী-টি পাস করবেন, যেমনটা এখানে দেখানো হয়েছে:curl -i http://localhost:8000/hello -H "x-api-key:apikey"
উদাহরণস্বরূপ:
curl -i http://localhost:8000/hello -H "x-api-key:PydUKRDGIXRqF2xh4usn1FLHbhGKVIz"
আপনি যদি এপিআই কী এবং ওঅথ টোকেন ব্যবহার করে এজ মাইক্রোগেটওয়ের মাধ্যমে প্রমাণীকৃত এপিআই কল করা সম্পর্কে আরও জানতে চান, তাহলে পর্ব ৪: সুরক্ষিত এজ মাইক্রোগেটওয়ে দেখুন।
স্টপিং এজ মাইক্রোগেটওয়ে
Edge Microgateway বন্ধ করতে নিম্নলিখিত ডকার কমান্ডটি ব্যবহার করুন:
docker stop edgemicroএজ মাইক্রোগেটওয়ে পুনরায় চালু করা হচ্ছে
Edge Microgateway বন্ধ করার পর, আপনি এই ডকার কমান্ডটি দিয়ে এটি পুনরায় চালু করতে পারেন:
docker start edgemicroডকার কন্টেইনারে TLS ব্যবহার করা
এই বিভাগে একটি ডকার কন্টেইনারে চলমান এজ মাইক্রোগেটওয়ের জন্য টিএলএস কীভাবে কনফিগার করতে হয় তা ব্যাখ্যা করা হয়েছে। আপনি এজ মাইক্রোগেটওয়ে সার্ভারকে ইনকামিং রিকোয়েস্টের (নর্থবাউন্ড ডিরেকশন) জন্য টিএলএস ব্যবহার করতে কনফিগার করতে পারেন, এবং টার্গেট এন্ডপয়েন্টগুলিতে আউটগোয়িং রিকোয়েস্টের (সাউথবাউন্ড ডিরেকশন) জন্য এজ মাইক্রোগেটওয়েকে একটি টিএলএস ক্লায়েন্ট হিসেবে কনফিগার করতে পারেন।
সার্টিফিকেট ফাইলগুলো কোথায় রাখতে হবে
Edge Microgateway চালিত Docker কন্টেইনারটির
/opt/apigee/.edgemicroতে একটি মাউন্ট পয়েন্ট রয়েছে। যখন আপনি TLS সার্টিফিকেট ব্যবহার করার জন্য Edge Microgateway কনফিগার করেন, তখন আপনি সেই মাউন্ট পয়েন্টে সার্টিফিকেট ফাইলগুলো উপলব্ধ করতে পারেন এবং Edge Microgateway কনফিগারেশন ফাইলে সেগুলোর উল্লেখ করতে পারেন। এই কনফিগারেশন ফাইলটি সাধারণত$HOME/.edgemicroডিরেক্টরিতে থাকে এবং এর নাম হয়your_org - your_env -config.yaml। উদাহরণস্বরূপ:... edgemicro: ssl: key: /opt/apigee/.edgemicro/southbound/tls.key cert: /opt/apigee/.edgemicro/southbound/tls.crt ...Node.js দ্বারা বিশ্বস্ত নয় এমন একটি CA ব্যবহার করা
আপনি যদি এমন কোনো সার্টিফিকেট অথরিটি (CA) ব্যবহার করেন যা Node.js দ্বারা ডিফল্টভাবে বিশ্বস্ত নয় (যেমনটি সেলফ-সাইন্ড সার্টিফিকেটের ক্ষেত্রে হয়), তাহলে কন্টেইনারটি চালানোর সময়
NODE_EXTRA_CA_CERTSপ্যারামিটারটি ব্যবহার করার কথা বিবেচনা করতে পারেন।এই প্যারামিটারটিকে PEM ফরম্যাটে থাকা এক বা একাধিক বিশ্বস্ত সার্টিফিকেট সম্বলিত একটি ফাইলের পাথে সেট করুন। এই প্যারামিটারটি কীভাবে ব্যবহৃত হয় তা দেখতে, ' How to configure northbound TLS' এবং 'How to configure southbound TLS' উদাহরণগুলো দেখুন।
উদাহরণস্বরূপ:
chown -R 100:101 ~/.edgemicro/ \ docker run -P -p 8443:8443 -d --name edgemicro \ -v $HOME/.edgemicro:/opt/apigee/.edgemicro \ -v $HOME/.edgemicro:/opt/apigee/logs \ -e NODE_EXTRA_CA_CERTS=/opt/apigee/.edgemicro/rootca.pem \ -e EDGEMICRO_PORT=8443 \ -e EDGEMICRO_ORG=docs \ -e EDGEMICRO_ENV=test \ -e EDGEMICRO_KEY=ac36574905fb54fdae65fc5433e831bec2680efb98220a355f2e917e52973c \ -e EDGEMICRO_SECRET=aac81dff6c326eaa222d53c15c8841fa78ea863bf4472568c9ce2d80a3bc56 \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ --link helloworld:helloworld gcr.io/apigee-microgateway/edgemicroআরও দেখুন Edge Micro-কে একটি Docker কন্টেইনার হিসেবে চালান ।
TLS যাচাইকরণ বন্ধ করা
যদিও এটি সুপারিশ করা হয় না, কিছু ক্ষেত্রে আপনি একটি কন্টেইনারে চলমান Edge Microgateway-এর জন্য TLS ভ্যালিডেশন নিষ্ক্রিয় করতে চাইতে পারেন। ডিফল্টরূপে Edge Microgateway ডকার কন্টেইনারে TLS নিষ্ক্রিয় করার ক্ষমতাটি অন্তর্ভুক্ত থাকে না। এই কাজটি সম্পন্ন করার জন্য, আপনাকে Edge Microgateway-এর জন্য একটি কাস্টমাইজড ডকার ইমেজ তৈরি করতে হবে। নিচে কাস্টম ইমেজ তৈরি এবং TLS ভ্যালিডেশন বন্ধ করার জন্য সাধারণ নির্দেশাবলী দেওয়া হলো।
https://github.com/apigee-internal/microgatewayথেকে Edge Microgateway সোর্স রিপোজিটরিটি ক্লোন বা ডাউনলোড করুন।সোর্স কোড ডিরেক্টরিতে থাকা
microgateway/kubernetes/docker/edgemicroডিরেক্টরিতেcd।উদাহরণস্বরূপ:
cd $HOME/git/microgateway/kubernetes/docker/edgemicroentrypoint.shফাইলটি খুলুন এবংNODE_TLS_REJECT_UNAUTHORIZEDএনভায়রনমেন্ট ভেরিয়েবলটি গ্রহণ করার জন্য কোডটি পরিবর্তন করুন। পরবর্তীতে, যখন আপনি কন্টেইনারটি চালাবেন, তখন এই ভেরিয়েবলটির জন্য একটি মান নির্দিষ্ট করে দেবেন।ডকার কন্টেইনারটি তৈরি করুন:
docker build -t edgemicro .যখন আপনি কন্টেইনারটি চালাবেন, তখন
-e NODE_TLS_REJECT_UNAUTHORIZED = 1অপশনটি নির্দিষ্ট করুন। উদাহরণস্বরূপ:
chown -R 100:101 ~/.edgemicro/ \ docker run -P -p 8443:8443 -d --name edgemicro \ -v $HOME/.edgemicro:/opt/apigee/.edgemicro \ -v $HOME/.edgemicro:/opt/apigee/logs \ -e NODE_TLS_REJECT_UNAUTHORIZED = 1 \ -e EDGEMICRO_PORT=8443 \ -e EDGEMICRO_ORG=docs \ -e EDGEMICRO_ENV=test \ -e EDGEMICRO_KEY=ac36574905fb54fdae65fc5433e831bec2680efb98220a355f2e917e52973c \ -e EDGEMICRO_SECRET=aac81dff6c326eaa222d53c15c8841fa78ea863bf4472568c9ce2d80a3bc56 \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ --link helloworld:helloworld gcr.io/apigee-microgateway/edgemicroউদাহরণ: নর্থবাউন্ড TLS কীভাবে কনফিগার করবেন
এই বিভাগে এজ মাইক্রোগেটওয়ে সার্ভারে কীভাবে একটি নর্থবাউন্ড (ইনকামিং) TLS সংযোগ স্থাপন করতে হয় তা ব্যাখ্যা করা হয়েছে। নর্থবাউন্ড TLS ক্লায়েন্টদের এজ মাইক্রোগেটওয়েতে API কল করার সময় HTTPS ব্যবহার করার সুযোগ দেয়। নীচের উদাহরণটিতে সেলফ-সাইন্ড সার্টিফিকেট ব্যবহার করা হয়েছে।
১. প্রাথমিক সেটআপের ধাপসমূহ
- আপনার সিস্টেমে
openssl.cnfফাইলটি খুঁজুন। উদাহরণস্বরূপ,/etc/ssl/openssl.cnf। - সম্পাদনার জন্য
opensssl.cnfফাইলটি খুলুন। আপনার কনফিগারেশন ফাইলে
req_extensionsগুলো আছে কিনা তা নিশ্চিত করুন। উদাহরণস্বরূপ, আপনার ফাইলে নিম্নলিখিত তথ্যের মতো তথ্য থাকা উচিত:[ req ] ... req_extensions = v3_req ... [ v3_req ] extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEnciphermentসঠিক SNI অ্যাট্রিবিউট তৈরি করতে
openssl.cnfএ নিম্নলিখিত স্ট্যানজাটি যোগ করুন:[ alt_names ] DNS.1 = www.example.com DNS.2 = example.com DNS.3 = localhost DNS.4 = localhost.localdomain DNS.5 = 127.0.0.1 DNS.6 = ::1 DNS.7 = fe80::1opensssl.cnfফাইলের উদাহরণ:[ req ] distinguished_name = req_distinguished_name attributes = req_attributes req_extensions = v3_req [ v3_req ] extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment [ req_distinguished_name ] countryName = Country Name (2 letter code) countryName_min = 2 countryName_max = 2 stateOrProvinceName = State or Province Name (full name) localityName = Locality Name (eg, city) 0.organizationName = Organization Name (eg, company) organizationalUnitName = Organizational Unit Name (eg, section) commonName = Common Name (eg, fully qualified host name) commonName_max = 64 emailAddress = Email Address emailAddress_max = 64 [ req_attributes ] challengePassword = A challenge password challengePassword_min = 4 challengePassword_max = 20 [ alt_names ] DNS.1 = www.example.com DNS.2 = example.com DNS.3 = localhost DNS.4 = localhost.localdomain DNS.5 = 127.0.0.1 DNS.6 = ::1 DNS.7 = fe80::1আপনি যদি আগে থেকে Edge Microgateway ইনিশিয়ালাইজ এবং কনফিগার না করে থাকেন, তবে তা করার জন্য পূর্বশর্ত (Prerequisites) বিভাগে দেওয়া ধাপগুলো অনুসরণ করুন। এটি সম্পন্ন হলে, আপনার একটি Edge Microgateway-aware প্রক্সি, একটি API প্রোডাক্ট, একটি ডেভেলপার এবং একটি ডেভেলপার অ্যাপ তৈরি হয়ে যাবে। এছাড়াও, আপনাকে
edgemicro configureকমান্ডটি চালাতে হবে এবং একটি key ও secret পেতে হবে।
২. স্ব-স্বাক্ষরিত সার্টিফিকেট তৈরি করুন
এরপরে, TLS স্থাপনের জন্য প্রয়োজনীয় সার্টিফিকেট এবং কীগুলো তৈরি করুন:
-
$HOME/.edgemicroডিরেক্টরিতেcd। নিম্নলিখিত ব্যাশ স্ক্রিপ্টটি তৈরি করুন। আপনি আপনার ইচ্ছামতো এর নাম দিতে পারেন। উদাহরণস্বরূপ:
keygen.sh।#!/bin/bash # generate ca openssl genrsa -out rootca.key 2048 openssl req -x509 -new -nodes -key rootca.key -sha256 -days 1024 -out rootca.pem # generate key openssl genrsa -out tls.key 2048 openssl req -new -key tls.key -out tls.csr # sign cert openssl x509 -req -in tls.csr -CA rootca.pem -CAkey rootca.key -CAcreateserial -out tls.crt -days 1024 -sha256 -extensions 'v3_req' -extfile path/openssl.cnf
bash ফাইলে
openssl.cnfফাইলের পাথটি সঠিক আছে কিনা, তা নিশ্চিত করুন।ব্যাশ ফাইলটি চালান। আপনার কাছে সার্টিফিকেটের তথ্য চাওয়া হবে। কমন নেম (Common Name) হিসেবে অবশ্যই
localhostব্যবহার করবেন।নিম্নলিখিত ফাইলগুলি তৈরি হয়েছে কিনা তা পরীক্ষা করুন:
-
rootca.key -
rootca.pem -
tls.key -
tls.csr -
rootca.srl -
tls.crt
-
৩. Edge Microgateway কনফিগারেশন ফাইলটি সম্পাদনা করুন
একটি এডিটরে Edge Micro কনফিগ ফাইলটি খুলুন। উদাহরণস্বরূপ:
vi $HOME/.edgemicro/myorg-test-config.yamledgemicroস্ট্যানজাটি নিম্নরূপভাবে সম্পাদনা করুন। লক্ষ্য করুন যে আপনিportএবংsslঅ্যাট্রিবিউটগুলিতে পরিবর্তন করছেন:edge_config: ... edgemicro: port: 8443 max_connections: 1000 config_change_poll_interval: 600 ssl: key: /opt/apigee/.edgemicro/tls.key cert: /opt/apigee/.edgemicro/tls.crt passphrase: admin123 rejectUnauthorized: true requestCert: false logging: ...$HOME/.edgemicroতে অবস্থিত Edge Microgateway কনফিগারেশন ফাইলটিকে base64-এনকোড করতে নিম্নলিখিত কমান্ডটি চালান:export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`
যেখানে
your_orgএবংyour_envহলো সেই অর্গানাইজেশন এবং এনভায়রনমেন্ট যা আপনিedgemicro configকমান্ডটি চালানোর সময় ব্যবহার করেছিলেন।কমান্ডের চারপাশে ব্যাক-টিক (`) বসাতে মনে রাখবেন। উদাহরণস্বরূপ:
export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
আরও দেখুন, Edge Micro-কে একটি ডকার কন্টেইনার হিসেবে চালান ।
৪. কন্টেইনারটি চালান।
Edge Microgateway সহ Docker কন্টেইনারটি চালানোর জন্য নিম্নলিখিত কমান্ডটি চালান:
chown -R 100:101 ~/.edgemicro/ \ docker run -P -p 8443:8443 -d --name edgemicro \ -v path_to_your_edgemicro_dir:/opt/apigee/.edgemicro \ -v path_to_your_logs_dir:/opt/apigee/logs \ -e NODE_EXTRA_CA_CERTS=/opt/apigee/.edgemicro/rootca.pem \ -e EDGEMICRO_PORT=8443 \ -e EDGEMICRO_ORG=$EDGEMICRO_ORG \ -e EDGEMICRO_ENV=$EDGEMICRO_ENV \ -e EDGEMICRO_KEY=$EDGEMICRO_KEY \ -e EDGEMICRO_SECRET=$EDGEMICRO_SECRET \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ gcr.io/apigee-microgateway/edgemicro:latest
কমান্ডে ব্যবহৃত নিম্নলিখিত প্যারামিটারগুলো লক্ষ্য করুন; এগুলো "Run Edge Micro as a Docker container" অংশে বর্ণিত মৌলিক কমান্ড থেকে ভিন্ন।
-
port8443এ সেট করা আছে। - কী এবং সার্টিফিকেট ফাইলগুলো মাউন্ট করার জন্য ভলিউম মাউন্ট ব্যবহার করা হয়।
-
NODE_EXTRA_CA_CERTSভেরিয়েবলটি একটি কাস্টম CA যোগ করতে ব্যবহৃত হয় (যেমনটি সেলফ-সাইন্ড সার্টিফিকেটের ক্ষেত্রে প্রয়োজন হয়)।
-
৫. TLS কনফিগারেশন পরীক্ষা করুন
সেটআপটি পরীক্ষা করার জন্য নিম্নলিখিত cURL কমান্ডটি চালান। কমান্ডে আপনার বেসপাথ এবং এপিআই কী প্রতিস্থাপন করুন। নিম্নলিখিত উদাহরণটি ধরে নেয় যে আপনি সেই ডিরেক্টরিতে আছেন যেখানে
rootca.pemঅবস্থিত এবং আপনার তৈরি করা প্রক্সির বেসপাথ হল/hello:curl -v https://localhost:8443/hello --cacert rootca.pem \ -H "x-api-key: Az82fdnfONVCOOE4NKhajxAboDgA3FAo"বিস্তারিত cURL আউটপুটে TLS হ্যান্ডশেকিংয়ের প্রতিটি ধাপ দেখানো হয়। যদি আপনি একটি HTTP 200 রেসপন্স দেখতে পান, তাহলে কনফিগারেশনটি সফল হয়েছে:
* Trying ::1...ey:Az82fdnfONVCOOE4NKhajxAboDgA3FAo" * TCP_NODELAY set * Connected to localhost (::1) port 8443 (#0) * ALPN, offering h2 * ALPN, offering http/1.1 * Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH * successfully set certificate verify locations: * CAfile: rootca.pem CApath: none * TLSv1.2 (OUT), TLS handshake, Client hello (1): * TLSv1.2 (IN), TLS handshake, Server hello (2): * TLSv1.2 (IN), TLS handshake, Certificate (11): * TLSv1.2 (IN), TLS handshake, Server key exchange (12): * TLSv1.2 (IN), TLS handshake, Server finished (14): * TLSv1.2 (OUT), TLS handshake, Client key exchange (16): * TLSv1.2 (OUT), TLS change cipher, Client hello (1): * TLSv1.2 (OUT), TLS handshake, Finished (20): * TLSv1.2 (IN), TLS change cipher, Client hello (1): * TLSv1.2 (IN), TLS handshake, Finished (20): * SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256 * ALPN, server accepted to use http/1.1 * Server certificate: * subject: C=US; ST=CO; L=Boulder; O=Docs; OU=Docs; CN=localhost; emailAddress=docs@apigee.com * start date: Dec 14 22:35:28 2018 GMT * expire date: Oct 3 22:35:28 2021 GMT * common name: localhost (matched) * issuer: C=US; ST=CO; L=Boulder; O=Docs; OU=Docs; CN=localhost; emailAddress=docs@apigee.com * SSL certificate verify ok. > GET /hello HTTP/1.1 > Host: localhost:8443 > User-Agent: curl/7.54.0 > Accept: */* > x-api-key:Az82fdnfaONVCOE4NKhajxAboDA3FAo > < HTTP/1.1 200 OK < x-powered-by: Apigee < access-control-allow-origin: * < x-frame-options: ALLOW-FROM RESOURCE-URL < x-xss-protection: 1 < x-content-type-options: nosniff < content-type: text/plain; charset=utf-8 < etag: W/"d-GHB1ZrJKk/wdVTdB/jgBsw" < date: Fri, 14 Dec 2018 22:43:13 GMT < via: 1.1 google < alt-svc: clear < x-response-time: 1325 < Connection: keep-alive < Transfer-Encoding: chunked < * Connection #0 to host localhost left intact Hello, Guest!
উদাহরণ: সাউথবাউন্ড TLS কীভাবে কনফিগার করবেন
এই অংশে এজ মাইক্রোগেটওয়ে সার্ভার এবং একটি ব্যাকএন্ড টার্গেট অ্যাপ্লিকেশনের মধ্যে কীভাবে একটি সাউথবাউন্ড (আউটগোয়িং) TLS সংযোগ স্থাপন করতে হয়, তা ব্যাখ্যা করা হয়েছে। নিচের উদাহরণটিতে সেলফ-সাইন্ড সার্টিফিকেট ব্যবহার করা হয়েছে।
১. প্রাথমিক সেটআপের ধাপসমূহ
- আপনার সিস্টেমে
openssl.cnfফাইলটি খুঁজুন। উদাহরণস্বরূপ,/etc/ssl/openssl.cnf। - সম্পাদনার জন্য
opensssl.cnfফাইলটি খুলুন। আপনার কনফিগারেশন ফাইলে
req_extensionsগুলো আছে কিনা তা নিশ্চিত করুন। উদাহরণস্বরূপ, আপনার ফাইলে নিম্নলিখিত তথ্যের মতো তথ্য থাকা উচিত:[ req ] ... req_extensions = v3_req ... [ v3_req ] extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEnciphermentসঠিক SNI অ্যাট্রিবিউট তৈরি করতে
openssl.cnfএ নিম্নলিখিত স্ট্যানজাটি যোগ করুন:[ alt_names ] DNS.1 = helloworld DNS.2 = localhost DNS.3 = localhost.localdomain DNS.4 = 127.0.0.1 DNS.5 = ::1 DNS.6 = fe80::1opensssl.cnfফাইলের উদাহরণ:[ req ] distinguished_name = req_distinguished_name attributes = req_attributes req_extensions = v3_req [ v3_req ] extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment [ req_distinguished_name ] countryName = Country Name (2 letter code) countryName_min = 2 countryName_max = 2 stateOrProvinceName = State or Province Name (full name) localityName = Locality Name (eg, city) 0.organizationName = Organization Name (eg, company) organizationalUnitName = Organizational Unit Name (eg, section) commonName = Common Name (eg, fully qualified host name) commonName_max = 64 emailAddress = Email Address emailAddress_max = 64 [ req_attributes ] challengePassword = A challenge password challengePassword_min = 4 challengePassword_max = 20 [ alt_names ] DNS.1 = helloworld DNS.2 = localhost DNS.3 = localhost.localdomain DNS.4 = 127.0.0.1 DNS.5 = ::1 DNS.6 = fe80::1edgemicro configureকমান্ডটি চালান:edgemicro configure -o your_org -e your_env -u your_username
কনফিগারেশন সম্পর্কে আরও বিস্তারিত জানতে, পার্ট ১: এজ মাইক্রোগেটওয়ে কনফিগার করুন দেখুন।
edgemicro configureথেকে প্রাপ্ত key এবং secret ক্রেডেনশিয়ালগুলো কপি করুন। কন্টেইনারটি চালানোর জন্য আপনার এই মানগুলো প্রয়োজন হবে। উদাহরণস্বরূপ:The following credentials are required to start edge micro key: d9c34e1aff68ed969273c016699eabf48780e4f652242e72fc88a43e21252cb0 secret: 3bc95a71c86a3c8ce04537fbcb788158731t51dfc6cdec13b7c05aa0bd969430
২. একটি Node.js টার্গেট অ্যাপ্লিকেশন তৈরি করুন।
.edgemicroডিরেক্টরিতেcd।নিম্নলিখিত ব্যাশ স্ক্রিপ্টটি তৈরি করুন। আপনি আপনার ইচ্ছামতো এর নাম দিতে পারেন। উদাহরণস্বরূপ:
keygen.sh।#!/bin/bash # generate ca openssl genrsa -out rootca.key 2048 openssl req -x509 -new -nodes -key rootca.key -sha256 -days 1024 -out rootca.pem # generate key openssl genrsa -out tls.key 2048 openssl req -new -key tls.key -out tls.csr # sign cert openssl x509 -req -in tls.csr -CA rootca.pem -CAkey rootca.key -CAcreateserial -out tls.crt -days 1024 -sha256 -extensions 'v3_req' -extfile path/openssl.cnf
bash ফাইলে
openssl.cnfফাইলের পাথটি সঠিক আছে কিনা, তা নিশ্চিত করুন।ব্যাশ ফাইলটি চালান। আপনাকে সার্টিফিকেটের তথ্য দিতে বলা হবে। কমন নেম (Common Name) হিসেবে অবশ্যই
hellworldব্যবহার করবেন।নিম্নলিখিত ফাইলগুলি তৈরি হয়েছে কিনা তা পরীক্ষা করুন:
-
rootca.key -
rootca.pem -
tls.key -
tls.csr -
rootca.srl -
tls.crt
-
server.jsনামে একটি নতুন ফাইল তৈরি করুন।'use strict'; const express = require('express'); const https = require('https'); const fs = require('fs'); const options = { key: fs.readFileSync("tls.key"), cert: fs.readFileSync("tls.crt") }; // Constants const PORT = 9443; const HOST = '0.0.0.0'; // App const app = express(); app.get('/', (req, res) => { res.send('Hello world\n'); }); https.createServer(options, app).listen(PORT);server.jsফাইলের ডিরেক্টরিতেই একটিpackage.jsonফাইল তৈরি করুন। উদাহরণস্বরূপ:{ "name": "helloworld", "version": "1.0.0", "description": "", "main": "server.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "node server.js" }, "author": "", "license": "ISC", "dependencies": { "express": "^4.16.4", "fs": "0.0.1-security", "https": "^1.0.0" } }ডিপেন্ডেন্সিগুলো পেতে
npm installচালান।server.jsফাইলটি যে ডিরেক্টরিতে আছে, সেই একই ডিরেক্টরিতে একটি নতুন Dockerfile তৈরি করুন, যেখানেWORKDIRহলো আপনার Node.js অ্যাপের রুটের পাথ:FROM node:8-alpine WORKDIR path-to-your-node-app COPY package*.json ./ RUN npm install COPY . . EXPOSE 9443 CMD [ "npm", "start" ]
ডকার ইমেজটি তৈরি করুন:
docker build -t helloworld .নমুনা অ্যাপটি চালু করুন:
docker run -P -p 9443:9443 --name helloworld helloworld
৩. Apigee Edge-এ এনটিটি তৈরি করুন
এই সেটিংস ব্যবহার করে একটি Edge Microgateway-aware প্রক্সি তৈরি করুন। আরও তথ্যের জন্য, Edge-এ একটি Edge Microgateway-aware API প্রক্সি তৈরি করুন দেখুন।
- প্রক্সি নাম:
edgemicro_local - সংশোধন:
1 - বেসপাথ:
/local - লক্ষ্য:
https://helloworld:9443
- প্রক্সি নাম:
একটি এপিআই পণ্য তৈরি করুন। বিস্তারিত জানতে, ‘পণ্য তৈরি করুন’ দেখুন।
একজন ডেভেলপার তৈরি করুন। বিস্তারিত জানতে, ‘একজন ডেভেলপার তৈরি করুন’ দেখুন।
একটি ডেভেলপার অ্যাপ তৈরি করুন। বিস্তারিত জানতে, ‘ডেভেলপার অ্যাপ তৈরি করুন’ দেখুন।
৪. কন্টেইনারটি চালান।
একটি এডিটরে Edge Micro কনফিগ ফাইলটি খুলুন। উদাহরণস্বরূপ:
vi $HOME/.edgemicro/myorg-test-config.yamledgemicroস্ট্যানজাটি নিম্নরূপভাবে সম্পাদনা করুন। লক্ষ্য করুন যে আপনিportএবংsslঅ্যাট্রিবিউটগুলিতে পরিবর্তন করছেন:edge_config: ... edgemicro: port: 8443 max_connections: 1000 config_change_poll_interval: 600 ssl: key: /opt/apigee/.edgemicro/tls.key cert: /opt/apigee/.edgemicro/tls.crt passphrase: admin123 rejectUnauthorized: true requestCert: false logging: ...$HOME/.edgemicroতে অবস্থিত Edge Microgateway কনফিগারেশন ফাইলটিকে base64-এনকোড করতে নিম্নলিখিত কমান্ডটি চালান:export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`
যেখানে
your_orgএবংyour_envহলো সেই অর্গানাইজেশন এবং এনভায়রনমেন্ট যা আপনিedgemicro configকমান্ডটি চালানোর সময় ব্যবহার করেছিলেন।কমান্ডের চারপাশে ব্যাক-টিক (`) বসাতে মনে রাখবেন। উদাহরণস্বরূপ:
export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
ডকার কন্টেইনারে এজ মাইক্রোগেটওয়ে চালু করতে নিম্নলিখিত কমান্ডটি চালান।
chown -R 100:101 ~/.edgemicro/ \ docker run -P -p 8443:8443 -d --name edgemicro \ -v path_to_your_edgemicro_dir:/opt/apigee/.edgemicro \ -v path_to_your_logs_dir:/opt/apigee/logs \ -e EDGEMICRO_PORT=8443 \ -e EDGEMICRO_ORG=$EDGEMICRO_ORG \ -e EDGEMICRO_ENV=$EDGEMICRO_ENV \ -e EDGEMICRO_KEY=$EDGEMICRO_KEY \ -e EDGEMICRO_SECRET=$EDGEMICRO_SECRET \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ --link helloworld:helloworld gcr.io/apigee-microgateway/edgemicro
৫. TLS কনফিগারেশন পরীক্ষা করুন
সেটআপটি পরীক্ষা করার জন্য নিম্নলিখিত cURL কমান্ডটি চালান। আপনার মাইক্রোগেটওয়ে-অ্যাওয়্যার প্রক্সিতে ব্যবহৃত বেসপাথ এবং Apigee Edge-এ তৈরি করা ডেভেলপার অ্যাপ থেকে প্রাপ্ত API কী-টি এখানে প্রতিস্থাপন করুন। উদাহরণস্বরূপ:
curl https://localhost:8443/local -k -H "x-api-key: xxxx" -vআপনি এই ত্রুটিটি দেখতে পাবেন:
... * subject: C=CA; ST=Ontario; L=Toronto; O=Google Canada; OU=Google Cloud Platform; CN=edgemicro; emailAddress=srinandans@google.com * start date: Dec 10 02:12:22 2018 GMT * expire date: Sep 29 02:12:22 2021 GMT * issuer: C=CA; ST=Ontario; L=Toronto; O=Google Canada; OU=Google Cloud Platform; CN=edgemicro; emailAddress=srinandans@google.com * SSL certificate verify result: unable to get local issuer certificate (20), continuing anyway. > GET /local HTTP/1.1 > Host: localhost:8443 > User-Agent: curl/7.54.0 > Accept: */* > x-api-key: 9fVC65pFj8LrmlPmVyxFjx4KgAHTxqSd > < HTTP/1.1 502 Bad Gateway < Date: Wed, 12 Dec 2018 05:25:01 GMT < Connection: keep-alive < Content-Length: 93 < * Connection #0 to host localhost left intact {"message":"unable to verify the first certificate","code":"UNABLE_TO_VERIFY_LEAF_SIGNATURE"}Edge Microgateway পুনরায় চালান, তবে এবার
NODE_EXTRA_CA_CERTSভেরিয়েবলটি যোগ করুন।chown -R 100:101 ~/.edgemicro/ \ docker run -P -p 8443:8443 -d --name edgemicro \ -v path_to_your_edgemicro_dir:/opt/apigee/.edgemicro \ -v path_to_your_logs_dir:/opt/apigee/logs \ -e NODE_EXTRA_CA_CERTS=/opt/apigee/.edgemicro/rootca.pem \ -e EDGEMICRO_PORT=8443 \ -e EDGEMICRO_ORG=$EDGEMICRO_ORG \ -e EDGEMICRO_ENV=$EDGEMICRO_ENV \ -e EDGEMICRO_KEY=$EDGEMICRO_KEY \ -e EDGEMICRO_SECRET=$EDGEMICRO_SECRET \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ --link helloworld:helloworld gcr.io/apigee-microgateway/edgemicro
নিম্নলিখিত cURL কমান্ডটি চালান। আগের মতোই আপনার বেসপাথ এবং এপিআই কী প্রতিস্থাপন করুন। উদাহরণস্বরূপ:
curl https://localhost:8443/local -k -H "x-api-key: xxxx" -vআউটপুটটি যাচাই করুন। সফল হলে, আপনি একটি HTTP 200 স্ট্যাটাস রেসপন্স পাবেন:
... > GET /local HTTP/1.1 > Host: localhost:8443 > User-Agent: curl/7.54.0 > Accept: */* > x-api-key: 9fVC65pFj8LrmlPmVyxFjx4KgAHTxqSd > < HTTP/1.1 200 OK < x-powered-by: Express < content-type: text/html; charset=utf-8 < etag: W/"c-M6tWOb/Y57lesdjQuHeB1P/qTV0" < date: Wed, 12 Dec 2018 05:49:28 GMT < x-response-time: 421 < Connection: keep-alive < Transfer-Encoding: chunked < Hello world
একটি কাস্টম প্লাগইন যোগ করা
কাস্টম প্লাগইন লিখে আপনি মাইক্রোগেটওয়েতে নতুন বৈশিষ্ট্য ও সক্ষমতা যোগ করতে পারেন। কাস্টম প্লাগইন আপনাকে মাইক্রোগেটওয়ের মধ্য দিয়ে প্রবাহিত অনুরোধ এবং প্রতিক্রিয়াগুলির সাথে প্রোগ্রাম্যাটিকভাবে যোগাযোগ করার সুযোগ দেয়।
ডকার কন্টেইনারে চলমান একটি এজ মাইক্রোগেটওয়ে ইনস্ট্যান্সে প্লাগইন স্থাপন করার জন্য আপনার কাছে দুটি বিকল্প রয়েছে:
- বিকল্প A: প্লাগইন ডিরেক্টরিটি একটি ভলিউমে মাউন্ট করুন।
- বিকল্প B: প্লাগইনগুলিকে কন্টেইনারের মধ্যে তৈরি করুন
এই বিভাগের বাকি অংশে ধরে নেওয়া হচ্ছে যে আপনি একটি স্ট্যান্ডার্ড এজ মাইক্রোগেটওয়ে সেটআপের জন্য প্লাগইন লেখা এবং কনফিগার করার বিষয়ে পরিচিত। যদি তা না হয়, তবে কাস্টম প্লাগইন তৈরি করুন (Develop custom plugins) অংশটি দেখুন।
বিকল্প A: প্লাগইন ডিরেক্টরিটি একটি ভলিউমে মাউন্ট করুন।
(v.2.5.27-এ যোগ করা হয়েছে) ভলিউম মাউন্টের মাধ্যমে প্লাগইন যোগ করার ধাপগুলো Edge Microgateway-তে যেকোনো কাস্টম প্লাগইন যোগ করার ধাপগুলোর মতোই। যখন আপনি ডকার কন্টেইনারটি চালান, তখন আপনি আপনার লোকাল সিস্টেমের প্লাগইন ডিরেক্টরিটি (ভলিউম) কন্টেইনার মাউন্ট পয়েন্টে মাউন্ট করতে পারেন, যা হলো
/opt/apigee/plugins। এরপর আপনি Edge Microgateway কনফিগারেশন ফাইলে লোকাল ভলিউম ডিরেক্টরিটি নির্দিষ্ট করে দেন।নিম্নলিখিত ধাপগুলিতে দেখানো হয়েছে কিভাবে একটি ডকার মাউন্ট পয়েন্ট ব্যবহার করে কাস্টম প্লাগইন অন্তর্ভুক্ত করা যায়।
এজ মাইক্রোগেটওয়ে বন্ধ করুন:
edgemicro stopআপনার কাস্টম প্লাগইনগুলির জন্য একটি ডিরেক্টরি তৈরি করুন। উদাহরণস্বরূপ, তৈরি করুন
$HOME/edgemicro/custom/pluginsEdge Microgateway কনফিগারেশন ফাইলে কাস্টম প্লাগইন ডিরেক্টরিটি যোগ করুন। উদাহরণস্বরূপ:
plugins: dir: $HOME/edgemicro/custom/plugins sequence: - oauth - response-uppercase ````"একটি সাধারণ প্লাগইন লিখুন" এর নির্দেশাবলী অনুসারে আপনার প্লাগইনটি লিখুন এবং পরীক্ষা করুন। আপনার প্লাগইন কোডটি সঠিক ডিরেক্টরি কাঠামোতে রাখতে ভুলবেন না। উদাহরণস্বরূপ:
custom | |-- plugins | |- response-uppercase | |- index.js | |- package.json |- request-headers | | - index.js | - package.jsonনিচের মতো একটি কমান্ড দিয়ে ডকার কন্টেইনারটি চালান, যেখানে আপনি প্লাগইন ডিরেক্টরিটি ডকার ভলিউমে মাউন্ট করার জন্য
-vঅপশনটি ব্যবহার করবেন। নিচের উদাহরণ কমান্ডে, প্লাগইন ডিরেক্টরি$HOME/edgemicro/custom/plugins(যেখানে কাস্টম প্লাগইনটি অবস্থিত) কন্টেইনারের মাউন্ট পয়েন্ট/opt/apigee/pluginsএ ম্যাপ করা হয়েছে:chown -R 100:101 ~/.edgemicro/ \ docker run -P -p 8000:8000 -d --name edgemicro \ -v /var/tmp:/opt/apigee/logs \ -v $HOME/edgemicro/custom/plugins:/opt/apigee/plugins \ -e EDGEMICRO_PROCESSES=1 \ -e EDGEMICRO_ORG=jdoe \ -e EDGEMICRO_ENV=test \ -e EDGEMICRO_KEY=39c4b561100cd7f258768d1072f3e1d7c17b5f36a18fe89972bb5c9ce7e58fb \ -e EDGEMICRO_SECRET=f5f9e239a38b4e6cc99c2aa067716a84aebdcff9580a7925fc500e402b1a5fa \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ -e SERVICE_NAME=edgemicro \ --security-opt=no-new-privileges \ --cap-drop=ALL gcr.io/apigee-microgateway/edgemicro:latestপ্লাগইনটি পরীক্ষা করতে আপনার এপিআই কল করুন।
আরও তথ্যের জন্য, ভলিউম [শেয়ার্ড ফাইলসিস্টেম] দেখুন।
বিকল্প B: প্লাগইনগুলিকে কন্টেইনারের মধ্যে তৈরি করুন
এই বিকল্পে, আপনি প্লাগইনগুলিকে আপনার কন্টেইনারের মধ্যে বিল্ড করেন।
১. আপনার প্লাগইনগুলি প্যাকেজ করুন
"একটি সহজ প্লাগইন লিখুন" এর নির্দেশাবলী অনুসারে আপনার প্লাগইনটি লিখুন এবং পরীক্ষা করুন।
আপনার প্লাগইন কোড সঠিক ডিরেক্টরি কাঠামোতে রাখুন। প্লাগইন ডিরেক্টরিগুলোকে অবশ্যই একটি নির্দিষ্ট কাঠামো অনুসরণ করতে হবে। নিম্নলিখিত উদাহরণটি সেই কাঠামো দেখায় যা আপনাকে অবশ্যই অনুসরণ করতে হবে, যেখানে
response-uppercaseএবংrequest-headersহলো কাস্টম প্লাগইন কোড ধারণকারী ফোল্ডারগুলোর নাম (এই নামগুলো শুধুমাত্র উদাহরণ, আপনার ফোল্ডারের নাম ভিন্ন হতে পারে):plugin | |-- plugins | |- response-uppercase | |- index.js | |- package.json |- request-headers | | - index.js | - package.jsonpluginফোল্ডারেcdব্যবহার করুন।pluginফোল্ডারের ভিতরে, সম্পূর্ণpluginsফোল্ডারটি জিপ করুন:zip -r plugins.zip plugins/
২. একটি ডকার ইমেজ তৈরি করুন
এরপরে, আপনার প্লাগইন কোড একটি Edge Microgateway ইমেজে যুক্ত করার জন্য একটি Dockerfile তৈরি করুন।
- যে ডিরেক্টরিতে জিপ ফাইলটি রয়েছে, সেই একই ডিরেক্টরিতে
Dockerfileনামে একটি নতুন ফাইল তৈরি করুন। Dockerfileএ নিম্নলিখিত কোডটি যোগ করুন এবং ফাইলটি সংরক্ষণ করুন:USER root RUN apk update && \ apk upgrade && \ apk add zipapk add zip && \ mkdir /opt/apigee/customplugins && \ chown apigee:apigee /opt/apigee/customplugins COPY plugins.zip /opt/apigee/customplugins RUN su - apigee -c "unzip /opt/apigee/customplugins/plugins.zip -d /opt/apigee/customplugins" EXPOSE 8000 EXPOSE 8443 USER apigee ENTRYPOINT ["entrypoint"]আপনার প্লাগইনগুলো দিয়ে একটি নতুন Edge Microgateway ডকার ইমেজ তৈরি করুন:
docker build -t image-name .উদাহরণস্বরূপ:
docker build -t edgemicroplugins .
৩. এজ মাইক্রোগেটওয়ে কনফিগারেশন আপডেট করুন
এখন যেহেতু প্লাগইনগুলো প্যাকেজ করা হয়ে গেছে, আপনাকে সেগুলো Edge Microgateway কনফিগারেশন ফাইলে যোগ করতে হবে।
একটি এডিটরে Edge Microgateway কনফিগারেশন ফাইলটি খুলুন:
$HOME/.edgemicro/org-env-config.yaml
উদাহরণস্বরূপ:
vi $HOME/.edgemicro/myorg-test-config.yaml
কনফিগারেশন ফাইলে প্লাগইন ডিরেক্টরিটি যোগ করুন। নিচের উদাহরণে, '
dirঅ্যাট্রিবিউটটি প্লাগইন কোডের অবস্থান নির্দিষ্ট করে (যা আপনি Dockerfile-এ উল্লেখ করেছেন)। আপনাকে অবশ্যই প্লাগইন ডিরেক্টরির নামও উল্লেখ করতে হবে, যা নিচের উদাহরণে 'response-uppercase।edgemicro: ... plugins: dir: /opt/apigee/plugins sequence: - oauth - response-uppercase
৪. মাইক্রোগেটওয়ে চালু করুন
অবশেষে, আপনাকে কন্টেইনারের মধ্যে মাইক্রোগেটওয়েটি চালু করতে হবে।
$HOME/.edgemicroতে অবস্থিত Edge Microgateway কনফিগারেশন ফাইলটিকে base64-এনকোড করতে নিম্নলিখিত কমান্ডটি চালান:export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`
যেখানে
your_orgএবংyour_envহলো সেই অর্গানাইজেশন এবং এনভায়রনমেন্ট যা আপনিedgemicro configকমান্ডটি চালানোর সময় ব্যবহার করেছিলেন।কমান্ডের চারপাশে ব্যাক-টিক (`) বসাতে মনে রাখবেন। উদাহরণস্বরূপ:
export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
Edge Microgateway-কে একটি কন্টেইনার হিসেবে চালান। এই কমান্ডটি বেশ কিছু এনভায়রনমেন্ট ভেরিয়েবল সেট করে, যা কন্টেইনার রানটাইম Edge Microgateway চালু করার জন্য ব্যবহার করে:
docker run -P -p 8000:8000 -d --name edgemicroplugins \ -e EDGEMICRO_PLUGIN_DIR=/opt/apigee/customplugins/plugins \ -e EDGEMICRO_ORG=your_org \ -e EDGEMICRO_ENV=your_env \ -e EDGEMICRO_KEY=your_key \ -e EDGEMICRO_SECRET=your_secret \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ -e SERVICE_NAME=edgemicroplugins image_name
উদাহরণস্বরূপ:
docker run -P -p 8000:8000 -d --name edgemicroplugins \ -e EDGEMICRO_PLUGIN_DIR=/opt/apigee/customplugins/plugins \ -e EDGEMICRO_ORG=docs \ -e EDGEMICRO_ENV=test \ -e EDGEMICRO_KEY=d9c34e1aff68ed969273b016699eabf48780e4f652242e72fc88a23e21252cb0 \ -e EDGEMICRO_SECRET=3bc95a71c86a3c8ce04137fbcb788158731t51dfc6cdec13b7c05aa0bd969430 \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ -e SERVICE_NAME=edgemicroplugins edgemicroplugins
প্লাগইনটি পরীক্ষা করতে আপনার এপিআই কল করুন:
আপনার এপিআই (API) কল করে এবং আউটপুট প্রত্যাশিত কিনা তা যাচাই করে প্লাগইন কোডটি কার্যকর হচ্ছে কিনা তা পরীক্ষা করুন:
curl -i http://localhost:8000/hello -H "x-api-key:apikey"
উদাহরণস্বরূপ,
response-uppercaseপ্লাগইনটি এই ধরনের একটি প্রতিক্রিয়া ফেরত দিতে পারে:curl -i http://localhost:8000/hello -H "x-api-key:PydUKRDGIXRqF2xh4usn1FLHbhGKVIz" HELLO, WORLD!