Edge माइक्रोगेटवे के लिए Docker का इस्तेमाल करना

आपको Apigee Edge दस्तावेज़ दिख रहा है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है इस पेज पर जाएं Apigee X दस्तावेज़.
जानकारी

इस विषय में, Docker कंटेनर में Edge Microgateway को चलाने का तरीका बताया गया है. तरीका Docker, Docker कमांड, और Edge Microgateway के बारे में बुनियादी जानकारी होने की वजह से, इस विषय के बारे में ज़्यादा जानें सेटअप और कॉन्फ़िगरेशन. इसके लिए ज़्यादा जानकारी के लिए, Docker का दस्तावेज़ देखें और एज माइक्रोगेटवे.

ज़रूरी शर्तें

Docker कंटेनर में Edge Microgateway चलाने से पहले, आपको ये काम करने होंगे टास्क:

  • अपने Apigee संगठन/एनवायरमेंट के लिए Edge माइक्रोगेटवे कॉन्फ़िगर करें:

    edgemicro configure -o your_org -e your_env -u your_username

    कॉन्फ़िगरेशन के बारे में ज़्यादा जानकारी के लिए, पहला चरण: Edge माइक्रोगेटवे कॉन्फ़िगर करें देखें.

  • कॉन्फ़िगरेशन के चरणों को पूरा करने के बाद, कॉन्फ़िगरेशन का पता लगाएं फ़ाइल से लिए जाते हैं. डिफ़ॉल्ट जगह यहां है:

    $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 इकाइयां (या बनाई गई हैं) की मदद से पुष्टि किए गए एपीआई प्रॉक्सी कॉल किए जा सकते हैं. इन इकाइयों में Edge माइक्रोगेटवे-अवेयर शामिल हैं प्रॉक्सी, एपीआई प्रॉडक्ट, डेवलपर, और डेवलपर ऐप्लिकेशन. सभी निर्देशों के लिए, यह देखें Apigee Edge पर इकाइयां बनाएं.

Edge माइक्रो को Docker कंटेनर के तौर पर चलाएं

  1. Edge Microgateway के लिए Docker इमेज डाउनलोड करें:

    docker pull gcr.io/apigee-microgateway/edgemicro:latest
  2. अगले चरणों पर जाने से पहले, यह पक्का कर लें कि आपने यहां दिए गए सभी चरण पूरे कर लिए हों ज़रूरी शर्तें सेक्शन में जाएं.

  3. Edge Microgateway कॉन्फ़िगरेशन फ़ाइल को base64-एन्कोड करने के लिए, नीचे दिया गया कमांड चलाएं $HOME/.edgemicro में स्थित:

    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 इस सेटिंग से वॉल्यूम माउंट के बारे में जानकारी मिलती है. ध्यान दें कि अगर एज माइक्रोगेटवे को कॉन्फ़िगर किया जाता है, तो Docker कंटेनर में TLS का इस्तेमाल करने के लिए, आपको पोर्ट 8443 को सार्वजनिक करना होगा, अगर लॉग फ़ाइल डायरेक्ट्री को माउंट करें. वॉल्यूम [शेयर किए गए फ़ाइल सिस्टम] के बारे में भी जानें. डॉकर कंटेनर में TLS का इस्तेमाल करना भी देखें.
    -w, -- workdir (ज़रूरी नहीं) उस डायरेक्ट्री का पाथ बताता है जहां edgemicro.sock और edgemicro.pid फ़ाइलों को बनाया गया. आप फ़ाइल नाम रूट edgemicro को संशोधित नहीं कर सकते. डिफ़ॉल्ट तौर पर, यह वैल्यू चालू होने वाली मौजूदा डायरेक्ट्री के पाथ पर सेट होती है.

    उदाहरण:

    docker run -P -p 8000:8000 -d -w /tmp --name edgemicro 
    ...
    EDGEMICRO_ORG उस Apigee संगठन का नाम जिसका इस्तेमाल आपने Edge Microgateway को कॉन्फ़िगर करने के लिए किया था.
    EDGEMICRO_ENV उस Apigee एनवायरमेंट का नाम जिसका इस्तेमाल आपने Edge Microgateway को कॉन्फ़िगर करने के लिए किया है.
    EDGEMICRO_PROCESSES शुरू की जाने वाली प्रोसेस की संख्या.
    EDGEMICRO_KEY Edge Microgateway को कॉन्फ़िगर करने पर कुंजी दिखाई गई थी.
    EDGEMICRO_SECRET Edge Microgateway को कॉन्फ़िगर करने पर सीक्रेट वापस लौटा दिया गया है.
    EDGEMICRO_CONFIG ऐसा वैरिएबल जिसमें base64 कोड में बदली गई Edge माइक्रोगेटवे कॉन्फ़िगरेशन फ़ाइल है.
    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 फ़ाइल पर भेजे जाएंगे.

    एपीआई कॉल की जांच करना

    कंटेनर में Edge माइक्रोगेटवे शुरू करने के बाद, इसे एपीआई कॉल किया जा सकता है. उदाहरण के लिए, अगर आपके एपीआई का बेसपाथ /hello है, तो:

    http://localhost:8000/hello

    आउटपुट का उदाहरण:

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

    अगर आपको यह रिस्पॉन्स दिखता है, तो इसका मतलब है कि Edge माइक्रोगेटवे को सही तरीके से हैंडल किया गया है एपीआई कॉल. हालांकि, डिफ़ॉल्ट रूप से Edge Microgateway को पुष्टि करने के लिए एपीआई पासकोड की ज़रूरत होती है. अगले सेक्शन में, मान्य एपीआई पासकोड से एपीआई को टेस्ट किया जाएगा.

    मान्य एपीआई पासकोड की मदद से, एपीआई की जांच करना

    Edge यूज़र इंटरफ़ेस (यूआई) में, उस डेवलपर ऐप्लिकेशन पर जाएं जिसे आपने पहले बनाया था. डेवलपर में ऐप्लिकेशन पेज पर जाकर, उपभोक्ता कुंजी दिखाएं और उसे कॉपी करें. यह वैल्यू, एपीआई पासकोड है. आपको ये चीज़ें इस्तेमाल करनी होंगी इस कुंजी का इस्तेमाल पुष्टि किए गए एपीआई कॉल करने के लिए करें.

    एपीआई को x-api-key हेडर के साथ इस तरह कॉल करें. उपभोक्ता कुंजी का वह मान जो डेवलपर ऐप्लिकेशन से कॉपी की जाने वाली कुंजी, एपीआई पासकोड होती है. डिफ़ॉल्ट रूप से, 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 के ज़रिए पुष्टि किए गए एपीआई कॉल करने के बारे में ज़्यादा जानना है, तो अगर आपको एपीआई पासकोड और OAuth टोकन का इस्तेमाल करना है, तो चौथा चरण: सिक्योर एज माइक्रोगेटवे देखें.

    एज माइक्रोगेटवे को बंद किया जा रहा है

    Edge माइक्रोगेटवे को रोकने के लिए, Docker कमांड का इस्तेमाल करें:

    docker stop edgemicro
    

    एज माइक्रोगेटवे को रीस्टार्ट किया जा रहा है

    Edge Microgateway को बंद करने के बाद, आप इसे Docker कमांड से रीस्टार्ट कर सकते हैं:

    docker start edgemicro
    

    Docker कंटेनर में TLS का इस्तेमाल करना

    इस सेक्शन में बताया गया है कि EDGE माइक्रोगेटवे को चलाने के लिए, TLS को कॉन्फ़िगर कैसे करें Docker कंटेनर में. TLS का इस्तेमाल करने के लिए, Edge Microgateway सर्वर को कॉन्फ़िगर किया जा सकता है का इस्तेमाल किया जा सकता है, और आप Edge को कॉन्फ़िगर भी कर सकते हैं टारगेट एंडपॉइंट को किए जाने वाले आउटगोइंग अनुरोधों के लिए, TLS क्लाइंट के तौर पर माइक्रोगेटवे की सुविधा (दक्षिण की दिशा).

    सर्टिफ़िकेट वाली फ़ाइलें कहां डालें

    एज माइक्रोगेटवे पर चलने वाले 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 के लिए भरोसेमंद नहीं है

    अगर किसी ऐसी सर्टिफ़िकेट अथॉरिटी (सीए) का इस्तेमाल किया जा रहा है जो डिफ़ॉल्ट रूप से भरोसेमंद नहीं है 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 कंटेनर के तौर पर, Run Edge Micro भी देखें.

    TLS की पुष्टि करने की सुविधा बंद करना

    हालांकि, इसका सुझाव नहीं दिया जाता है, लेकिन कुछ मामलों में हो सकता है कि आप TLS की पुष्टि करने की सुविधा को बंद करना चाहें कंटेनर में चल रहे एज माइक्रोगेटवे के लिए. TLS को बंद करने की सुविधा इसे डिफ़ॉल्ट रूप से, Edge Microgateway Docker कंटेनर में नहीं बनाया जाता है. इन्हें पूरा करना है टास्क के लिए, आपको एज माइक्रोगेटवे के लिए अपनी पसंद की Docker इमेज बनानी होगी. तय सीमा से कम कस्टम इमेज बनाने और TLS की पुष्टि करने की सुविधा को बंद करने के सामान्य निर्देश हैं.

    1. Edge Microgateway के सोर्स रिपॉज़िटरी को यहां से क्लोन करें या डाउनलोड करें 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 कंटेनर बनाएं:

      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 माइक्रोगेटवे पर, नॉर्थबाउंड (इनकमिंग) TLS कनेक्शन को कैसे सेट अप किया जा सकता है सर्वर. एज माइक्रोगेटवे पर एपीआई कॉल करते समय, नॉर्थबाउंड 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 = 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-अवेयर प्रॉक्सी, एपीआई प्रॉडक्ट, डेवलपर, और और एक डेवलपर ऐप्लिकेशन होना चाहिए. इसके अलावा, आपको 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. bash फ़ाइल चलाएं. आपको सर्टिफ़िकेट की जानकारी देने के लिए कहा जाएगा. कृपया सामान्य नाम के लिए localhost.

    5. देखें कि नीचे दी गई फ़ाइलें बनाई गई हैं या नहीं:

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

    3. Edge Microgateway कॉन्फ़िगरेशन फ़ाइल में बदलाव करें

    1. Edge माइक्रो कॉन्फ़िगरेशन फ़ाइल को एडिटर में खोलें. उदाहरण के लिए:

      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. Edge Microgateway कॉन्फ़िगरेशन फ़ाइल को base64-एन्कोड करने के लिए, नीचे दिया गया कमांड चलाएं $HOME/.edgemicro में स्थित:

      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 कंटेनर के रूप में Run Edge Micro भी देखें.

    4. कंटेनर चलाएं

    1. Edge माइक्रोगेटवे के साथ 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 कंटेनर के रूप में Run Edge Micro में दी गई है.

      • port को 8443 पर सेट किया गया है.
      • वॉल्यूम माउंट का इस्तेमाल कुंजी और सर्टिफ़िकेट वाली फ़ाइलों को माउंट करने के लिए किया जाता है.
      • NODE_EXTRA_CA_CERTS वैरिएबल का इस्तेमाल, कस्टम सीए जोड़ने के लिए किया जाता है (अगर केस में ज़रूरी हो प्रमाणित किया गया है).

    5. TLS कॉन्फ़िगरेशन की जांच करना

    1. सेटअप की जांच करने के लिए, यहां दिया गया cURL निर्देश चलाएं. प्रतिस्थापन अपने बेसपाथ और एपीआई पासकोड को भी निर्देश में शामिल करें. नीचे दिए गए उदाहरण में माना गया है कि आप उस डायरेक्ट्री में हैं जहां rootca.pem मौजूद है और आपने जो प्रॉक्सी बनाई है उसका बेसपाथ /hello है:

      curl -v https://localhost:8443/hello --cacert rootca.pem \
      -H "x-api-key: Az82fdnfONVCOOE4NKhajxAboDgA3FAo"
      
    2. वर्बोस cURL आउटपुट, TLS हैंडशेकिंग. अगर आपको एचटीटीपी 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 कनेक्शन कैसे सेट अप करें Edge Microgateway सर्वर और बैकएंड टारगेट ऐप्लिकेशन दोनों पर लागू होता है. नीचे दिए गए उदाहरण में, खुद हस्ताक्षर किए हुए सर्टिफ़िकेट.

    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

      कॉन्फ़िगरेशन के बारे में ज़्यादा जानकारी के लिए, पहला चरण: Edge माइक्रोगेटवे कॉन्फ़िगर करें देखें.

    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. 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. उसी डायरेक्ट्री में नई Dockerfile बनाएं जिसमें 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 इमेज बनाएं:

      docker build -t helloworld . 
      
    11. ऐप्लिकेशन का नमूना शुरू करें:

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

    3. Apigee Edge पर इकाइयां बनाएं

    1. इन सेटिंग की मदद से, Edge Microgateway-अवेयर प्रॉक्सी बनाएं. ज़्यादा जानकारी के लिए, Edge पर Edge Microgateway-अवेयर एपीआई प्रॉक्सी बनाएं देखें.

      • प्रॉक्सी का नाम: edgemicro_local
      • संशोधन: 1
      • बेसपाथ: /local
      • टारगेट: https://helloworld:9443
    2. एपीआई प्रॉडक्ट बनाएं. ज़्यादा जानकारी के लिए, प्रॉडक्ट बनाना देखें.

    3. डेवलपर बनाएं. ज़्यादा जानकारी के लिए, डेवलपर बनाना लेख पढ़ें.

    4. डेवलपर ऐप्लिकेशन बनाएं. ज़्यादा जानकारी के लिए, डेवलपर ऐप्लिकेशन बनाना पर जाएं

    4. कंटेनर चलाएं

    1. Edge माइक्रो कॉन्फ़िगरेशन फ़ाइल को एडिटर में खोलें. उदाहरण के लिए:

      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
      

    5. TLS कॉन्फ़िगरेशन की जांच करना

    1. सेटअप की जांच करने के लिए, यहां दिया गया cURL निर्देश चलाएं. प्रतिस्थापन आपका बेसपाथ है, जिसका इस्तेमाल आपने माइक्रोगेटवे-अवेयर प्रॉक्सी में किया है और एपीआई पासकोड, आपके बनाए गए डेवलपर ऐप्लिकेशन से मिला है. इसे Apigee Edge पर बनाया गया है. उदाहरण के लिए:

      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 माइक्रोगेटवे को फिर से चलाएं, लेकिन इस बार 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. आउटपुट की जाँच करें. सफल होने पर, आपको एक एचटीटीपी 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
      

    कस्टम प्लग इन जोड़ना

    आप custom लिखकर माइक्रोगेटवे में नई सुविधाएं और क्षमताएं जोड़ सकते हैं प्लगिन. कस्टम प्लगिन की मदद से, अनुरोधों के साथ प्रोग्राम के हिसाब से इंटरैक्ट किया जा सकता है और माइक्रोगेटवे से होकर गुज़रने वाली प्रतिक्रियाएं भी.

    Edge माइक्रोगेटवे पर प्लगिन लागू करने के लिए, आपके पास दो विकल्प हैं इंस्टेंस जो किसी Docker कंटेनर में चल रहा है:

    इस सेक्शन के बाकी हिस्से के लिए यह माना जाता है कि जिसे आपको लिखने और कॉन्फ़िगर करने का तरीका पता है स्टैंडर्ड Edge Microgateway सेटअप के लिए प्लगिन. अगर ऐसा नहीं है, तो कस्टम प्लगिन डेवलप करना देखें.

    विकल्प A: प्लगिन डायरेक्ट्री को किसी वॉल्यूम पर माउंट करें

    (v.2.5.27 में जोड़ा गया) वॉल्यूम माउंट के ज़रिए प्लगिन जोड़ने के चरण ये हैं जैसा कि Edge Microgateway में किसी भी कस्टम प्लगिन को जोड़ने के लिए ज़रूरी है. टास्क कब शुरू होगा जब आप Docker कंटेनर चलाते हैं, तो आप अपने स्थानीय ब्राउज़र पर प्लगिन डायरेक्ट्री को माउंट कर सकते हैं कंटेनर माउंट पॉइंट पर सिस्टम (वॉल्यूम) का मान, जो कि /opt/apigee/plugins है. इसके बाद, Edge Microgateway कॉन्फ़िगरेशन फ़ाइल में लोकल वॉल्यूम डायरेक्ट्री के बारे में बताएं.

    नीचे दिए गए चरण में, Docker माउंट पॉइंट का इस्तेमाल करने का तरीका बताया गया है. प्लगिन.

    1. Edge माइक्रोगेटवे को बंद करें:

      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. प्लगिन की जांच करने के लिए, अपने एपीआई को कॉल करें.

    ज़्यादा जानकारी के लिए, वॉल्यूम [शेयर किए गए फ़ाइल सिस्टम] देखें.

    विकल्प 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. Docker इमेज बनाएं

    इसके बाद, Edge Microgateway की इमेज में अपना प्लगिन कोड जोड़ने के लिए, Dockerfile बनाएं.

    1. जिस डायरेक्ट्री में ZIP फ़ाइल मौजूद है उसी डायरेक्ट्री में, 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 .
      

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

    4. माइक्रोगेटवे शुरू करें

    आखिर में, आपको कंटेनर में माइक्रोगेटवे शुरू करना होगा.

    1. Edge Microgateway कॉन्फ़िगरेशन फ़ाइल को base64-एन्कोड करने के लिए, नीचे दिया गया कमांड चलाएं $HOME/.edgemicro में स्थित:

      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. प्लग इन की जांच करने के लिए अपने एपीआई को कॉल करें:

      जांच करें कि प्लगिन कोड आपके एपीआई को कॉल करके काम करता है या नहीं और पुष्टि करें कि आउटपुट उम्मीद के मुताबिक है:

      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!