استفاده از 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 را ایجاد کنید (یا ایجاد کرده باشید) که برای برقراری تماس های پروکسی API احراز هویت شده مورد نیاز هستند. این موجودیت ها شامل یک پروکسی Edge Microgateway، یک محصول API، یک Developer و یک Developer App است. برای دستورالعمل‌های کامل، به ایجاد موجودیت‌ها در Apigee Edge مراجعه کنید.

Edge Micro را به عنوان یک ظرف Docker اجرا کنید

  1. دانلود تصویر Docker برای Edge Microgateway:

    docker pull gcr.io/apigee-microgateway/edgemicro:latest
  2. قبل از اینکه به مراحل بعدی بروید، مطمئن شوید که تمام مراحل در قسمت پیش نیازها را انجام داده اید.

  3. دستور زیر را اجرا کنید تا فایل پیکربندی Edge Microgateway که در $HOME/.edgemicro قرار دارد را در base64-encode کنید:

    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 را به عنوان یک ظرف اجرا کنید. این دستور چندین متغیر محیطی را تنظیم می کند که توسط Container Runtime برای راه اندازی 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 پیکربندی می‌کنید، در صورت مونت کردن فهرست فایل log، باید پورت 8443 را در معرض نمایش قرار دهید. همچنین VOLUME [فایل سیستم‌های مشترک] را ببینید. همچنین استفاده از TLS در کانتینر Docker را ببینید.
    -w, -- workdir (اختیاری) مسیر دایرکتوری را مشخص می کند که فایل های edgemicro.sock و edgemicro.pid باید در آن ایجاد شوند. شما نمی توانید نام فایل root 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
      

    تعیین گزینه های خروجی فایل log

    پارامتر پیکربندی 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 ارسال می‌شوند.

    آزمایش یک تماس API

    پس از راه‌اندازی Edge Microgateway در کانتینر، می‌توانید با آن تماس‌های API برقرار کنید. برای مثال، اگر مسیر پایه API شما /hello باشد:

    http://localhost:8000/hello

    خروجی نمونه:

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

    اگر این پاسخ را مشاهده کردید، به این معنی است که Edge Microgateway با موفقیت تماس API را انجام داده است. با این حال، به طور پیش فرض، Edge Microgateway به یک کلید API برای احراز هویت نیاز دارد. در بخش بعدی، API را با یک کلید API معتبر تست خواهید کرد.

    یک API را با یک کلید API معتبر تست کنید

    در رابط کاربری Edge، به برنامه توسعه دهنده ای که قبلا ایجاد کرده اید بروید. در صفحه Developer App، Consumer Key را نشان داده و آن را کپی کنید. این مقدار کلید API است. از این کلید برای برقراری تماس های API احراز هویت شده استفاده خواهید کرد.

    API را با هدر x-api-key به صورت زیر فراخوانی کنید. مقدار کلید مصرف کننده که از برنامه توسعه دهنده کپی کرده اید، کلید API است. به‌طور پیش‌فرض، Edge Microgateway از شما انتظار دارد که کلید را در هدری به نام x-api-key ارسال کنید، مانند این:

    curl -i http://localhost:8000/hello -H "x-api-key:apikey"

    به عنوان مثال:

    curl -i http://localhost:8000/hello -H "x-api-key:PydUKRDGIXRqF2xh4usn1FLHbhGKVIz"

    اگر می‌خواهید درباره برقراری تماس‌های API تأیید شده از طریق Edge Microgateway با کلیدهای API و نشانه‌های OAuth اطلاعات بیشتری کسب کنید، قسمت 4: Secure Edge Microgateway را ببینید.

    Microgateway توقف لبه

    برای متوقف کردن Edge Microgateway از دستور Docker زیر استفاده کنید:

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

    استفاده از CA که مورد اعتماد Node.js نیست

    اگر از یک Certificate Authority (CA) استفاده می‌کنید که به‌طور پیش‌فرض توسط Node.js مورد اعتماد نیست (مانند موردی که در مورد گواهی امضا شده توسط خود وجود دارد)، هنگام اجرای کانتینر، از پارامتر NODE_EXTRA_CA_CERTS استفاده کنید.

    این پارامتر را روی مسیر یک فایل حاوی یک یا چند گواهی قابل اعتماد در قالب PEM تنظیم کنید. برای مشاهده نحوه استفاده از این پارامتر، به مثال‌های How to configure Northbound TLS و How to configure southbound TLS مراجعه کنید.

    به عنوان مثال:

    chown -R 100:101 ~/.edgemicro/ \
    docker run -P -p 8443:8443 -d --name edgemicro \
    -v $HOME/.edgemicro:/opt/apigee/.edgemicro \
    -v $HOME/.edgemicro:/opt/apigee/logs \
    -e NODE_EXTRA_CA_CERTS=/opt/apigee/.edgemicro/rootca.pem \
    -e EDGEMICRO_PORT=8443 \
    -e EDGEMICRO_ORG=docs \
    -e EDGEMICRO_ENV=test \
    -e EDGEMICRO_KEY=ac36574905fb54fdae65fc5433e831bec2680efb98220a355f2e917e52973c \
    -e EDGEMICRO_SECRET=aac81dff6c326eaa222d53c15c8841fa78ea863bf4472568c9ce2d80a3bc56 \
    -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \
    --link helloworld:helloworld gcr.io/apigee-microgateway/edgemicro
    

    همچنین Run 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 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 هنگام برقراری تماس های API با 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. بند زیر را به 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، یک محصول API، یک توسعه دهنده و یک برنامه توسعه دهنده ایجاد کرده باشید. علاوه بر این، باید دستور 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 در 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`

    همچنین به Run 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 برای افزودن یک CA سفارشی (در صورت نیاز در مورد گواهی‌های خودامضا) استفاده می‌شود.

    5. پیکربندی TLS را تست کنید

    1. دستور cURL زیر را برای تست تنظیمات اجرا کنید. مسیر پایه و کلید API خود را با دستور جایگزین کنید. مثال زیر فرض می‌کند که شما در دایرکتوری هستید که 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. بند زیر را به 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 build -t helloworld . 
      
    11. برنامه نمونه را راه اندازی کنید:

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

    3. موجودیت ها را در Apigee Edge ایجاد کنید

    1. با این تنظیمات یک پروکسی Edge Microgateway-aware ایجاد کنید. برای اطلاعات بیشتر، به ایجاد یک پروکسی API آگاه از Edge Microgateway در Edge مراجعه کنید.

      • نام پروکسی: edgemicro_local
      • بازبینی: 1
      • مسیر پایه: /local
      • هدف: https://helloworld:9443
    2. یک محصول API ایجاد کنید. برای جزئیات، به ایجاد یک محصول مراجعه کنید.

    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 در base64 اجرا کنید:

      export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`

      جایی که your_org و your_env سازمان و محیطی هستند که هنگام اجرای دستور edgemicro config استفاده می‌کنید.

      به یاد داشته باشید که تیک های برگشتی (`) را در اطراف فرمان قرار دهید. به عنوان مثال:

      export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
    4. دستور زیر را برای راه اندازی Edge Microgateway در کانتینر 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 زیر را برای تست تنظیمات اجرا کنید. مسیر پایه ای را که در پروکسی microgateway-aware استفاده کرده اید و کلید API بدست آمده از برنامه Developer که در 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 زیر را اجرا کنید. مسیر پایه و کلید 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
      

    افزودن یک افزونه سفارشی

    با نوشتن افزونه های سفارشی می توانید ویژگی ها و قابلیت های جدیدی را به microgateway اضافه کنید. پلاگین های سفارشی به شما امکان می دهند با درخواست ها و پاسخ هایی که از طریق microgateway جریان می یابند به صورت برنامه نویسی تعامل داشته باشید.

    شما دو گزینه برای استقرار پلاگین ها در یک نمونه Edge Microgateway دارید که در یک کانتینر داکر اجرا می شود:

    بقیه این بخش فرض می کند که شما با نوشتن و پیکربندی پلاگین ها برای راه اندازی استاندارد Edge Microgateway آشنا هستید. اگر نه، به توسعه افزونه های سفارشی مراجعه کنید.

    گزینه A: دایرکتوری پلاگین ها را روی یک جلد قرار دهید

    (افزوده شده در نسخه 2.5.27) مراحل اضافه کردن پلاگین ها از طریق یک ولوم مونت مشابه مراحل مورد نیاز برای افزودن هر پلاگین سفارشی به Edge Microgateway است. هنگامی که کانتینر Docker را اجرا می کنید، می توانید دایرکتوری پلاگین ها را در سیستم محلی خود (حجم) روی نقطه نصب کانتینر که /opt/apigee/plugins است، نصب کنید. سپس دایرکتوری حجم محلی را در فایل پیکربندی Edge Microgateway مشخص کنید.

    مراحل زیر نحوه استفاده از نقطه اتصال Docker برای گنجاندن افزونه های سفارشی را نشان می دهد.

    1. Stop Edge Microgateway:

      edgemicro stop
      
    2. یک دایرکتوری برای پلاگین های سفارشی خود ایجاد کنید. برای مثال ایجاد کنید

      $HOME/edgemicro/custom/plugins
      
    3. دایرکتوری پلاگین سفارشی را به فایل پیکربندی Edge Microgateway اضافه کنید. به عنوان مثال:

        plugins:
          dir: $HOME/edgemicro/custom/plugins
          sequence:
            - oauth
            - response-uppercase
        ````
      
    4. افزونه خود را با توجه به دستورالعمل های موجود در Write a simple plugin بنویسید و تست کنید. حتما کد پلاگین خود را در ساختار دایرکتوری مناسب قرار دهید. به عنوان مثال:

      custom
        |
        |-- plugins
          |
          |- response-uppercase
          |     |- index.js
          |     |- package.json
          |- request-headers
          |     | - index.js
                | - package.json
      
    5. کانتینر Docker را با دستوری شبیه به دستور زیر اجرا کنید، جایی که از گزینه -v برای مونت کردن دایرکتوری افزونه ها بر روی حجم داکر استفاده می کنید. در دستور مثال زیر، دایرکتوری پلاگین‌ها $HOME/edgemicro/custom/plugins (جایی که افزونه سفارشی قرار دارد) به نقطه اتصال ظرف /opt/apigee/plugins نگاشت می‌شود:

      chown -R 100:101 ~/.edgemicro/ \
      docker run -P -p 8000:8000 -d --name edgemicro \
      -v /var/tmp:/opt/apigee/logs \
      -v $HOME/edgemicro/custom/plugins:/opt/apigee/plugins \
      -e EDGEMICRO_PROCESSES=1 \
      -e EDGEMICRO_ORG=jdoe \
      -e EDGEMICRO_ENV=test \
      -e EDGEMICRO_KEY=39c4b561100cd7f258768d1072f3e1d7c17b5f36a18fe89972bb5c9ce7e58fb \
      -e EDGEMICRO_SECRET=f5f9e239a38b4e6cc99c2aa067716a84aebdcff9580a7925fc500e402b1a5fa \
      -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \
      -e SERVICE_NAME=edgemicro \
      --security-opt=no-new-privileges \
      --cap-drop=ALL gcr.io/apigee-microgateway/edgemicro:latest
      
    6. برای تست افزونه با API خود تماس بگیرید.

    برای اطلاعات بیشتر، VOLUME [فایل سیستم‌های مشترک] را ببینید.

    گزینه B: افزونه ها را در کانتینر بسازید

    در این گزینه شما افزونه ها را در کانتینر خود می سازید.

    1. پلاگین های خود را بسته بندی کنید

    1. افزونه خود را با توجه به دستورالعمل های موجود در Write a simple plugin بنویسید و تست کنید.

    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 ایجاد کنید

    سپس یک Dockerfile ایجاد کنید تا کد افزونه خود را به تصویر Edge Microgateway اضافه کنید.

    1. در همان فهرستی که فایل فشرده در آن قرار دارد، یک فایل جدید به نام Dockerfile ایجاد کنید.
    2. کد زیر را به Dockerfile اضافه کنید و فایل را ذخیره کنید:

      USER root
      RUN apk update && \
          apk upgrade && \
          apk add zipapk add zip && \
          mkdir /opt/apigee/customplugins && \
          chown apigee:apigee /opt/apigee/customplugins
      COPY plugins.zip /opt/apigee/customplugins
      RUN su - apigee -c "unzip /opt/apigee/customplugins/plugins.zip -d /opt/apigee/customplugins"
      EXPOSE 8000
      EXPOSE 8443
      USER apigee
      ENTRYPOINT ["entrypoint"]
      
    3. با افزونه های خود یک تصویر جدید Edge Microgateway Docker ایجاد کنید:

      docker build -t image-name .

      به عنوان مثال:

      docker build -t edgemicroplugins .

    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 قرار دارد را در base64-encode کنید:

      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 را به عنوان یک ظرف اجرا کنید. این دستور چندین متغیر محیطی را تنظیم می کند که توسط Container Runtime برای راه اندازی Edge Microgateway استفاده می شود:

      docker run -P -p 8000:8000 -d --name edgemicroplugins \
      -e EDGEMICRO_PLUGIN_DIR=/opt/apigee/customplugins/plugins \
      -e EDGEMICRO_ORG=your_org \
      -e EDGEMICRO_ENV=your_env \
      -e EDGEMICRO_KEY=your_key \
      -e EDGEMICRO_SECRET=your_secret \
      -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \
      -e SERVICE_NAME=edgemicroplugins image_name

      به عنوان مثال:

      docker run -P -p 8000:8000 -d --name edgemicroplugins \
      -e EDGEMICRO_PLUGIN_DIR=/opt/apigee/customplugins/plugins \
      -e EDGEMICRO_ORG=docs \
      -e EDGEMICRO_ENV=test \
      -e EDGEMICRO_KEY=d9c34e1aff68ed969273b016699eabf48780e4f652242e72fc88a23e21252cb0 \
      -e EDGEMICRO_SECRET=3bc95a71c86a3c8ce04137fbcb788158731t51dfc6cdec13b7c05aa0bd969430 \
      -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \
      -e SERVICE_NAME=edgemicroplugins edgemicroplugins
    3. با API خود تماس بگیرید تا افزونه را آزمایش کنید:

      با فراخوانی API خود و تأیید اینکه خروجی مطابق انتظار است، آزمایش کنید که کد افزونه اجرا می‌شود:

      curl -i http://localhost:8000/hello -H "x-api-key:apikey"

      به عنوان مثال، افزونه response-uppercase ممکن است پاسخی مانند این را برگرداند:

      curl -i http://localhost:8000/hello -H "x-api-key:PydUKRDGIXRqF2xh4usn1FLHbhGKVIz"
        HELLO, WORLD!