এজ মাইক্রোগেটওয়ের জন্য ডকার ব্যবহার করা

আপনি 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-কে একটি ডকার কন্টেইনার হিসেবে চালান

  1. Edge Microgateway-এর জন্য ডকার ইমেজটি ডাউনলোড করুন:

    docker pull gcr.io/apigee-microgateway/edgemicro:latest
  2. পরবর্তী ধাপে যাওয়ার আগে, নিশ্চিত হয়ে নিন যে আপনি পূর্বশর্ত বিভাগে উল্লিখিত সমস্ত ধাপ সম্পন্ন করেছেন।

  3. $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`
  4. 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 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 ব্যবহার
    EDGEMICRO_ORG Edge Microgateway কনফিগার করতে আপনি যে Apigee অর্গানাইজেশনটি ব্যবহার করেছেন তার নাম।
    EDGEMICRO_ENV Edge Microgateway কনফিগার করতে আপনি যে Apigee এনভায়রনমেন্টটি ব্যবহার করেছেন তার নাম।
    EDGEMICRO_PROCESSES শুরু করার জন্য প্রসেসের সংখ্যা।
    EDGEMICRO_KEY আপনি Edge Microgateway কনফিগার করার সময় যে কী-টি ফেরত পেয়েছেন।
    EDGEMICRO_SECRET আপনি Edge Microgateway কনফিগার করার সময় গোপনীয় তথ্যটি ফেরত পেয়েছেন।
    EDGEMICRO_CONFIG একটি ভেরিয়েবল, যা বেস৬৪-এনকোডেড এজ মাইক্রোগেটওয়ে কনফিগারেশন ফাইল ধারণ করে।
    SERVICE_NAME আপনি যদি Kubernetes ব্যবহার করেন, তাহলে এই প্যারামিটারটি স্বয়ংক্রিয়ভাবে পূরণ হয়ে যায়। অন্যথায়, আপনি আপনার ইচ্ছামতো যেকোনো কিছু সেট করতে পারেন। আপনি যদি কিছু উল্লেখ না করেন, তাহলে সার্ভিসের নামটি default হিসেবে সেট হয়ে যায়।
    DEBUG ডিবাগিং চালু করতে * এ সেট করুন।
    HTTP_PROXY HTTPS_PROXY যখন Edge Microgateway একটি ফায়ারওয়ালের পিছনে চলে এবং গেটওয়েটি Apigee Edge-এর সাথে যোগাযোগ করতে পারে না, তখন এটি ব্যবহার করুন। আরও তথ্যের জন্য, "একটি কোম্পানির ফায়ারওয়ালের পিছনে Edge Microgateway সেট আপ করা" দেখুন।

    উদাহরণস্বরূপ: HTTP_PROXY=http://10.203.0.1:5187/

    NO_PROXY কমা দ্বারা বিভক্ত সেইসব ডোমেইনের একটি তালিকা, যেগুলিতে Edge Microgateway প্রক্সি করবে না। আরও তথ্যের জন্য, ‘একটি কোম্পানির ফায়ারওয়ালের পিছনে Edge Microgateway সেট আপ করা’ দেখুন।

    উদাহরণস্বরূপ: localhost,127.0.0.1,localaddress,.localdomain.com

    NODE_EXTRA_CA_CERTS (ঐচ্ছিক) আপনি যদি এমন কোনো CA ব্যবহার করেন যা Node.js দ্বারা ডিফল্টরূপে বিশ্বস্ত নয়, তাহলে এই প্যারামিটারটি ব্যবহার করুন। এই প্যারামিটারের মান হিসেবে PEM ফরম্যাটে এক বা একাধিক বিশ্বস্ত সার্টিফিকেট ধারণকারী ফাইলের পাথ সেট করুন। বিস্তারিত জানতে, TLS সার্টিফিকেট দেখুন।
    --security-opt (ঐচ্ছিক) কাঙ্ক্ষিত ডকার নিরাপত্তা বিকল্পসমূহ সেট করে। ডকার ডকুমেন্টেশনে নিরাপত্তা কনফিগারেশন দেখুন।
    --cap-drop (ঐচ্ছিক) কন্টেইনারে অনুমোদিত লিনাক্স ক্যাপাবিলিটির উপর সীমা নির্ধারণ করে। ডকার ডকুমেন্টেশনে রানটাইম প্রিভিলেজ এবং লিনাক্স ক্যাপাবিলিটিজ দেখুন।

    উদাহরণস্বরূপ:

    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
  5. কন্টেইনারটি চলছে কিনা তা পরীক্ষা করতে:

    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 চালু করার পর, আপনি এতে 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 ভ্যালিডেশন বন্ধ করার জন্য সাধারণ নির্দেশাবলী দেওয়া হলো।

  1. https://github.com/apigee-internal/microgateway থেকে Edge Microgateway সোর্স রিপোজিটরিটি ক্লোন বা ডাউনলোড করুন।

  2. সোর্স কোড ডিরেক্টরিতে থাকা microgateway/kubernetes/docker/edgemicro ডিরেক্টরিতে cd

    উদাহরণস্বরূপ:

    cd $HOME/git/microgateway/kubernetes/docker/edgemicro
    
  3. entrypoint.sh ফাইলটি খুলুন এবং NODE_TLS_REJECT_UNAUTHORIZED এনভায়রনমেন্ট ভেরিয়েবলটি গ্রহণ করার জন্য কোডটি পরিবর্তন করুন। পরবর্তীতে, যখন আপনি কন্টেইনারটি চালাবেন, তখন এই ভেরিয়েবলটির জন্য একটি মান নির্দিষ্ট করে দেবেন।

  4. ডকার কন্টেইনারটি তৈরি করুন:

    docker build -t edgemicro .
    
  5. যখন আপনি কন্টেইনারটি চালাবেন, তখন -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 ব্যবহার করার সুযোগ দেয়। নীচের উদাহরণটিতে সেলফ-সাইন্ড সার্টিফিকেট ব্যবহার করা হয়েছে।

১. প্রাথমিক সেটআপের ধাপসমূহ

  1. আপনার সিস্টেমে openssl.cnf ফাইলটি খুঁজুন। উদাহরণস্বরূপ, /etc/ssl/openssl.cnf
  2. সম্পাদনার জন্য opensssl.cnf ফাইলটি খুলুন।
  3. আপনার কনফিগারেশন ফাইলে req_extensions গুলো আছে কিনা তা নিশ্চিত করুন। উদাহরণস্বরূপ, আপনার ফাইলে নিম্নলিখিত তথ্যের মতো তথ্য থাকা উচিত:

    [ req ]
    ...
    req_extensions          = v3_req
    ...
    
    [ v3_req ]
    extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection
    basicConstraints = CA:FALSE
    keyUsage = nonRepudiation, digitalSignature, keyEncipherment
    
  4. সঠিক 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::1
    

    opensssl.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
    
  5. আপনি যদি আগে থেকে Edge Microgateway ইনিশিয়ালাইজ এবং কনফিগার না করে থাকেন, তবে তা করার জন্য পূর্বশর্ত (Prerequisites) বিভাগে দেওয়া ধাপগুলো অনুসরণ করুন। এটি সম্পন্ন হলে, আপনার একটি Edge Microgateway-aware প্রক্সি, একটি API প্রোডাক্ট, একটি ডেভেলপার এবং একটি ডেভেলপার অ্যাপ তৈরি হয়ে যাবে। এছাড়াও, আপনাকে edgemicro configure কমান্ডটি চালাতে হবে এবং একটি key ও secret পেতে হবে।

২. স্ব-স্বাক্ষরিত সার্টিফিকেট তৈরি করুন

এরপরে, TLS স্থাপনের জন্য প্রয়োজনীয় সার্টিফিকেট এবং কীগুলো তৈরি করুন:

  1. $HOME/.edgemicro ডিরেক্টরিতে cd
  2. নিম্নলিখিত ব্যাশ স্ক্রিপ্টটি তৈরি করুন। আপনি আপনার ইচ্ছামতো এর নাম দিতে পারেন। উদাহরণস্বরূপ: 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
    
  3. bash ফাইলে openssl.cnf ফাইলের পাথটি সঠিক আছে কিনা, তা নিশ্চিত করুন।

  4. ব্যাশ ফাইলটি চালান। আপনার কাছে সার্টিফিকেটের তথ্য চাওয়া হবে। কমন নেম (Common Name) হিসেবে অবশ্যই localhost ব্যবহার করবেন।

  5. নিম্নলিখিত ফাইলগুলি তৈরি হয়েছে কিনা তা পরীক্ষা করুন:

    • rootca.key
    • rootca.pem
    • tls.key
    • tls.csr
    • rootca.srl
    • tls.crt

৩. Edge Microgateway কনফিগারেশন ফাইলটি সম্পাদনা করুন

  1. একটি এডিটরে Edge Micro কনফিগ ফাইলটি খুলুন। উদাহরণস্বরূপ:

    vi $HOME/.edgemicro/myorg-test-config.yaml
    
  2. edgemicro স্ট্যানজাটি নিম্নরূপভাবে সম্পাদনা করুন। লক্ষ্য করুন যে আপনি 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:
    ...
    
  3. $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-কে একটি ডকার কন্টেইনার হিসেবে চালান

৪. কন্টেইনারটি চালান।

  1. 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
    
  2. কমান্ডে ব্যবহৃত নিম্নলিখিত প্যারামিটারগুলো লক্ষ্য করুন; এগুলো "Run Edge Micro as a Docker container" অংশে বর্ণিত মৌলিক কমান্ড থেকে ভিন্ন।

    • port 8443 এ সেট করা আছে।
    • কী এবং সার্টিফিকেট ফাইলগুলো মাউন্ট করার জন্য ভলিউম মাউন্ট ব্যবহার করা হয়।
    • NODE_EXTRA_CA_CERTS ভেরিয়েবলটি একটি কাস্টম CA যোগ করতে ব্যবহৃত হয় (যেমনটি সেলফ-সাইন্ড সার্টিফিকেটের ক্ষেত্রে প্রয়োজন হয়)।

৫. TLS কনফিগারেশন পরীক্ষা করুন

  1. সেটআপটি পরীক্ষা করার জন্য নিম্নলিখিত cURL কমান্ডটি চালান। কমান্ডে আপনার বেসপাথ এবং এপিআই কী প্রতিস্থাপন করুন। নিম্নলিখিত উদাহরণটি ধরে নেয় যে আপনি সেই ডিরেক্টরিতে আছেন যেখানে rootca.pem অবস্থিত এবং আপনার তৈরি করা প্রক্সির বেসপাথ হল /hello :

    curl -v https://localhost:8443/hello --cacert rootca.pem \
    -H "x-api-key: Az82fdnfONVCOOE4NKhajxAboDgA3FAo"
    
  2. বিস্তারিত 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 সংযোগ স্থাপন করতে হয়, তা ব্যাখ্যা করা হয়েছে। নিচের উদাহরণটিতে সেলফ-সাইন্ড সার্টিফিকেট ব্যবহার করা হয়েছে।

১. প্রাথমিক সেটআপের ধাপসমূহ

  1. আপনার সিস্টেমে openssl.cnf ফাইলটি খুঁজুন। উদাহরণস্বরূপ, /etc/ssl/openssl.cnf
  2. সম্পাদনার জন্য opensssl.cnf ফাইলটি খুলুন।
  3. আপনার কনফিগারেশন ফাইলে req_extensions গুলো আছে কিনা তা নিশ্চিত করুন। উদাহরণস্বরূপ, আপনার ফাইলে নিম্নলিখিত তথ্যের মতো তথ্য থাকা উচিত:

    [ req ]
    ...
    req_extensions          = v3_req
    ...
    
    [ v3_req ]
    extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection
    basicConstraints = CA:FALSE
    keyUsage = nonRepudiation, digitalSignature, keyEncipherment
    
  4. সঠিক 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::1
    

    opensssl.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::1
    
  5. edgemicro configure কমান্ডটি চালান:

    edgemicro configure -o your_org -e your_env -u your_username

    কনফিগারেশন সম্পর্কে আরও বিস্তারিত জানতে, পার্ট ১: এজ মাইক্রোগেটওয়ে কনফিগার করুন দেখুন।

  6. edgemicro configure থেকে প্রাপ্ত key এবং secret ক্রেডেনশিয়ালগুলো কপি করুন। কন্টেইনারটি চালানোর জন্য আপনার এই মানগুলো প্রয়োজন হবে। উদাহরণস্বরূপ:

    The following credentials are required to start edge micro
      key: d9c34e1aff68ed969273c016699eabf48780e4f652242e72fc88a43e21252cb0
      secret: 3bc95a71c86a3c8ce04537fbcb788158731t51dfc6cdec13b7c05aa0bd969430
    

২. একটি Node.js টার্গেট অ্যাপ্লিকেশন তৈরি করুন।

  1. .edgemicro ডিরেক্টরিতে cd

  2. নিম্নলিখিত ব্যাশ স্ক্রিপ্টটি তৈরি করুন। আপনি আপনার ইচ্ছামতো এর নাম দিতে পারেন। উদাহরণস্বরূপ: 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
    
  3. bash ফাইলে openssl.cnf ফাইলের পাথটি সঠিক আছে কিনা, তা নিশ্চিত করুন।

  4. ব্যাশ ফাইলটি চালান। আপনাকে সার্টিফিকেটের তথ্য দিতে বলা হবে। কমন নেম (Common Name) হিসেবে অবশ্যই hellworld ব্যবহার করবেন।

  5. নিম্নলিখিত ফাইলগুলি তৈরি হয়েছে কিনা তা পরীক্ষা করুন:

    • rootca.key
    • rootca.pem
    • tls.key
    • tls.csr
    • rootca.srl
    • tls.crt
  6. 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);
    
  7. 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"
      }
    }
    
  8. ডিপেন্ডেন্সিগুলো পেতে npm install চালান।

  9. 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" ]
    
  10. ডকার ইমেজটি তৈরি করুন:

    docker build -t helloworld . 
    
  11. নমুনা অ্যাপটি চালু করুন:

    docker run -P -p 9443:9443 --name helloworld helloworld
    

৩. Apigee Edge-এ এনটিটি তৈরি করুন

  1. এই সেটিংস ব্যবহার করে একটি Edge Microgateway-aware প্রক্সি তৈরি করুন। আরও তথ্যের জন্য, Edge-এ একটি Edge Microgateway-aware API প্রক্সি তৈরি করুন দেখুন।

    • প্রক্সি নাম: edgemicro_local
    • সংশোধন: 1
    • বেসপাথ: /local
    • লক্ষ্য: https://helloworld:9443
  2. একটি এপিআই পণ্য তৈরি করুন। বিস্তারিত জানতে, ‘পণ্য তৈরি করুন’ দেখুন।

  3. একজন ডেভেলপার তৈরি করুন। বিস্তারিত জানতে, ‘একজন ডেভেলপার তৈরি করুন’ দেখুন।

  4. একটি ডেভেলপার অ্যাপ তৈরি করুন। বিস্তারিত জানতে, ‘ডেভেলপার অ্যাপ তৈরি করুন’ দেখুন।

৪. কন্টেইনারটি চালান।

  1. একটি এডিটরে Edge Micro কনফিগ ফাইলটি খুলুন। উদাহরণস্বরূপ:

    vi $HOME/.edgemicro/myorg-test-config.yaml
    
  2. edgemicro স্ট্যানজাটি নিম্নরূপভাবে সম্পাদনা করুন। লক্ষ্য করুন যে আপনি 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:
    ...
    
  3. $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`
  4. ডকার কন্টেইনারে এজ মাইক্রোগেটওয়ে চালু করতে নিম্নলিখিত কমান্ডটি চালান।

    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 কনফিগারেশন পরীক্ষা করুন

  1. সেটআপটি পরীক্ষা করার জন্য নিম্নলিখিত 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"}
    
  2. 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
    
  3. নিম্নলিখিত cURL কমান্ডটি চালান। আগের মতোই আপনার বেসপাথ এবং এপিআই কী প্রতিস্থাপন করুন। উদাহরণস্বরূপ:

    curl https://localhost:8443/local -k -H "x-api-key: xxxx" -v
    
  4. আউটপুটটি যাচাই করুন। সফল হলে, আপনি একটি 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
    

একটি কাস্টম প্লাগইন যোগ করা

কাস্টম প্লাগইন লিখে আপনি মাইক্রোগেটওয়েতে নতুন বৈশিষ্ট্য ও সক্ষমতা যোগ করতে পারেন। কাস্টম প্লাগইন আপনাকে মাইক্রোগেটওয়ের মধ্য দিয়ে প্রবাহিত অনুরোধ এবং প্রতিক্রিয়াগুলির সাথে প্রোগ্রাম্যাটিকভাবে যোগাযোগ করার সুযোগ দেয়।

ডকার কন্টেইনারে চলমান একটি এজ মাইক্রোগেটওয়ে ইনস্ট্যান্সে প্লাগইন স্থাপন করার জন্য আপনার কাছে দুটি বিকল্প রয়েছে:

এই বিভাগের বাকি অংশে ধরে নেওয়া হচ্ছে যে আপনি একটি স্ট্যান্ডার্ড এজ মাইক্রোগেটওয়ে সেটআপের জন্য প্লাগইন লেখা এবং কনফিগার করার বিষয়ে পরিচিত। যদি তা না হয়, তবে কাস্টম প্লাগইন তৈরি করুন (Develop custom plugins) অংশটি দেখুন।

বিকল্প A: প্লাগইন ডিরেক্টরিটি একটি ভলিউমে মাউন্ট করুন।

(v.2.5.27-এ যোগ করা হয়েছে) ভলিউম মাউন্টের মাধ্যমে প্লাগইন যোগ করার ধাপগুলো Edge Microgateway-তে যেকোনো কাস্টম প্লাগইন যোগ করার ধাপগুলোর মতোই। যখন আপনি ডকার কন্টেইনারটি চালান, তখন আপনি আপনার লোকাল সিস্টেমের প্লাগইন ডিরেক্টরিটি (ভলিউম) কন্টেইনার মাউন্ট পয়েন্টে মাউন্ট করতে পারেন, যা হলো /opt/apigee/plugins । এরপর আপনি Edge Microgateway কনফিগারেশন ফাইলে লোকাল ভলিউম ডিরেক্টরিটি নির্দিষ্ট করে দেন।

নিম্নলিখিত ধাপগুলিতে দেখানো হয়েছে কিভাবে একটি ডকার মাউন্ট পয়েন্ট ব্যবহার করে কাস্টম প্লাগইন অন্তর্ভুক্ত করা যায়।

  1. এজ মাইক্রোগেটওয়ে বন্ধ করুন:

    edgemicro stop
    
  2. আপনার কাস্টম প্লাগইনগুলির জন্য একটি ডিরেক্টরি তৈরি করুন। উদাহরণস্বরূপ, তৈরি করুন

    $HOME/edgemicro/custom/plugins
    
  3. Edge Microgateway কনফিগারেশন ফাইলে কাস্টম প্লাগইন ডিরেক্টরিটি যোগ করুন। উদাহরণস্বরূপ:

      plugins:
        dir: $HOME/edgemicro/custom/plugins
        sequence:
          - oauth
          - response-uppercase
      ````
    
  4. "একটি সাধারণ প্লাগইন লিখুন" এর নির্দেশাবলী অনুসারে আপনার প্লাগইনটি লিখুন এবং পরীক্ষা করুন। আপনার প্লাগইন কোডটি সঠিক ডিরেক্টরি কাঠামোতে রাখতে ভুলবেন না। উদাহরণস্বরূপ:

    custom
      |
      |-- plugins
        |
        |- response-uppercase
        |     |- index.js
        |     |- package.json
        |- request-headers
        |     | - index.js
              | - package.json
    
  5. নিচের মতো একটি কমান্ড দিয়ে ডকার কন্টেইনারটি চালান, যেখানে আপনি প্লাগইন ডিরেক্টরিটি ডকার ভলিউমে মাউন্ট করার জন্য -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
    
  6. প্লাগইনটি পরীক্ষা করতে আপনার এপিআই কল করুন।

আরও তথ্যের জন্য, ভলিউম [শেয়ার্ড ফাইলসিস্টেম] দেখুন।

বিকল্প B: প্লাগইনগুলিকে কন্টেইনারের মধ্যে তৈরি করুন

এই বিকল্পে, আপনি প্লাগইনগুলিকে আপনার কন্টেইনারের মধ্যে বিল্ড করেন।

১. আপনার প্লাগইনগুলি প্যাকেজ করুন

  1. "একটি সহজ প্লাগইন লিখুন" এর নির্দেশাবলী অনুসারে আপনার প্লাগইনটি লিখুন এবং পরীক্ষা করুন।

  2. আপনার প্লাগইন কোড সঠিক ডিরেক্টরি কাঠামোতে রাখুন। প্লাগইন ডিরেক্টরিগুলোকে অবশ্যই একটি নির্দিষ্ট কাঠামো অনুসরণ করতে হবে। নিম্নলিখিত উদাহরণটি সেই কাঠামো দেখায় যা আপনাকে অবশ্যই অনুসরণ করতে হবে, যেখানে response-uppercase এবং request-headers হলো কাস্টম প্লাগইন কোড ধারণকারী ফোল্ডারগুলোর নাম (এই নামগুলো শুধুমাত্র উদাহরণ, আপনার ফোল্ডারের নাম ভিন্ন হতে পারে):

    plugin
      |
      |-- plugins
        |
        |- response-uppercase
        |     |- index.js
        |     |- package.json
        |- request-headers
        |     | - index.js
              | - package.json
    
  3. plugin ফোল্ডারে cd ব্যবহার করুন।

  4. plugin ফোল্ডারের ভিতরে, সম্পূর্ণ plugins ফোল্ডারটি জিপ করুন:

    zip -r plugins.zip plugins/

২. একটি ডকার ইমেজ তৈরি করুন

এরপরে, আপনার প্লাগইন কোড একটি Edge Microgateway ইমেজে যুক্ত করার জন্য একটি Dockerfile তৈরি করুন।

  1. যে ডিরেক্টরিতে জিপ ফাইলটি রয়েছে, সেই একই ডিরেক্টরিতে Dockerfile নামে একটি নতুন ফাইল তৈরি করুন।
  2. 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"]
    
  3. আপনার প্লাগইনগুলো দিয়ে একটি নতুন Edge Microgateway ডকার ইমেজ তৈরি করুন:

    docker build -t image-name .

    উদাহরণস্বরূপ:

    docker build -t edgemicroplugins .

৩. এজ মাইক্রোগেটওয়ে কনফিগারেশন আপডেট করুন

এখন যেহেতু প্লাগইনগুলো প্যাকেজ করা হয়ে গেছে, আপনাকে সেগুলো Edge Microgateway কনফিগারেশন ফাইলে যোগ করতে হবে।

  1. একটি এডিটরে Edge Microgateway কনফিগারেশন ফাইলটি খুলুন:

    $HOME/.edgemicro/org-env-config.yaml
    

    উদাহরণস্বরূপ:

    vi $HOME/.edgemicro/myorg-test-config.yaml
  2. কনফিগারেশন ফাইলে প্লাগইন ডিরেক্টরিটি যোগ করুন। নিচের উদাহরণে, ' dir অ্যাট্রিবিউটটি প্লাগইন কোডের অবস্থান নির্দিষ্ট করে (যা আপনি Dockerfile-এ উল্লেখ করেছেন)। আপনাকে অবশ্যই প্লাগইন ডিরেক্টরির নামও উল্লেখ করতে হবে, যা নিচের উদাহরণে ' response-uppercase

    edgemicro:
      ...
      plugins:
        dir: /opt/apigee/plugins
        sequence:
          - oauth
          - response-uppercase
    

৪. মাইক্রোগেটওয়ে চালু করুন

অবশেষে, আপনাকে কন্টেইনারের মধ্যে মাইক্রোগেটওয়েটি চালু করতে হবে।

  1. $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`
  2. 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
  3. প্লাগইনটি পরীক্ষা করতে আপনার এপিআই কল করুন:

    আপনার এপিআই (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!