Edge Microgateway-এর জন্য Docker ব্যবহার করা

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন।
তথ্য

এই বিষয়ে Docker কন্টেনারে Edge Microgateway কীভাবে রান করাতে হয় তা ব্যাখ্যা করা হয়েছে। এই বিষয়ে আলোচিত ধাপগুলি Docker, Docker কমান্ড এবং Edge Microgateway সেট-আপ ও কনফিগারেশন সম্পর্কে প্রাথমিক জ্ঞান আছে বলে ধরে নেয়। আরও তথ্যের জন্য, Docker ও Edge Microgateway-এর ডকুমেন্টেশন দেখুন।

পূর্বশর্ত

Docker কন্টেনারে Edge Microgateway চালানোর আগে, আপনাকে অবশ্যই নিম্নলিখিত কাজগুলি করতে হবে:

  • আপনার Apigee সংস্থা/পরিবেশের জন্য Edge Microgateway কনফিগার করুন:

    edgemicro configure -o your_org -e your_env -u your_username

    কনফিগারেশন সম্পর্কে আরও বিবরণের জন্য, পার্ট ১: Edge Microgateway কনফিগার করুন দেখুন।

  • কনফিগারেশন ধাপগুলি সম্পূর্ণ করার পরে, কনফিগারেশন ফাইলটি খুঁজে নিন। ডিফল্ট লোকেশন এখানে দেওয়া হল:

    $HOME/.edgemicro/your_org-your_env-config.yaml

    যেখানে your_org ও your_env হল সেইসব সংস্থা ও পরিবেশ যা আপনি edgemicro config কমান্ড চালানোর সময় ব্যবহার করেছেন। Docker কন্টেনারে Edge Microgateway চালু করার সময় এই ফাইলটি আপনার প্রয়োজন হবে।

  • আপনি যে কী ও গোপন ক্রেডেনশিয়াল পেয়েছেন তা নিশ্চিত করুন, এগুলি edgemicro config কমান্ড চালানোর সময় ফেরত দেওয়া হয়েছে। যেমন:

    The following credentials are required to start edge micro
      key: d9c34e1aff68ed969273c016699eabf48780e4f652242e72fc88a43e21252cb0
      secret: 3bc95a71c86a3c8ce04537fbcb788158731t51dfc6cdec13b7c05aa0bd969430
    
  • Docker কন্টেনারে Edge Microgateway শুরু করার আগে, আপনাকে Apigee Edge এন্টিটি তৈরি করতে হবে (বা তৈরি করা থাকতে হবে) যা প্রমাণিত API প্রক্সি কল করার জন্য প্রয়োজন। এইসব এনটিটির মধ্যে Edge Microgateway-সচেতন প্রক্সি, API প্রোডাক্ট, ডেভেলপার ও ডেভেলপার অ্যাপ অন্তর্ভুক্ত। সম্পূর্ণ নির্দেশাবলীর জন্য, Apigee Edge-এ এনটিটি তৈরি করুন দেখুন।

Docker কন্টেনার হিসেবে Edge Micro চালানো

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

    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 "LOG_CONSOLE_OUTPUT_TO_FILE=false" \
    -e SERVICE_NAME=edgemicro \
    --security-opt=no-new-privileges \
    --cap-drop=ALL \
    gcr.io/apigee-microgateway/edgemicro:latest

    প্যারামিটার

      <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>
    

    প্যারামিটার বিবরণ
    -P হোস্টের কাছে সব এক্সপোজ করা পোর্ট প্রকাশ করুন। এছাড়াও, Docker রান রেফারেন্স দেখুন।
    -p একটি পোর্ট বা পোর্ট রেঞ্জ স্পষ্টভাবে ম্যাপ করুন। এছাড়াও, Docker রান রেফারেন্স দেখুন।
    -d ডিটাচড মোডে রান করুন। এছাড়াও, Docker রান রেফারেন্স দেখুন।
    -v, -- volume ভলিউম মাউন্ট নির্দিষ্ট করে। মনে রাখবেন, আপনি যদি Docker কন্টেনারে TLS ব্যবহার করার জন্য Edge Microgateway কনফিগার করেন, তাহলে আপনাকে অবশ্যই পোর্ট ৮৪৪৩ এক্সপোজ করতে হবে যদি আপনি লগ ফাইল ডিরেক্টরি মাউন্ট করেন। এছাড়াও VOLUME [shared filesystems] দেখুন। এছাড়াও Docker কন্টেনারে TLS ব্যবহার করা দেখুন।
    -w, -- workdir (ঐচ্ছিক) যে ডিরেক্টরিতে edgemicro.sock ও edgemicro.pid ফাইল তৈরি হবে তার পাথ নির্দিষ্ট করে। আপনি ফাইলের নামের মূল অংশ edgemicro পরিবর্তন করতে পারবেন না। বর্তমান ওয়ার্কিং ডিরেক্টরি পাথে ডিফল্ট হিসেবে সেট করা থাকে।

    উদাহরণ:

    docker run -P -p 8000:8000 -d -w /tmp --name edgemicro 
    ...
    EDGEMICRO_ORG Edge Microgateway কনফিগার করার জন্য আপনি যে Apigee সংস্থার নাম ব্যবহার করেছেন।
    EDGEMICRO_ENV Edge Microgateway কনফিগার করার জন্য আপনি যে Apigee এনভায়রনমেন্ট ব্যবহার করেছেন তার নাম।
    EDGEMICRO_PROCESSES শুরু করার জন্য প্রসেসের সংখ্যা।
    EDGEMICRO_KEY আপনি Edge Microgateway কনফিগার করার সময় কীটি ফেরত দেওয়া হয়।
    EDGEMICRO_SECRET আপনি Edge Microgateway কনফিগার করার সময় যে সিক্রেটটি ফেরত পেয়েছেন।
    EDGEMICRO_CONFIG Base64-এনকোড করা Edge Microgateway কনফিগারেশন ফাইল সহ একটি ভেরিয়েবল।
    LOG_CONSOLE_OUTPUT_TO_FILE (বুলিয়ান) লগ আউটপুট কোথায় পাঠানো হবে তা নির্দিষ্ট করার অনুমতি দেয়। লগ ফাইল বিকল্প নির্দিষ্ট করা দেখুন।

    যেমন:

    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

    1. কন্টেনার চলছে কিনা তা চেক করতে:

      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 আপনাকে লগ ফাইলের পরিবর্তে স্ট্যান্ডার্ড আউটপুটে লগ সংক্রান্ত তথ্য পাঠানোর বিকল্প বেছে নিতে দেয়। আপনি যদি Docker কন্টেনারে Edge Microgateway চালানোর ধাপগুলি অনুসরণ করেন, তাহলে কন্টেনারটি ডিফল্ট হিসেবে stdout এবং ত্রুটি আউটপুটকে কন্টেনারের মধ্যে এই লোকেশনে থাকা একটি ফাইলে রিডাইরেক্ট করে: ${APIGEE_ROOT}/logs/edgemicro.log।

    edgemicro.log-এ লগ তথ্য পাঠানো আটকাতে, কন্টেনার চালানোর সময় LOG_CONSOLE_OUTPUT_TO_FILE ভেরিয়েবল ব্যবহার করুন।

    to_console-এর সাথে LOG_CONSOLE_OUTPUT_TO_FILE ব্যবহার করলে লগ আউটপুটের আচরণ কেমন হবে তা নিম্নলিখিত সারণীতে বর্ণনা করা হয়েছে:

    to_console: true

    LOG_CONSOLE_OUTPUT_TO_FILE=false

    • লগ ফাইল ম্যানেজ করা নিবন্ধে যেভাবে বর্ণনা করা হয়েছে, সেই অনুযায়ী Edge Microgateway লগ ফাইলে কোনও লগ পাঠানো হবে না।
    • edgemicro.log ফাইলে লগ পাঠানো হবে না।
    to_console: true

    LOG_CONSOLE_OUTPUT_TO_FILE=true

    • লগ ফাইল ম্যানেজ করা নিবন্ধে যেভাবে বর্ণনা করা হয়েছে, সেই অনুযায়ী Edge Microgateway লগ ফাইলে কোনও লগ পাঠানো হবে না।
    • edgemicro.log ফাইলে লগ পাঠানো হবে।
    to_console: false

    LOG_CONSOLE_OUTPUT_TO_FILE=true

    • লগ ফাইল ম্যানেজ করা নিবন্ধে যেভাবে বর্ণনা করা হয়েছে, সেই অনুযায়ী লগ Edge Microgateway লগ ফাইলে পাঠানো হবে।
    • edgemicro.log ফাইলে লগ পাঠানো হবে।

    API কল পরীক্ষা করা

    কন্টেনারে 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 পরীক্ষা করবেন।

    সঠিক API key দিয়ে API পরীক্ষা করা

    Edge UI-তে, আপনার আগে তৈরি করা ডেভেলপার অ্যাপে নেভিগেট করুন। Developer অ্যাপ পৃষ্ঠায়, কনজিউমার কী দেখুন এবং এটি কপি করুন। এই ভ্যালুটি হল API key. যাচাই করা API কল করার জন্য এই কী ব্যবহার করবেন।

    নিচে দেখানো x-api-key হেডার সহ API কল করুন। আপনি ডেভেলপার অ্যাপ থেকে যে কনজিউমার কী ভ্যালু কপি করেছেন সেটিই হল 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"

    আপনি যদি API কী এবং OAuth টোকেনের মাধ্যমে Edge Microgateway ব্যবহার করে যাচাই করা API কল করা সম্পর্কে আরও জানতে চান, তাহলে পার্ট ৪: সুরক্ষিত Edge Microgateway দেখুন।

    Edge Microgateway বন্ধ করা

    Edge Microgateway বন্ধ করতে নিম্নলিখিত Docker কমান্ড ব্যবহার করুন:

    docker stop edgemicro
    

    Edge Microgateway রিস্টার্ট করা

    Edge Microgateway বন্ধ করার পরে, আপনি এই Docker কমান্ডের মাধ্যমে এটি রিস্টার্ট করতে পারবেন:

    docker start edgemicro
    

    Docker কন্টেনারে TLS ব্যবহার করা

    এই বিভাগে, Docker কন্টেনারে চলমান Edge Microgateway-এর জন্য কীভাবে TLS কনফিগার করতে হয় তা ব্যাখ্যা করা হয়েছে। আপনি Edge Microgateway সার্ভারকে ইনকামিং অনুরোধের (উত্তরমুখী দিক) জন্য TLS ব্যবহার করার জন্য কনফিগার করতে পারেন এবং আপনি Edge Microgateway-কে টার্গেট এন্ডপয়েন্টে আউটগোয়িং অনুরোধের (দক্ষিণমুখী দিক) জন্য 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 ফর্ম্যাটে এক বা একাধিক বিশ্বস্ত সার্টিফিকেট আছে এমন ফাইলের পাথে এই প্যারামিটার সেট করুন। এই প্যারামিটার কীভাবে ব্যবহার করা হয় তা দেখতে, উদাহরণ কীভাবে নর্থবাউন্ড TLS কনফিগার করতে হয় এবং কীভাবে সাউথবাউন্ড 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
    

    এছাড়াও, Docker কন্টেনার হিসেবে Edge Micro রান করানো দেখুন।

    TLS যাচাইকরণ বন্ধ করা

    সাজেস্ট করা না হলেও, কিছু ক্ষেত্রে আপনি কন্টেনারে চলা Edge Microgateway-এর জন্য TLS যাচাইকরণ বন্ধ করতে চাইতে পারেন। TLS বন্ধ করার ক্ষমতা ডিফল্ট হিসেবে Edge Microgateway Docker কন্টেনারে বিল্ট-ইন থাকে না। এই টাস্কটি সম্পূর্ণ করতে, আপনাকে Edge Microgateway-এর জন্য কাস্টমাইজ করা Docker ইমেজ তৈরি করতে হবে। কাস্টম ছবি তৈরি করা এবং TLS যাচাইকরণ বন্ধ করার জন্য নিচে সাধারণ নির্দেশাবলী দেওয়া হল।

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

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

      যেমন:

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

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

      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 কনফিগার করতে হয়

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

    ২. সেল্ফ-সাইন করা সার্টিফিকেট তৈরি করা

    এরপরে, 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. bash ফাইল এক্সিকিউট করুন। আপনাকে সার্টিফিকেট সংক্রান্ত তথ্য দিতে বলা হবে। সাধারণ নামের জন্য 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`

    এছাড়াও, Docker কন্টেনার হিসেবে 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. কমান্ডে ব্যবহৃত নিম্নলিখিত প্যারামিটারগুলি লক্ষ্য করুন; এগুলি Docker কন্টেনার হিসেবে Edge Micro রান করান-এ বর্ণিত মৌলিক কমান্ড থেকে আলাদা।

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

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

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

      curl -v https://localhost:8443/hello --cacert rootca.pem \
      -H "x-api-key: Az82fdnfONVCOOE4NKhajxAboDgA3FAo"
      
    2. verbose 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 কীভাবে কনফিগার করতে হয়

    এই বিভাগে Edge Microgateway সার্ভার এবং ব্যাকএন্ড টার্গেট অ্যাপ্লিকেশনের মধ্যে সাউথবাউন্ড (আউটগোয়িং) 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

      কনফিগারেশন সম্পর্কে আরও বিবরণের জন্য, পার্ট ১: Edge Microgateway কনফিগার করুন দেখুন।

    6. edgemicro configure থেকে পাওয়া কী ও গোপন ক্রেডেনশিয়াল কপি করুন। কন্টেনার চালানোর জন্য আপনার এইসব ভ্যালু প্রয়োজন হবে। যেমন:

      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. bash ফাইল এক্সিকিউট করুন। আপনাকে সার্টিফিকেট সংক্রান্ত তথ্য দিতে বলা হবে। সাধারণ নামের জন্য 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 ইমেজ তৈরি করুন:

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

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

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

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

      • প্রক্সির নাম: edgemicro_local
      • সংশোধন: 1
      • Basepath: /local
      • টার্গেট: https://helloworld:9443
    2. API প্রোডাক্ট তৈরি করুন। আরও বিবরণের জন্য, প্রোডাক্ট তৈরি করুন দেখুন।

    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. Docker কন্টেনারে Edge Microgateway চালু করতে, নিম্নলিখিত কমান্ড রান করুন।

      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-এ আপনার তৈরি করা Developer অ্যাপ থেকে পাওয়া 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 কমান্ডটি এক্সিকিউট করুন। আগের মতো আপনার basepath ও API key পরিবর্তন করুন। যেমন:

      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
      

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

    কাস্টম প্লাগ-ইন লিখে আপনি মাইক্রোগেটওয়েতে নতুন ফিচার ও কেপেবিলিটি যোগ করতে পারবেন। কাস্টম প্লাগ-ইন আপনাকে মাইক্রোগেটওয়ের মাধ্যমে প্রবাহিত হওয়া অনুরোধ ও উত্তরের সাথে প্রোগ্রাম্যাটিকভাবে ইন্টার‍্যাক্ট করতে দেয়।

    ডকার কন্টেনারে রান করছে এমন Edge Microgateway ইনস্ট্যান্সে প্লাগ-ইন ডেপ্লয় করার জন্য আপনার কাছে দুটি বিকল্প আছে:

    এই বিভাগের বাকি অংশ ধরে নেয় যে আপনি স্ট্যান্ডার্ড Edge Microgateway সেট-আপের জন্য প্লাগ-ইন লেখা ও কনফিগার করার ব্যাপারে পরিচিত। তা না হলে, কাস্টম প্লাগ-ইন ডেভেলপ করুন দেখুন।

    বিকল্প 'ক': ভলিউমে প্লাগ-ইন ডিরেক্টরি মাউন্ট করা

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

    কাস্টম প্লাগ-ইন যোগ করার জন্য কীভাবে Docker মাউন্ট পয়েন্ট ব্যবহার করতে হয় তা নিম্নলিখিত ধাপগুলি থেকে জানতে পারবেন।

    1. Edge Microgateway বন্ধ করুন:

      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. নিম্নলিখিত কমান্ডের মতো কমান্ড দিয়ে Docker কন্টেনার রান করান, যেখানে আপনি Docker ভলিউমে প্লাগ-ইন ডিরেক্টরি মাউন্ট করতে -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. প্লাগ-ইন পরীক্ষা করতে আপনার API কল করুন।

    আরও তথ্যের জন্য, VOLUME [shared filesystems] দেখুন।

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

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

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

    1. একটি সাধারণ প্লাগ-ইন লেখা নিবন্ধে দেওয়া নির্দেশাবলী অনুযায়ী আপনার প্লাগ-ইন লিখুন ও পরীক্ষা করুন।

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

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

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

      zip -r plugins.zip plugins/

    ২. Docker ইমেজ তৈরি করা

    এরপরে, 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 ইমেজ তৈরি করুন:

      docker build -t image-name .

      যেমন:

      docker build -t edgemicroplugins .

    ৩. Edge Microgateway কনফিগারেশন আপডেট করা

    প্লাগ-ইন প্যাকেজ করা হয়ে গেলে, আপনাকে 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 কল করুন:

      আপনার 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!