আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন .info- তে যান।
একটি কাস্টম প্লাগইন যোগ করা
কাস্টম প্লাগইন লিখে আপনি মাইক্রোগেটওয়েতে নতুন বৈশিষ্ট্য ও সক্ষমতা যোগ করতে পারেন। কাস্টম প্লাগইন আপনাকে মাইক্রোগেটওয়ের মধ্য দিয়ে প্রবাহিত অনুরোধ এবং প্রতিক্রিয়াগুলির সাথে প্রোগ্রাম্যাটিকভাবে যোগাযোগ করার সুযোগ দেয়।
এই অংশে আপনার কুবারনেটিস ক্লাস্টারে চলমান একটি এজ মাইক্রোগেটওয়ে ইনস্ট্যান্সে প্লাগইনগুলি কীভাবে প্যাকেজ এবং ডেপ্লয় করতে হয়, তা ব্যাখ্যা করা হয়েছে।
এই বিভাগের বাকি অংশে ধরে নেওয়া হচ্ছে যে আপনি একটি স্ট্যান্ডার্ড এজ মাইক্রোগেটওয়ে সেটআপের জন্য প্লাগইন লেখা এবং কনফিগার করার বিষয়ে পরিচিত। যদি তা না হয়, তবে কাস্টম প্লাগইন তৈরি করুন (Develop custom plugins) অংশটি দেখুন।
আপনার প্লাগইন(গুলি) প্যাকেজ করুন
কাস্টম প্লাগইন প্যাকেজ করতে, এই ধাপগুলো অনুসরণ করুন:
"একটি সহজ প্লাগইন লিখুন" এর নির্দেশাবলী অনুসারে আপনার প্লাগইনটি লিখুন এবং পরীক্ষা করুন।
আপনার প্লাগইন কোড সঠিক ডিরেক্টরি কাঠামোতে রাখুন। প্লাগইন ডিরেক্টরিগুলোকে অবশ্যই একটি নির্দিষ্ট কাঠামো অনুসরণ করতে হবে। নিম্নলিখিত উদাহরণটি সেই কাঠামো দেখায় যা আপনাকে অবশ্যই অনুসরণ করতে হবে, যেখানে
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/
একটি ডকার ইমেজ তৈরি করুন
- যে ডিরেক্টরিতে জিপ ফাইলটি রয়েছে, সেই একই ডিরেক্টরিতে
Dockerfileনামে একটি নতুন ফাইল তৈরি করুন। Dockerfileএ নিম্নলিখিত কোডটি যোগ করুন এবং ফাইলটি সংরক্ষণ করুন:FROM gcr.io/apigee-microgateway/edgemicro:latest RUN apt-get install unzip COPY plugins.zip /opt/apigee/ RUN chown apigee:apigee /opt/apigee/plugins.zip RUN su - apigee -c "unzip /opt/apigee/plugins.zip -d /opt/apigee" EXPOSE 8000 EXPOSE 8443 ENTRYPOINT ["entrypoint"]আপনার প্লাগইনগুলো দিয়ে একটি নতুন Edge Microgateway ডকার ইমেজ তৈরি করুন এবং ইমেজটি আপনার ডকার রেজিস্ট্রি-তে পুশ করুন। আপনি আপনার ইচ্ছামতো যেকোনো রেজিস্ট্রি ব্যবহার করতে পারেন, যেমন
docker.ioবাgcr.iodocker build -t edgemicroplugins .docker tag edgemicroplugins container-registry/your-project/edgemicropluginsdocker push container-registry/your-project/edgemicropluginsউদাহরণস্বরূপ:
docker build -t edgemicroplugins .docker tag edgemicroplugins gcr.io/my-project/edgemicropluginsdocker push gcr.io/my-project/edgemicroplugins
Edge Microgateway কনফিগারেশন আপডেট করুন
আপনার Edge Microgateway কনফিগারেশন ফাইলে প্লাগইন(গুলি) যোগ করুন। আপনি কনফিগারেশন ফাইলটি এখানে খুঁজে পাবেন:
$HOME/.edgemicro/org-env-config.yaml
উদাহরণস্বরূপ:
$HOME/.edgemicro/myorg-test-config.yaml
নিম্নলিখিত নমুনা কনফিগারেশনে, কাস্টম প্লাগইন ' response-uppercase যোগ করা হয়েছে। oauth ' প্লাগইনটি আগে থেকেই ডিফল্টভাবে সেখানে ছিল।
edgemicro:
...
plugins:
sequence:
- oauth
- response-uppercase
আপনার Kubernetes ক্লাস্টার আপডেট করুন
চূড়ান্ত ধাপ হলো আপনার কুবারনেটিস ক্লাস্টারে কনফিগারেশন পরিবর্তনটি প্রয়োগ করা। কুবারনেটিস কন্টেইনার রেজিস্ট্রি-তে আপনার পুশ করা প্লাগইন কোডসহ নতুন ইমেজটি পুল করবে এবং যেকোনো নতুন তৈরি হওয়া পডের জন্য এটি ব্যবহার করবে।
আপনি যদি Edge Microgateway-কে একটি পরিষেবা হিসাবে স্থাপন করে থাকেন
আপডেট করা এজ মাইক্রোগেটওয়ে কনফিগারেশন ইনজেক্ট করতে edgemicroctl কমান্ডটি ব্যবহার করুন:
নতুন ইমেজ দিয়ে Edge Microgateway ডেপ্লয়মেন্টটি আপডেট করুন। উদাহরণস্বরূপ:
kubectl apply -f <(edgemicroctl -org=your_organization -env=your_environment -key=configuration_key -sec=configuration_secret -conf=config_file_path -img=container-registry/your_project_name/image_name:latest)
যেখানে:
-
your_organization-edgemicro configureকমান্ডে আপনি যে Apigee অর্গানাইজেশনটি নির্দিষ্ট করেছেন। -
your_environment-edgemicro configureকমান্ডে আপনি যে পরিবেশটি নির্দিষ্ট করেছেন। -
configuration_key-edgemicro configureকমান্ড থেকে প্রাপ্ত কী। -
configuration_secret-edgemicro configureকমান্ড থেকে প্রাপ্ত গোপনীয় তথ্য। -
config_file_path-edgemicro configureকমান্ড থেকে প্রাপ্ত Edge Micro কনফিগারেশন ফাইলের পাথ। -
container-registry- ডকার রেজিস্ট্রি যেখানে আপনি ইমেজটি পুশ করেছেন। উদাহরণস্বরূপ,gcr.ioবাdocker.io। -
your_project_name- ডকার রিপোজিটরির প্রজেক্টের নাম, যেখানে আপনি ডকার ইমেজটি পুশ করেছেন। -
image_name- আপনার পুশ করা ডকার ইমেজটির নাম।
উদাহরণ:
kubectl apply -f <(edgemicroctl -org=jdoe -env=test -key=f2d2eaa52b758493d00cec656e574ac947bee1d701c5c5f3295e5eaa39a3b -sec=0c38cda3fac6c59152f15657052ba1728f8003c1a763cf08da2a -conf=/Users/jdoe/.edgemicro/apigeesearch-test-config.yaml -img=gcr.io/jdoe-project/edgemicroplugins:latest)
-
প্লাগইনটি পরীক্ষা করুন। প্রত্যাশিত ফলাফল পাচ্ছেন কিনা তা দেখতে এপিআই (API) কল করুন। উদাহরণস্বরূপ, 'response uppercase' প্লাগইনের ক্ষেত্রে, রেসপন্স টেক্সটটি সম্পূর্ণ আপারকেসে রূপান্তরিত হয়, যেমনটি নিচে দেখানো হয়েছে:
curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'
আউটপুট:
HELLO WORLD
নতুন কনফিগারেশন ম্যানুয়ালি ইনজেক্ট করা
ম্যানুয়াল ইনজেকশন একটি সহজ পদ্ধতি, যেখানে আপনি কমান্ড লাইন থেকে নতুন কনফিগারেশনটি ইনজেক্ট করেন।
নিম্নলিখিত কমান্ডটি চালান:
kubectl apply -f <(edgemicroctl -org=your_org -env=your_env -key=your_key -sec=your_secret -conf=config_file_path -img=container-registry/your_project_name/image_name:latest -svc=service_deployment_file)
যেখানে:
-
your_org-edgemicro configureকমান্ডে আপনি যে Apigee অর্গানাইজেশনটি নির্দিষ্ট করেছেন। -
your_env-edgemicro configureকমান্ডে আপনি যে এনভায়রনমেন্টটি নির্দিষ্ট করেছেন। -
your_key-edgemicro configureকমান্ড থেকে প্রাপ্ত কী। -
your_secret-edgemicro configureকমান্ড থেকে প্রাপ্ত গোপনীয় তথ্য। -
config_file_path-edgemicro configureকমান্ড থেকে প্রাপ্ত Edge Micro কনফিগারেশন ফাইলের পাথ। -
container-registry- ডকার রেজিস্ট্রি যেখানে আপনি ইমেজটি পুশ করেছেন। উদাহরণস্বরূপ,gcr.ioবাdocker.io। -
your_project_name- ডকার রিপোজিটরির প্রজেক্টের নাম, যেখানে আপনি ডকার ইমেজটি পুশ করেছেন। -
image_name- আপনার পুশ করা ডকার ইমেজটির নাম। -
service_deployment_file- যে সার্ভিসের জন্য প্লাগইন(গুলি) প্রয়োগ করা হবে, তার ডিপ্লয়মেন্ট ফাইলের পাথ। উদাহরণস্বরূপ:samples/helloworld/helloworld.yaml।
উদাহরণস্বরূপ:
kubectl apply -f <(edgemicroctl -org=myorg -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/jdoe/.edgemicro/myorg-test-config.yaml -img=gcr.io/myproject/edgemicroplugins:latest -svc=samples/helloworld/helloworld.yaml)
-
প্লাগইনটি পরীক্ষা করুন। প্রত্যাশিত ফলাফল পাচ্ছেন কিনা তা দেখতে সার্ভিস এপিআই (Service API) কল করুন। উদাহরণস্বরূপ, 'response uppercase' প্লাগইনের ক্ষেত্রে, রেসপন্স টেক্সটটি সম্পূর্ণ আপারকেসে (uppercase) রূপান্তরিত হয়, যেমনটি নিচে দেখানো হয়েছে:
curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'
আউটপুট:
HELLO WORLD
এজ মাইক্রোগেটওয়ে কনফিগারেশন পরিবর্তন করা
কিছু ক্ষেত্রে, আপনার Edge Microgateway কনফিগারেশন পরিবর্তন করার প্রয়োজন হতে পারে। উদাহরণস্বরূপ, আপনি Edge Microgateway-তে একটি নতুন প্লাগইন যোগ করতে বা কোনো কনফিগারেশন প্যারামিটার পরিবর্তন করতে চাইতে পারেন। এই বিভাগে Kubernetes-এ চলমান Edge Microgateway-তে কীভাবে কনফিগারেশন পরিবর্তন করতে এবং প্রয়োগ করতে হয় তা ব্যাখ্যা করা হয়েছে।
নিচে দেখানো অনুযায়ী
secret.yamlএকটি কনফিগারেশন ফাইল তৈরি করুন:apiVersion: v1 kind: Secret metadata: name: mgwsecret type: Opaque data: mgorg: EDGEMICRO_ORG mgenv: EDGEMICRO_ENV mgkey: EDGEMICRO_KEY mgsecret: EDGEMICRO_SECRET mgconfig: EDGEMICRO_CONFIGEDGEMICRO_ORG,EDGEMICRO_ENV,EDGEMICRO_KEY,EDGEMICRO_SECRETএর base64 এনকোডেড মান উল্লেখ করুন:echo -n "your-org" | base64 | tr -d '\n'echo -n "your-org-env" | base64 | tr -d '\n'echo -n "your-mg-key" | base64 | tr -d '\n'echo -n "your-mg-secret" | base64 | tr -d '\n'আপনার প্রতিষ্ঠান এবং পরিবেশ অনুযায়ী Edge Microgateway কনফিগারেশন ফাইলে পরিবর্তনগুলো করুন:
$HOME/.edgemicro/your_org-your_env-config.yaml
কনফিগারেশন ফাইলের বিষয়বস্তু দুইবার Base64 এনকোড করুন:
cat $HOME/.edgemicro/org-env-config.yaml | base64 | tr -d '\n' | base64 | tr -d '\n'
আপনার সার্ভিসটি যে নেমস্পেসে চলছে, সেখানে Kubernetes-এ পরিবর্তনগুলো প্রয়োগ করুন।
kubectl apply -f secret.yaml -n
এই নতুন পরিবর্তনগুলো বিদ্যমান মাইক্রোগেটওয়ে পডগুলোতে স্বয়ংক্রিয়ভাবে গৃহীত হয় না; তবে, নতুন পডগুলো পরিবর্তনগুলো পেয়ে যাবে। আপনি বিদ্যমান পডটি মুছে ফেলতে পারেন, যাতে ডিপ্লয়মেন্ট একটি নতুন পড তৈরি করে যা পরিবর্তনটি গ্রহণ করবে।
পরিষেবার উদাহরণ
নিম্নলিখিত উদাহরণটি দেখায় কিভাবে একটি নতুন সার্ভিস ডিপ্লয়মেন্ট আপডেট করতে হয়।
পডগুলো নিন।
kubectl get pods
উদাহরণ আউটপুট:
NAME READY STATUS RESTARTS AGE edge-microgateway-57ccc7776b-g7nrg 1/1 Running 0 19h helloworld-6987878fc4-cltc2 1/1 Running 0 1dedge-microgatewayপডটি মুছে ফেলুন।kubectl delete pod edge-microgateway-57ccc7776b-g7nrg
উদাহরণ আউটপুট:
pod "edge-microgateway-57ccc7776b-g7nrg" deletedপডগুলো আবার নিন। একটি নতুন পড চালু হয়ে আপনার কনফিগারেশন পরিবর্তনগুলো গ্রহণ করবে।
kubectl get pods
উদাহরণ আউটপুট:
NAME READY STATUS RESTARTS AGE edge-microgateway-57ccc7776b-7f6tc 1/1 Running 0 5s helloworld-6987878fc4-cltc2 1/1 Running 0 1d
আপনার ডেপ্লয়মেন্টের পরিধি বাড়ানো
এই অংশে ব্যাখ্যা করা হয়েছে কীভাবে আপনি কুবারনেটিস স্কেলিং নীতি ব্যবহার করে আপনার ডেপ্লয়মেন্টগুলোকে স্কেল করতে পারেন।
একটি পরিষেবা স্থাপন স্কেল করা
স্থাপনগুলো পরীক্ষা করুন:
kubectl get deployments
উদাহরণ আউটপুট:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE edge-microgateway 1 1 1 1 18h helloworld 1 1 1 1 1dআউটপুট থেকে বোঝা যাচ্ছে যে একটি রেপ্লিকা ডেপ্লয় করা হয়েছে।
ডেপ্লয়মেন্টটিকে ১ থেকে আপনার ইচ্ছামত যতগুলো খুশি রেপ্লিকায় স্কেল করুন। এই উদাহরণে,
edge-microgatewayসার্ভিসটি স্কেল করা হয়েছে।kubectl scale deployment edge-microgateway --replicas=2
(ঐচ্ছিক) আপনি যদি অটোস্কেলিং ব্যবহার করতে চান, তাহলে এই কমান্ডটি ব্যবহার করুন:
kubectl autoscale deployment edge-microgateway --cpu-percent=50 --min=1 --max=10
স্কেলিং সক্রিয় আছে কিনা তা যাচাই করতে ডিপ্লয়মেন্টগুলো পরীক্ষা করুন:
kubectl get deployments
উদাহরণ আউটপুট:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE edge-microgateway 2 2 2 2 18h helloworld 1 1 1 1 1dদুটি প্রতিরূপ অন্তর্ভুক্ত করার জন্য অবস্থাটি পরিবর্তন করা হয়েছে।
পডগুলো পরীক্ষা করুন:
kubectl get pods
উদাহরণ আউটপুট:
NAME READY STATUS RESTARTS AGE edge-microgateway-57ccc7776b-g7nrg 1/1 Running 0 18h edge-microgateway-57ccc7776b-rvfz4 1/1 Running 0 41s helloworld-6987878fc4-cltc2 1/1 Running 0 1dআউটপুট থেকে দেখা যাচ্ছে, উভয় রেপ্লিকাই চলমান অবস্থায় আছে।
একাধিক এজ মাইক্রোগেটওয়ে কনফিগারেশনের জন্য নেমস্পেস ব্যবহার করুন
আপনি আপনার কুবারনেটিস ক্লাস্টারে এজ মাইক্রোগেটওয়ে সার্ভিসের একাধিক ইনস্ট্যান্স ডেপ্লয় এবং কনফিগার করতে পারেন। এই ব্যবহারের ক্ষেত্রটি আপনাকে প্রতিটি মাইক্রোগেটওয়ে ইনস্ট্যান্সকে তার নিজস্ব প্লাগইন এবং প্যারামিটার সেট দিয়ে কনফিগার করার সুযোগ দেয়। উদাহরণস্বরূপ:
- Edge Microgateway Service A-এর জন্য শুধুমাত্র স্পাইক অ্যারেস্ট প্লাগইনটি প্রয়োজন।
- Edge Microgateway Service B-এর জন্য কোটা এবং ওঅথ প্লাগইন প্রয়োজন, কিন্তু স্পাইক অ্যারেস্ট নয়।
এই ব্যবহারের ক্ষেত্রটি সমাধান করতে, Kubernetes নেমস্পেস ব্যবহার করুন। উদাহরণস্বরূপ, আপনি Edge Microgateway Service A-কে foo নেমস্পেসে এবং Edge Microgateway Service B-কে bar নেমস্পেসে ডেপ্লয় করতে পারেন।
নিম্নলিখিত উদাহরণে, OrgA অর্গানাইজেশনে কনফিগার করা Edge Microgateway-কে -n অপশন ব্যবহার করে foo নেমস্পেসে একটি সার্ভিস হিসেবে ডেপ্লয় করা হয়েছে:
kubectl apply -f <(edgemicroctl -org=myorgA -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/joed/.edgemicro/orgA-test-config.yaml -svc=samples/helloworld/helloworld.yaml) -n foo
একইভাবে, নিম্নলিখিত উদাহরণে, OrgB অর্গানাইজেশনে কনফিগার করা Edge Microgateway-কে -n অপশন ব্যবহার করে bar নেমস্পেসে একটি সার্ভিস হিসেবে ডেপ্লয় করা হয়েছে:
kubectl apply -f <(edgemicroctl -org=myorgB -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/joed/.edgemicro/orgB-test-config.yaml -svc=samples/helloworld/helloworld.yaml) -n bar