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

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

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

পূর্বশর্ত

একটি ডকার পাত্রে এজ মাইক্রোগেটওয়ে চালানোর আগে, আপনাকে অবশ্যই নিম্নলিখিত কাজগুলি করতে হবে:

  • আপনার Apigee প্রতিষ্ঠান/পরিবেশের জন্য এজ মাইক্রোগেটওয়ে কনফিগার করুন:

    edgemicro configure -o your_org -e your_env -u your_username

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

  • কনফিগারেশন পদক্ষেপগুলি সম্পাদন করার পরে, কনফিগারেশন ফাইলটি সনাক্ত করুন। ডিফল্ট অবস্থান এখানে:

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

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

  • আপনি edgemicro config কমান্ড চালানোর সময় যে কী এবং গোপন শংসাপত্রগুলি ফিরে এসেছে তা নিশ্চিত করুন৷ যেমন:

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

একটি ডকার ধারক হিসাবে এজ মাইক্রো চালান

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

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

  3. $HOME/.edgemicro এ অবস্থিত এজ মাইক্রোগেটওয়ে কনফিগারেশন ফাইলটিকে 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 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 হোস্টে সমস্ত উন্মুক্ত পোর্ট প্রকাশ করুন। ডকার রান রেফারেন্স দেখুন।
    -p স্পষ্টভাবে একটি একক পোর্ট বা পোর্টের পরিসর ম্যাপ করুন। ডকার রান রেফারেন্স দেখুন।
    -d বিচ্ছিন্ন মোডে চালান। ডকার রান রেফারেন্স দেখুন।
    -v, -- volume একটি ভলিউম মাউন্ট নির্দিষ্ট করে। মনে রাখবেন যে আপনি যদি ডকার কন্টেইনারে TLS ব্যবহার করার জন্য এজ মাইক্রোগেটওয়ে কনফিগার করেন, আপনি লগ ফাইল ডিরেক্টরি মাউন্ট করলে আপনাকে অবশ্যই পোর্ট 8443 প্রকাশ করতে হবে। আরও দেখুন ভলিউম [শেয়ার করা ফাইলসিস্টেম]ডকার কন্টেইনারে TLS ব্যবহার করাও দেখুন।
    -w, -- workdir (ঐচ্ছিক) ডিরেক্টরির পথ নির্দিষ্ট করে যেখানে edgemicro.sock এবং edgemicro.pid ফাইল তৈরি করা উচিত। আপনি ফাইলের নাম রুট edgemicro পরিবর্তন করতে পারবেন না। বর্তমান ওয়ার্কিং ডিরেক্টরি পাথে ডিফল্ট।

    উদাহরণ:

    docker run -P -p 8000:8000 -d -w /tmp --name edgemicro 
    ...
    EDGEMICRO_ORG এজ মাইক্রোগেটওয়ে কনফিগার করতে আপনি যে অ্যাপিজি সংস্থার নাম ব্যবহার করেছেন।
    EDGEMICRO_ENV Apigee এনভায়রনমেন্টের নাম যা আপনি এজ মাইক্রোগেটওয়ে কনফিগার করতে ব্যবহার করেছেন।
    EDGEMICRO_PROCESSES শুরু করার জন্য প্রসেসের সংখ্যা।
    EDGEMICRO_KEY আপনি এজ মাইক্রোগেটওয়ে কনফিগার করার সময় কীটি ফিরে এসেছে।
    EDGEMICRO_SECRET আপনি এজ মাইক্রোগেটওয়ে কনফিগার করার সময় গোপনটি ফিরে এসেছে।
    EDGEMICRO_CONFIG বেস64-এনকোডেড এজ মাইক্রোগেটওয়ে কনফিগারেশন ফাইল ধারণকারী একটি ভেরিয়েবল।
    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
      

    লগ ফাইল আউটপুট বিকল্প নির্দিষ্ট করা হচ্ছে

    এজ মাইক্রোগেটওয়ে কনফিগারেশন প্যারামিটার to_console আপনাকে লগ ফাইলের পরিবর্তে স্ট্যান্ডার্ড আউটপুটে লগ তথ্য পাঠাতে দেয়। আপনি যদি একটি ডকার কন্টেইনারে এজ মাইক্রোগেটওয়ে চালানোর জন্য পদক্ষেপগুলি অনুসরণ করেন, তাহলে কন্টেইনারটি ডিফল্টভাবে stdout এবং ত্রুটি আউটপুটকে অবস্থানে থাকা কন্টেইনারে অবস্থিত একটি ফাইলে পুনঃনির্দেশ করে: ${APIGEE_ROOT}/logs/edgemicro.log

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

    নিম্নলিখিত টেবিলটি লগ আউটপুট আচরণ বর্ণনা করে যখন আপনি LOG_CONSOLE_OUTPUT_TO_FILE to_console ব্যবহার করেন:

    to_console: true

    LOG_CONSOLE_OUTPUT_TO_FILE=false

    • এজ মাইক্রোগেটওয়ে লগ ফাইলে কোন লগ পাঠানো হবে না, যেমন লগ ফাইল ম্যানেজিং এ বর্ণনা করা হয়েছে।
    • লগগুলি edgemicro.log ফাইলে পাঠানো হবে না।
    to_console: true

    LOG_CONSOLE_OUTPUT_TO_FILE=true

    • এজ মাইক্রোগেটওয়ে লগ ফাইলে কোন লগ পাঠানো হবে না, যেমন লগ ফাইল ম্যানেজিং এ বর্ণনা করা হয়েছে।
    • লগগুলি edgemicro.log ফাইলে পাঠানো হবে৷
    to_console: false

    LOG_CONSOLE_OUTPUT_TO_FILE=true

    • লগগুলি এজ মাইক্রোগেটওয়ে লগ ফাইলে পাঠানো হবে, যেমন লগ ফাইল ম্যানেজিং এ বর্ণনা করা হয়েছে।
    • লগগুলি edgemicro.log ফাইলে পাঠানো হবে৷

    একটি API কল পরীক্ষা করা হচ্ছে

    আপনি পাত্রে এজ মাইক্রোগেটওয়ে শুরু করার পরে, আপনি এটিতে API কল করতে পারেন। উদাহরণস্বরূপ, যদি আপনার API এর বেসপাথ /hello হয়:

    http://localhost:8000/hello

    নমুনা আউটপুট:

    {"error":"missing_authorization","error_description":"Missing Authorization header"}
    

    আপনি যদি এই প্রতিক্রিয়া দেখতে পান, তাহলে এর মানে হল এজ মাইক্রোগেটওয়ে সফলভাবে API কল পরিচালনা করেছে। যাইহোক, ডিফল্টরূপে, এজ মাইক্রোগেটওয়ের প্রমাণীকরণের জন্য একটি API কী প্রয়োজন। পরবর্তী বিভাগে, আপনি একটি বৈধ API কী দিয়ে API পরীক্ষা করবেন।

    একটি বৈধ API কী দিয়ে একটি API পরীক্ষা করুন

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

    নিম্নরূপ x-api-key হেডার সহ API-কে কল করুন। আপনি ডেভেলপার অ্যাপ থেকে কপি করেছেন কনজিউমার কী মান হল API কী। ডিফল্টরূপে, এজ মাইক্রোগেটওয়ে আশা করে যে আপনি 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 কল করার বিষয়ে আরও জানতে চান, পার্ট 4 দেখুন: Secure Edge Microgateway .

    স্টপিং এজ মাইক্রোগেটওয়ে

    এজ মাইক্রোগেটওয়ে বন্ধ করতে নিম্নলিখিত ডকার কমান্ডটি ব্যবহার করুন:

    docker stop edgemicro
    

    এজ মাইক্রোগেটওয়ে রিস্টার্ট করা হচ্ছে

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

    docker start edgemicro
    

    ডকার কন্টেইনারে TLS ব্যবহার করা

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

    সার্টিফিকেট ফাইল কোথায় রাখবেন

    এজ মাইক্রোগেটওয়েতে চলমান ডকার কন্টেইনারটির /opt/apigee/.edgemicro এ একটি মাউন্ট পয়েন্ট রয়েছে। আপনি যখন TLS শংসাপত্র ব্যবহার করার জন্য এজ মাইক্রোগেটওয়ে কনফিগার করেন, আপনি সেই মাউন্ট পয়েন্টে সার্টিফিকেট ফাইলগুলি উপলব্ধ করতে পারেন এবং এজ মাইক্রোগেটওয়ে কনফিগারেশন ফাইলে তাদের উল্লেখ করতে পারেন। এই কনফিগার ফাইলটি সাধারণত $HOME/.edgemicro ডিরেক্টরিতে থাকে এবং এটির নাম your_org - your_env -config.yaml । যেমন:

    ...
    edgemicro:
      ssl:
       key: /opt/apigee/.edgemicro/southbound/tls.key
       cert: /opt/apigee/.edgemicro/southbound/tls.crt
    ...
    

    একটি CA ব্যবহার করা যা Node.js দ্বারা বিশ্বস্ত নয়

    আপনি যদি একটি সার্টিফিকেট অথরিটি (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
    

    ডকার কন্টেইনার হিসাবে এজ মাইক্রো চালান দেখুন।

    TLS বৈধতা বন্ধ করা হচ্ছে

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

    1. https://github.com/apigee-internal/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. প্রাথমিক সেটআপ পদক্ষেপ

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

    2. স্ব-স্বাক্ষরিত শংসাপত্র তৈরি করুন

    এরপরে, 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. ব্যাশ ফাইলটি চালান। আপনাকে শংসাপত্রের তথ্যের জন্য অনুরোধ করা হবে। সাধারণ নামের জন্য localhost ব্যবহার করতে ভুলবেন না।

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

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

    3. এজ মাইক্রোগেটওয়ে কনফিগার ফাইলটি সম্পাদনা করুন

    1. এজ মাইক্রো কনফিগারেশন ফাইলটি এডিটরে খুলুন। যেমন:

      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 এ অবস্থিত এজ মাইক্রোগেটওয়ে কনফিগারেশন ফাইলটিকে 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. ধারক চালান

    1. এজ মাইক্রোগেটওয়ে দিয়ে ডকার কন্টেইনার চালানোর জন্য নিম্নলিখিত কমান্ডটি চালান:

      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- এ বর্ণিত মৌলিক কমান্ডের থেকে পৃথক।

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

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

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

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

    1. প্রাথমিক সেটআপ পদক্ষেপ

    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

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

    6. edgemicro configure থেকে ফিরে আসা কী এবং গোপন শংসাপত্রগুলি অনুলিপি করুন। ধারক চালানোর জন্য আপনার এই মানগুলির প্রয়োজন হবে। যেমন:

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

    2. একটি 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. ব্যাশ ফাইলটি চালান। আপনাকে শংসাপত্রের তথ্যের জন্য অনুরোধ করা হবে। সাধারণ নামের জন্য 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 এর মতো একই ডিরেক্টরিতে একটি নতুন ডকারফাইল তৈরি করুন, যেখানে 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
      

    3. Apigee Edge এ সত্তা তৈরি করুন

    1. এই সেটিংস দিয়ে একটি এজ মাইক্রোগেটওয়ে-সচেতন প্রক্সি তৈরি করুন। আরও তথ্যের জন্য, এজ-এ একটি এজ মাইক্রোগেটওয়ে-সচেতন API প্রক্সি তৈরি করুন দেখুন।

      • প্রক্সি নাম: edgemicro_local
      • রিভিশনঃ 1
      • বেসপথ: /local
      • লক্ষ্য: https://helloworld:9443
    2. একটি API পণ্য তৈরি করুন। বিস্তারিত জানার জন্য, একটি পণ্য তৈরি করুন দেখুন।

    3. একটি বিকাশকারী তৈরি করুন। বিস্তারিত জানার জন্য, একটি বিকাশকারী তৈরি করুন দেখুন।

    4. একটি বিকাশকারী অ্যাপ তৈরি করুন। বিশদ বিবরণের জন্য, একটি বিকাশকারী অ্যাপ তৈরি করুন দেখুন

    4. ধারক চালান

    1. এজ মাইক্রো কনফিগারেশন ফাইলটি এডিটরে খুলুন। যেমন:

      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 এ অবস্থিত এজ মাইক্রোগেটওয়ে কনফিগারেশন ফাইলটিকে 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
      

    5. 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. এজ মাইক্রোগেটওয়ে পুনরায় চালান, কিন্তু এবার 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 কমান্ডটি চালান। আগের মতো আপনার বেসপাথ এবং API কী প্রতিস্থাপন করুন। যেমন:

      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
      

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

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

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

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

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

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

    নিম্নলিখিত পদক্ষেপগুলি কাস্টম প্লাগইনগুলি অন্তর্ভুক্ত করতে ডকার মাউন্ট পয়েন্ট কীভাবে ব্যবহার করতে হয় তা চিত্রিত করে।

    1. স্টপ এজ মাইক্রোগেটওয়ে:

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

      $HOME/edgemicro/custom/plugins
      
    3. এজ মাইক্রোগেটওয়ে কনফিগার ফাইলে কাস্টম প্লাগইন ডিরেক্টরি যোগ করুন। যেমন:

        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. প্লাগইন পরীক্ষা করতে আপনার API কল করুন.

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

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

    এই বিকল্পে, আপনি আপনার পাত্রে প্লাগইনগুলি তৈরি করুন৷

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

    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/

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

    এরপরে, একটি এজ মাইক্রোগেটওয়ে ছবিতে আপনার প্লাগইন কোড যোগ করতে একটি ডকারফাইল তৈরি করুন।

    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. আপনার প্লাগইনগুলির সাথে একটি নতুন এজ মাইক্রোগেটওয়ে ডকার ইমেজ তৈরি করুন:

      docker build -t image-name .
      

      যেমন:

      docker build -t edgemicroplugins .
      

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

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

    1. এজ মাইক্রোগেটওয়ে কনফিগারেশন ফাইলটি একটি সম্পাদকে খুলুন:

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

      যেমন:

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

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

    4. মাইক্রোগেটওয়ে শুরু করুন

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

    1. $HOME/.edgemicro এ অবস্থিত এজ মাইক্রোগেটওয়ে কনফিগারেশন ফাইলটিকে 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. একটি ধারক হিসাবে এজ মাইক্রোগেটওয়ে চালান। কমান্ডটি বেশ কয়েকটি পরিবেশের ভেরিয়েবল সেট করে যা এজ মাইক্রোগেটওয়ে শুরু করতে কন্টেইনার রানটাইম দ্বারা ব্যবহৃত হয়:

      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!