استخدام Docker لـ Edge Microgateway

يتم الآن عرض مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
المعلومات

يوضح هذا الموضوع كيفية تشغيل Edge Microgateway في حاوية Docker. تفترض الخطوات التي يتم تناولها في هذا الموضوع فهمًا أساسيًا لإعداد Docker وأوامر Docker وEdge Microgateway. لمزيد من المعلومات، يمكنك الاطّلاع على مستندات Docker وEdge Microgateway.

المتطلبات الأساسية

قبل تشغيل Edge Microgateway في حاوية Docker، يجب عليك القيام بالمهام التالية:

  • اضبط Edge Microgateway لمؤسسة أو بيئة Apigee:

    edgemicro configure -o your_org -e your_env -u your_username

    لمزيد من التفاصيل حول التهيئة، راجع الجزء 1: تهيئة Edge Microgateway.

  • بعد تنفيذ خطوات الضبط، حدِّد موقع ملف الإعداد. يكون الموقع الجغرافي التلقائي هنا:

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

    حيث your_org وyour_env هما التنظيم والبيئة اللذان استخدمتهما عند تشغيل الأمر edgemicro config. ستحتاج إلى هذا الملف عند بدء تشغيل Edge Microgateway في حاوية Docker.

  • تأكَّد من أنّ لديك المفتاح وبيانات الاعتماد السرية التي تم عرضها عند تشغيل الأمر edgemicro config. مثال:

    The following credentials are required to start edge micro
      key: d9c34e1aff68ed969273c016699eabf48780e4f652242e72fc88a43e21252cb0
      secret: 3bc95a71c86a3c8ce04537fbcb788158731t51dfc6cdec13b7c05aa0bd969430
    
  • قبل بدء Edge Microgateway في حاوية Docker، تحتاج إلى إنشاء (أو إنشاء) كيانات Apigee Edge المطلوبة لإجراء استدعاءات الخادم الوكيل لواجهة برمجة التطبيقات التي تمت مصادقتها. وتتضمّن هذه الكيانات خادم Edge Microgateway الإلكتروني، ومنتج واجهة برمجة التطبيقات، ومطوّر البرامج، وتطبيق مطوِّر البرامج. للحصول على التعليمات الكاملة، يُرجى الاطّلاع على إنشاء كيانات على Apigee Edge.

تشغيل Edge Micro كحاوية Docker

  1. تنزيل صورة Docker لـ Edge Microgateway:

    docker pull gcr.io/apigee-microgateway/edgemicro:latest
  2. قبل الانتقال إلى الخطوات التالية، تأكَّد من تنفيذ جميع الخطوات الواردة في قسم المتطلبات الأساسية.

  3. شغِّل الأمر التالي لترميز ملف إعداد Edge Microgateway الموجود في $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. تشغيل 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 تحدِّد هذه السياسة ميزة تثبيت مستوى الصوت. وتجدُر الإشارة إلى أنّه في حال ضبط Edge Microgateway لاستخدام بروتوكول أمان طبقة النقل (TLS) في حاوية Docker، عليك إظهار المنفذ 8443 في حال تثبيت دليل ملف السجلّ. راجِع أيضًا VOLUME [أنظمة الملفات المشتركة]. راجِع أيضًا استخدام بروتوكول أمان طبقة النقل (TLS) في حاوية Docker.
    -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 متغيّر يحتوي على ملف إعداد Edge Microgateway بترميز base64.
    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 اختيار إرسال معلومات السجلّ إلى إخراج عادي بدلاً من إرسال معلومات السجلّ إلى ملف السجلّ. إذا اتّبعت خطوات تشغيل Edge Microgateway في حاوية Docker، ستعيد الحاوية تلقائيًا توجيه 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

    • لن يتم إرسال أي سجلات إلى ملف سجلّ 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 Microgateway في الحاوية، يمكنك إجراء استدعاءات واجهة برمجة التطبيقات إليها. على سبيل المثال، إذا كان المسار الأساسي لواجهة برمجة التطبيقات هو /hello:

    http://localhost:8000/hello

    ناتج النموذج:

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

    إذا رأيت هذا الرد، فهذا يعني أن Edge Microgateway قد تعاملت بنجاح مع استدعاء واجهة برمجة التطبيقات. ومع ذلك، يتطلب 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 المميزة، يُرجى الاطّلاع على الجزء 4: Secure Edge Microgateway.

    حافة التوقف الصغيرة

    استخدم أمر Docker التالي لإيقاف Edge Microgateway:

    docker stop edgemicro
    

    جارٍ إعادة تشغيل Edge Microgateway

    بعد إيقاف Edge Microgateway، يمكنك إعادة تشغيله باستخدام أمر Docker هذا:

    docker start edgemicro
    

    استخدام بروتوكول أمان طبقة النقل (TLS) في حاوية Docker

    يوضِّح هذا القسم كيفية تكوين بروتوكول أمان طبقة النقل (TLS) في برنامج Edge Microgateway الذي يعمل في حاوية Docker. يمكنك إعداد خادم Edge Microgateway لاستخدام بروتوكول أمان طبقة النقل (TLS) للطلبات الواردة (الاتجاه الشمالي)، ويمكنك ضبط برنامج Edge Microgateway ليكون عميل بروتوكول أمان طبقة النقل (TLS) للطلبات الصادرة إلى نقاط النهاية المستهدفة (الاتجاه الجنوبي).

    أين أضع ملفات الشهادات؟

    تحتوي حاوية Docker التي تشغّل Edge Microgateway على نقطة تثبيت على /opt/apigee/.edgemicro. عند ضبط Edge Microgateway لاستخدام شهادات بروتوكول أمان طبقة النقل (TLS)، يمكنك إتاحة ملفات الشهادات على نقطة التثبيت هذه والإشارة إليها في ملف إعداد 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) غير موثوق به تلقائيًا من خلال 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
    

    راجِع أيضًا تشغيل Edge Micro كحاوية Docker.

    إيقاف التحقق من بروتوكول أمان طبقة النقل (TLS)

    قد ترغب في بعض الحالات في إيقاف التحقق من بروتوكول أمان طبقة النقل (TLS) مع Edge Microgateway الذي يعمل في حاوية، على الرغم من أنه لا يوصى بذلك. ولا يتم تضمين إمكانية تعطيل بروتوكول أمان طبقة النقل (TLS) بشكل افتراضي في حاوية Edge Microgateway Docker. لإنجاز المهمة، يجب عليك إنشاء صورة Docker مخصصة لـ Edge Microgateway. في ما يلي تعليمات عامة لإنشاء صورة مخصّصة وإيقاف التحقق من بروتوكول أمان طبقة النقل (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) الخاص باتجاه الشمال

    يوضِّح هذا القسم كيفية إعداد اتصال TLS (الوارد) شمالاً على خادم Edge Microgateway. تتيح تقنية Northbound TLS للعملاء استخدام HTTPS عند إجراء اتصالات من واجهة برمجة التطبيقات مع 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. أضف العنوان Stanza التالي إلى openssl.cnf لإنشاء سمات إشارة اسم الخادم (SNI) الصحيحة:

      [ 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. cd إلى الدليل $HOME/.edgemicro.
    2. إنشاء النص البرمجي bash التالي يمكنك أن تسميها أي اسم. مثلاً: 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 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. نفِّذ الأمر التالي لترميز ملف إعداد Edge Microgateway الموجود في $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`

    راجِع أيضًا تشغيل Edge Micro كحاوية Docker.

    4. تشغيل الحاوية

    1. نفِّذ الأمر التالي لتشغيل حاوية 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 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 كحاوية Docker.

      • وقد تم ضبط 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). إذا رأيت استجابة HTTP 200، يعني هذا نجاح الضبط:

      *   Trying ::1...ey:Az82fdnfONVCOOE4NKhajxAboDgA3FAo"
      * TCP_NODELAY set
      * Connected to localhost (::1) port 8443 (#0)
      * ALPN, offering h2
      * ALPN, offering http/1.1
      * Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
      * successfully set certificate verify locations:
      *   CAfile: rootca.pem
        CApath: none
      * TLSv1.2 (OUT), TLS handshake, Client hello (1):
      * TLSv1.2 (IN), TLS handshake, Server hello (2):
      * TLSv1.2 (IN), TLS handshake, Certificate (11):
      * TLSv1.2 (IN), TLS handshake, Server key exchange (12):
      * TLSv1.2 (IN), TLS handshake, Server finished (14):
      * TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
      * TLSv1.2 (OUT), TLS change cipher, Client hello (1):
      * TLSv1.2 (OUT), TLS handshake, Finished (20):
      * TLSv1.2 (IN), TLS change cipher, Client hello (1):
      * TLSv1.2 (IN), TLS handshake, Finished (20):
      * SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
      * ALPN, server accepted to use http/1.1
      * Server certificate:
      *  subject: C=US; ST=CO; L=Boulder; O=Docs; OU=Docs; CN=localhost; emailAddress=docs@apigee.com
      *  start date: Dec 14 22:35:28 2018 GMT
      *  expire date: Oct  3 22:35:28 2021 GMT
      *  common name: localhost (matched)
      *  issuer: C=US; ST=CO; L=Boulder; O=Docs; OU=Docs; CN=localhost; emailAddress=docs@apigee.com
      *  SSL certificate verify ok.
      > GET /hello HTTP/1.1
      > Host: localhost:8443
      > User-Agent: curl/7.54.0
      > Accept: */*
      > x-api-key:Az82fdnfaONVCOE4NKhajxAboDA3FAo
      >
      < HTTP/1.1 200 OK
      < x-powered-by: Apigee
      < access-control-allow-origin: *
      < x-frame-options: ALLOW-FROM RESOURCE-URL
      < x-xss-protection: 1
      < x-content-type-options: nosniff
      < content-type: text/plain; charset=utf-8
      < etag: W/"d-GHB1ZrJKk/wdVTdB/jgBsw"
      < date: Fri, 14 Dec 2018 22:43:13 GMT
      < via: 1.1 google
      < alt-svc: clear
      < x-response-time: 1325
      < Connection: keep-alive
      < Transfer-Encoding: chunked
      <
      * Connection #0 to host localhost left intact
      Hello, Guest!
      

    مثال: كيفية ضبط بروتوكول أمان طبقة النقل (TLS) ذي الاتجاه الجنوبي

    يوضِّح هذا القسم كيفية إعداد اتصال TLS (صادر) باتجاه جنوبي بين خادم 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. أضف العنوان Stanza التالي إلى openssl.cnf لإنشاء سمات إشارة اسم الخادم (SNI) الصحيحة:

      [ 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: تهيئة Edge Microgateway.

    6. انسخ المفتاح وبيانات الاعتماد السرية التي تم عرضها من edgemicro configure. ستحتاج إلى هذه القيم لتشغيل الحاوية. مثال:

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

    2. إنشاء تطبيق هدف Node.js

    1. cd إلى الدليل .edgemicro.

    2. إنشاء النص البرمجي bash التالي يمكنك أن تسميها أي اسم. مثلاً: 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. أنشئ ملف package.json في الدليل نفسه الذي يتضمّن server.js. مثال:

      {
        "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 Microgateway-aware على Edge.

      • اسم الخادم الوكيل: edgemicro_local
      • النسخة السابقة: 1
      • مسار الأساس: /local
      • القيمة المُستهدفة: https://helloworld:9443
    2. أنشِئ منتجًا لواجهة برمجة التطبيقات. لمعرفة التفاصيل، يُرجى الاطّلاع على إنشاء منتج.

    3. إنشاء مطوّر برامج لمعرفة التفاصيل، يُرجى الاطّلاع على إنشاء مطوّر.

    4. إنشاء تطبيق مطوِّر. لمعرفة التفاصيل، يُرجى الاطّلاع على إنشاء تطبيق مطوِّر

    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. نفِّذ الأمر التالي لترميز ملف إعداد Edge Microgateway في $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. قم بتشغيل الأمر التالي لبدء 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 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 Microgateway، ولكن هذه المرة أضِف المتغيّر NODE_EXTRA_CA_CERTS.

      chown -R 100:101 ~/.edgemicro/ \
      docker run -P -p 8443:8443 -d --name edgemicro \
      -v path_to_your_edgemicro_dir:/opt/apigee/.edgemicro \
      -v path_to_your_logs_dir:/opt/apigee/logs \
      -e NODE_EXTRA_CA_CERTS=/opt/apigee/.edgemicro/rootca.pem \
      -e EDGEMICRO_PORT=8443 \
      -e EDGEMICRO_ORG=$EDGEMICRO_ORG \
      -e EDGEMICRO_ENV=$EDGEMICRO_ENV \
      -e EDGEMICRO_KEY=$EDGEMICRO_KEY \
      -e EDGEMICRO_SECRET=$EDGEMICRO_SECRET \
      -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \
      --link helloworld:helloworld gcr.io/apigee-microgateway/edgemicro
      
    3. نفِّذ أمر cURL التالي. استبدل المسار الأساسي ومفتاح واجهة برمجة التطبيقات على النحو السابق. مثال:

      curl https://localhost:8443/local -k -H "x-api-key: xxxx" -v
      
    4. تحقَّق من الناتج. عند نجاح العملية، ستحصل على استجابة حالة HTTP 200:

      ...
      > GET /local HTTP/1.1
      > Host: localhost:8443
      > User-Agent: curl/7.54.0
      > Accept: */*
      > x-api-key: 9fVC65pFj8LrmlPmVyxFjx4KgAHTxqSd
      >
      < HTTP/1.1 200 OK
      < x-powered-by: Express
      < content-type: text/html; charset=utf-8
      < etag: W/"c-M6tWOb/Y57lesdjQuHeB1P/qTV0"
      < date: Wed, 12 Dec 2018 05:49:28 GMT
      < x-response-time: 421
      < Connection: keep-alive
      < Transfer-Encoding: chunked
      <
      Hello world
      

    إضافة مكوّن إضافي مخصص

    يمكنك إضافة ميزات وإمكانات جديدة إلى البوابة الصغيرة من خلال كتابة مكوّنات إضافية مخصّصة. تتيح لك المكونات الإضافية المخصصة التفاعل آليًا مع الطلبات والردود التي تتدفق عبر البوابة الصغيرة.

    لديك خياران لنشر المكوّنات الإضافية على مثيل Edge Microgateway الذي يتم تشغيله في حاوية Docker:

    يفترض باقي هذا القسم أنك على دراية بكتابة المكونات الإضافية وتكوينها لإعداد Edge Microgateway القياسي. وإذا لم يكن الأمر كذلك، يُرجى الاطّلاع على تطوير مكوّنات إضافية مخصَّصة.

    الخيار أ: تحميل دليل المكوّنات الإضافية على وحدة التخزين

    (تمت إضافتها في الإصدار 2.5.27) تشبه خطوات إضافة مكونات إضافية من خلال تثبيت مستوى الصوت الخطوات المطلوبة لإضافة أي مكون إضافي مخصص إلى Edge Microgateway. عند تشغيل حاوية Docker، يمكنك تثبيت دليل المكوّنات الإضافية على نظامك المحلي (مستوى الصوت) على نقطة تثبيت الحاوية، وهي /opt/apigee/plugins. ثم تحدد دليل الحجم المحلي في ملف إعداد Edge Microgateway.

    توضّح الخطوات التالية كيفية استخدام نقطة تثبيت Docker لتضمين مكونات إضافية مخصَّصة.

    1. إيقاف حافة 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 باستخدام أمر مشابه للأمر التالي، حيث يمكنك استخدام الخيار -v لتثبيت دليل المكوّنات الإضافية على مستوى صوت Docker. في نموذج الأمر التالي، يتم ربط دليل المكوّنات الإضافية $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. استدعِ واجهة برمجة التطبيقات لاختبار المكوّن الإضافي.

    لمزيد من المعلومات، يُرجى الاطّلاع على VOLUME [أنظمة الملفات المشتركة].

    الخيار ب: إنشاء المكوّنات الإضافية في الحاوية

    في هذا الخيار، يمكنك إنشاء المكوّنات الإضافية في حاويتك.

    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.

    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 الموجود في $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. تشغيل 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. استدعِ واجهة برمجة التطبيقات لاختبار المكوّن الإضافي:

      اختبِر تنفيذ رمز المكوّن الإضافي من خلال استدعاء واجهة برمجة التطبيقات والتحقّق من أنّ الناتج على النحو المتوقع:

      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!