Sử dụng Docker cho Edge Microgateway

Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến Tài liệu về Apigee X.
thông tin

Chủ đề này giải thích cách chạy Edge Microgateway trong vùng chứa Docker. Các bước thực hiện được đề cập trong chủ đề này giả định hiểu cơ bản về Docker, lệnh Docker và Edge Microgateway quá trình thiết lập và định cấu hình. Cho để biết thêm thông tin, hãy tham khảo tài liệu về DockerEdge Microgateway.

Điều kiện tiên quyết

Trước khi chạy Edge Microgateway trong vùng chứa Docker, bạn phải làm như sau nhiệm vụ:

  • Định cấu hình Edge Microgateway cho tổ chức/môi trường Apigee của bạn:

    edgemicro configure -o your_org -e your_env -u your_username

    Để biết thêm thông tin chi tiết về cấu hình, hãy xem Phần 1: Định cấu hình Edge Microgateway.

  • Sau khi thực hiện các bước định cấu hình, hãy tìm cấu hình đó . Vị trí mặc định là ở đây:

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

    trong đó your_orgyour_env là tổ chức và môi trường mà bạn đã dùng khi chạy lệnh edgemicro config. Bạn sẽ cần tệp này khi bạn khởi động Edge Microgateway trong vùng chứa Docker.

  • Hãy đảm bảo bạn có khoá và thông tin đăng nhập bí mật được trả về khi bạn chạy Lệnh edgemicro config. Ví dụ:

    The following credentials are required to start edge micro
      key: d9c34e1aff68ed969273c016699eabf48780e4f652242e72fc88a43e21252cb0
      secret: 3bc95a71c86a3c8ce04537fbcb788158731t51dfc6cdec13b7c05aa0bd969430
    
  • Trước khi khởi động Edge Microgateway trong vùng chứa Docker, bạn cần tạo (hoặc đã tạo) các thực thể Apigee Edge mà bạn bắt buộc để thực hiện lệnh gọi proxy API đã xác thực. Các thực thể này bao gồm một công cụ nhận biết Edge Microgateway proxy, Sản phẩm API, Nhà phát triển và Ứng dụng của nhà phát triển. Để biết hướng dẫn đầy đủ, hãy xem Tạo thực thể trên Apigee Edge.

Chạy Edge Micro dưới dạng vùng chứa Docker

  1. Tải hình ảnh Docker xuống cho Edge Microgateway:

    docker pull gcr.io/apigee-microgateway/edgemicro:latest
  2. Trước khi chuyển sang các bước tiếp theo, hãy đảm bảo rằng bạn đã thực hiện tất cả các bước trong phần Điều kiện tiên quyết.

  3. Chạy lệnh sau để mã hoá base64 tệp cấu hình Edge Microgateway đặt tại $HOME/.edgemicro:

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

    trong đó your_orgyour_env là tổ chức và môi trường mà bạn đã sử dụng khi bạn đã chạy lệnh edgemicro config.

    Hãy nhớ đặt dấu phẩy ngược (`) xung quanh lệnh. Ví dụ:

    export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
  4. Chạy Edge Microgateway như một vùng chứa. Lệnh này thiết lập một số biến môi trường được thời gian chạy vùng chứa dùng để khởi động 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

    Tham số

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

    Thông số Nội dung mô tả
    -P Xuất bản tất cả các cổng bị lộ cho máy chủ. Hãy xem thêm Tài liệu tham khảo về quy trình chạy Docker.
    -p Liên kết rõ ràng một cổng hoặc một dải các cổng. Hãy xem thêm Tài liệu tham khảo về quy trình chạy Docker.
    -d Chạy ở chế độ tách rời. Hãy xem thêm Tài liệu tham khảo về quy trình chạy Docker.
    -v, -- volume Chỉ định một giá trị gắn kết âm lượng. Lưu ý rằng nếu bạn định cấu hình Edge Microgateway để sử dụng TLS trong vùng chứa Docker, bạn phải hiển thị cổng 8443 nếu bạn gắn thư mục tệp nhật ký. Hãy xem thêm mục ÂM [hệ thống tệp dùng chung]. Vui lòng xem thêm bài viết Sử dụng TLS trong vùng chứa Docker.
    -w, -- workdir (Không bắt buộc) Chỉ định đường dẫn đến thư mục mà Các tệp edgemicro.sockedgemicro.pid phải đã tạo. Bạn không thể sửa đổi gốc của tên tệp edgemicro. Giá trị mặc định là đường dẫn thư mục đang làm việc.

    Ví dụ:

    docker run -P -p 8000:8000 -d -w /tmp --name edgemicro 
    ...
    EDGEMICRO_ORG Tên của tổ chức Apigee mà bạn dùng để định cấu hình Edge Microgateway.
    EDGEMICRO_ENV Tên của môi trường Apigee mà bạn đã dùng để định cấu hình Edge Microgateway.
    EDGEMICRO_PROCESSES Số quy trình bắt đầu.
    EDGEMICRO_KEY Khoá được trả về khi bạn định cấu hình Edge Microgateway.
    EDGEMICRO_SECRET Mã bí mật được trả về khi bạn định cấu hình Edge Microgateway.
    EDGEMICRO_CONFIG Một biến chứa tệp cấu hình Edge Microgateway được mã hoá dưới dạng base64.
    LOG_CONSOLE_OUTPUT_TO_FILE (Boolean) Cho phép bạn chỉ định nơi gửi đầu ra nhật ký. Xem Chỉ định tuỳ chọn tệp nhật ký.

    Ví dụ:

    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. Cách kiểm tra xem vùng chứa có đang chạy không:

      docker ps

      Bạn sẽ thấy kết quả tương tự như dưới đây:

      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
      

    Chỉ định tuỳ chọn đầu ra tệp nhật ký

    Tham số cấu hình to_console của Edge Microgateway cho phép bạn chọn gửi thông tin nhật ký đến đầu ra chuẩn thay vì gửi tới tệp nhật ký. Nếu bạn làm theo các bước để chạy Edge Microgateway trong vùng chứa Docker, thì theo mặc định, vùng chứa này sẽ chuyển hướng stdout và đầu ra lỗi đến một tệp nằm trong vùng chứa tại vị trí: ${APIGEE_ROOT}/logs/edgemicro.log.

    Để ngăn thông tin nhật ký được gửi đến edgemicro.log, hãy sử dụng biến LOG_CONSOLE_OUTPUT_TO_FILE khi bạn chạy vùng chứa.

    Bảng sau đây mô tả hành vi xuất nhật ký khi bạn sử dụng LOG_CONSOLE_OUTPUT_TO_FILE với to_console:

    to_console: true

    LOG_CONSOLE_OUTPUT_TO_FILE=false

    • Sẽ không có nhật ký nào được gửi đến tệp nhật ký của Edge Microgateway, như mô tả trong phần Quản lý tệp nhật ký.
    • Nhật ký sẽ không được gửi đến tệp edgemicro.log.
    to_console: true

    LOG_CONSOLE_OUTPUT_TO_FILE=true

    • Sẽ không có nhật ký nào được gửi đến tệp nhật ký của Edge Microgateway, như mô tả trong phần Quản lý tệp nhật ký.
    • Nhật ký sẽ được gửi đến tệp edgemicro.log.
    to_console: false

    LOG_CONSOLE_OUTPUT_TO_FILE=true

    • Nhật ký sẽ được gửi đến tệp nhật ký Edge Microgateway, như mô tả trong phần Quản lý tệp nhật ký.
    • Nhật ký sẽ được gửi đến tệp edgemicro.log.

    Kiểm thử lệnh gọi API

    Sau khi khởi động Edge Microgateway trong vùng chứa, bạn có thể thực hiện lệnh gọi API đến vùng chứa đó. Ví dụ: nếu đường dẫn cơ sở của API là /hello:

    http://localhost:8000/hello

    Kết quả mẫu:

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

    Nếu bạn thấy phản hồi này thì nghĩa là Edge Microgateway đã xử lý thành công lệnh gọi API. Tuy nhiên, theo mặc định, Edge Microgateway yêu cầu phải có khoá API để xác thực. Trong phần tiếp theo, bạn sẽ kiểm thử API bằng một khoá API hợp lệ.

    Kiểm thử API bằng khoá API hợp lệ

    Trong giao diện người dùng Edge, hãy chuyển đến Ứng dụng dành cho nhà phát triển mà bạn đã tạo trước đây. Trong thẻ Nhà phát triển trang Ứng dụng, hiện và sao chép Khoá người dùng. Giá trị này là khoá API. Bạn sẽ sử dụng khoá này để thực hiện lệnh gọi API đã xác thực.

    Gọi API có tiêu đề x-api-key như sau. Giá trị Khoá người tiêu dùng mà bạn được sao chép từ Ứng dụng dành cho nhà phát triển là khoá API. Theo mặc định, Edge Microgateway mong muốn bạn chuyển khoá vào tiêu đề có tên x-api-key, như sau:

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

    Ví dụ:

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

    Nếu bạn muốn tìm hiểu thêm về cách thực hiện lệnh gọi API đã xác thực thông qua Edge Microgateway với khoá API và mã thông báo OAuth, hãy xem Phần 4: Secure Edge Microgateway.

    Dừng Microgateway

    Sử dụng lệnh Docker sau đây để dừng Edge Microgateway:

    docker stop edgemicro
    

    Đang khởi động lại Edge Microgateway

    Sau khi dừng Edge Microgateway, bạn có thể khởi động lại bằng lệnh Docker sau:

    docker start edgemicro
    

    Sử dụng TLS trong vùng chứa Docker

    Phần này giải thích cách định cấu hình TLS để Edge Microgateway chạy trong vùng chứa Docker. Bạn có thể định cấu hình máy chủ Edge Microgateway để sử dụng TLS cho các yêu cầu đến (hướng đi theo hướng bắc) và bạn có thể định cấu hình Edge Microgateway là một ứng dụng TLS cho các yêu cầu gửi đi đến các thiết bị đầu cuối nhắm mục tiêu (hướng về phía nam).

    Nơi đặt tệp chứng chỉ

    Vùng chứa Docker chạy Edge Microgateway có một điểm gắn trên /opt/apigee/.edgemicro. Khi định cấu hình Edge Microgateway để sử dụng chứng chỉ TLS, bạn có thể đặt có sẵn trên điểm gắn đó và tham chiếu đến chúng trong Tệp cấu hình Edge Microgateway. Tệp cấu hình này thường nằm trong $HOME/.edgemicro và có tên là your_org-your_env-config.yaml. Ví dụ:

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

    Sử dụng một CA không được Node.js tin cậy

    Nếu bạn đang sử dụng Tổ chức phát hành chứng chỉ (CA) không được tin cậy theo mặc định Node.js (chẳng hạn như trường hợp có chứng chỉ tự ký), hãy cân nhắc sử dụng tham số NODE_EXTRA_CA_CERTS khi bạn chạy vùng chứa.

    Đặt tham số này thành đường dẫn đến tệp chứa một hoặc nhiều chứng chỉ đáng tin cậy ở định dạng PEM. Để biết cách thông số này được sử dụng, hãy xem các ví dụ về Cách định cấu hình TLS hướng NamCách định cấu hình TLS hướng Nam.

    Ví dụ:

    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
    

    Hãy xem thêm bài viết Chạy Edge Micro dưới dạng vùng chứa Docker.

    Đang tắt tính năng xác thực TLS

    Mặc dù không được khuyến nghị, nhưng trong một số trường hợp, bạn có thể muốn tắt tính năng xác thực TLS cho Edge Microgateway chạy trong vùng chứa. Khả năng tắt TLS không được tích hợp vào vùng chứa Docker của Edge Microgateway theo mặc định. Để hoàn thành nhiệm vụ đó, bạn phải tạo một hình ảnh Docker tuỳ chỉnh cho Edge Microgateway. Thấp hơn là những hướng dẫn chung về cách tạo hình ảnh tuỳ chỉnh và tắt tính năng xác thực TLS.

    1. Sao chép hoặc tải kho lưu trữ nguồn của Edge Microgateway xuống từ https://github.com/apigee-internal/microgateway.

    2. cd vào thư mục microgateway/kubernetes/docker/edgemicro trong thư mục mã nguồn.

      Ví dụ:

      cd $HOME/git/microgateway/kubernetes/docker/edgemicro
      
    3. Mở tệp entrypoint.sh rồi sửa đổi mã để chấp nhận NODE_TLS_REJECT_UNAUTHORIZED biến môi trường. Sau đó, khi chạy vùng chứa, bạn sẽ chỉ định một giá trị cho trường này biến.

    4. Tạo vùng chứa Docker:

      docker build -t edgemicro .
      
    5. Khi bạn chạy vùng chứa, hãy chỉ định tuỳ chọn -e NODE_TLS_REJECT_UNAUTHORIZED = 1. Ví dụ:

    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
    

    Ví dụ: Cách định cấu hình TLS hướng bắc

    Phần này giải thích cách thiết lập kết nối TLS (đến) theo hướng bắc (đến) trên Edge Microgateway máy chủ. TLS hướng bắc cho phép ứng dụng sử dụng HTTPS khi thực hiện lệnh gọi API đến Edge Microgateway. Ví dụ bên dưới sử dụng chứng chỉ tự ký.

    1. Các bước thiết lập Intital

    1. Xác định tệp openssl.cnf trên hệ thống của bạn. Ví dụ: /etc/ssl/openssl.cnf.
    2. Mở tệp opensssl.cnf để chỉnh sửa.
    3. Hãy đảm bảo req_extensions có trong tệp cấu hình. Ví dụ: bạn sẽ có thông tin tương tự như thông tin sau trong tệp của bạn:

      [ req ]
      ...
      req_extensions          = v3_req
      ...
      
      [ v3_req ]
      extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection
      basicConstraints = CA:FALSE
      keyUsage = nonRepudiation, digitalSignature, keyEncipherment
      
    4. Thêm đoạn văn sau vào openssl.cnf để tạo đúng thuộc tính 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
      

      Tệp opensssl.cnf mẫu:

      [ 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. Làm theo các bước được nêu trong phần Điều kiện tiên quyết để bắt đầu và định cấu hình Edge Microgateway nếu bạn chưa thực hiện. Sau khi hoàn tất, bạn cần tạo một proxy nhận biết Edge Microgateway, một Sản phẩm API, một Nhà phát triển và một Ứng dụng dành cho nhà phát triển. Ngoài ra, bạn nên chạy lệnh edgemicro configure và nhận được một khoá và khoá bí mật.

    2. Tạo chứng chỉ tự ký

    Tiếp theo, hãy tạo các chứng chỉ và khoá mà bạn cần để thiết lập TLS:

    1. cd vào thư mục $HOME/.edgemicro.
    2. Tạo tập lệnh bash sau. Bạn có thể đặt bất kỳ tên nào bạn muốn. Ví dụ: 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. Trong tệp bash, hãy đảm bảo rằng đường dẫn đến tệp openssl.cnf là chính xác.

    4. Thực thi tệp bash. Bạn sẽ được nhắc cung cấp thông tin chứng chỉ. Hãy nhớ sử dụng localhost cho Tên phổ biến.

    5. Kiểm tra xem các tệp sau đã được tạo chưa:

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

    3. Chỉnh sửa tệp cấu hình Edge Microgateway

    1. Mở tệp cấu hình Edge Micro trong trình chỉnh sửa. Ví dụ:

      vi $HOME/.edgemicro/myorg-test-config.yaml
      
    2. Chỉnh sửa khổ edgemicro như sau. Lưu ý rằng bạn sẽ thực hiện các thay đổi vào các thuộc tính portssl:

      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. Thực thi lệnh sau để mã hoá base64 tệp cấu hình Edge Microgateway đặt tại $HOME/.edgemicro:

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

      trong đó your_orgyour_env là tổ chức và môi trường mà bạn đã sử dụng khi bạn đã chạy lệnh edgemicro config.

      Hãy nhớ đặt dấu phẩy ngược (`) xung quanh lệnh. Ví dụ:

      export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`

    Hãy xem thêm bài viết Chạy Edge Micro dưới dạng vùng chứa Docker.

    4. Chạy vùng chứa

    1. Thực thi lệnh sau để chạy vùng chứa Docker bằng 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. Vui lòng lưu ý các tham số sau đây được dùng trong lệnh; chúng khác với kiểu cơ bản lệnh được mô tả trong Run Edge Micro dưới dạng vùng chứa Docker.

      • port được đặt thành 8443.
      • Giá đỡ âm lượng được dùng để gắn kết các tệp khoá và chứng chỉ.
      • Biến NODE_EXTRA_CA_CERTS được dùng để thêm một CA tuỳ chỉnh (trong trường hợp này nếu cần chứng chỉ tự ký).

    5. Kiểm thử cấu hình TLS

    1. Thực thi lệnh cURL sau đây để kiểm thử chế độ thiết lập. Sản phẩm thay thế đường dẫn cơ sở và khoá API của bạn vào lệnh. Ví dụ sau giả định bạn đang ở trong thư mục chứa rootca.pem được đặt và proxy mà bạn đã tạo có đường dẫn cơ sở /hello:

      curl -v https://localhost:8443/hello --cacert rootca.pem \
      -H "x-api-key: Az82fdnfONVCOOE4NKhajxAboDgA3FAo"
      
    2. Kết quả cURL chi tiết cho thấy từng bước của Bắt tay TLS. Nếu bạn thấy phản hồi HTTP 200 thì cấu hình đã thành công:

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

    Ví dụ: Cách định cấu hình TLS hướng nam

    Phần này giải thích cách thiết lập kết nối TLS (đi) theo hướng nam giữa máy chủ Edge Microgateway và ứng dụng đích phụ trợ. Ví dụ bên dưới sử dụng chứng chỉ tự ký.

    1. Các bước thiết lập ban đầu

    1. Xác định tệp openssl.cnf trên hệ thống của bạn. Ví dụ: /etc/ssl/openssl.cnf.
    2. Mở tệp opensssl.cnf để chỉnh sửa.
    3. Hãy đảm bảo req_extensions có trong tệp cấu hình. Ví dụ: bạn sẽ có thông tin tương tự như thông tin sau trong tệp của bạn:

      [ req ]
      ...
      req_extensions          = v3_req
      ...
      
      [ v3_req ]
      extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection
      basicConstraints = CA:FALSE
      keyUsage = nonRepudiation, digitalSignature, keyEncipherment
      
    4. Thêm đoạn văn sau vào openssl.cnf để tạo đúng thuộc tính 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
      

      Tệp opensssl.cnf mẫu:

      [ 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. Chạy lệnh edgemicro configure:

      edgemicro configure -o your_org -e your_env -u your_username

      Để biết thêm thông tin chi tiết về cấu hình, hãy xem Phần 1: Định cấu hình Edge Microgateway.

    6. Sao chép khoá và thông tin đăng nhập bí mật được trả về từ edgemicro configure. Bạn sẽ cần có các giá trị này để chạy vùng chứa. Ví dụ:

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

    2. Tạo ứng dụng đích Node.js

    1. cd vào thư mục .edgemicro.

    2. Tạo tập lệnh bash sau. Bạn có thể đặt bất kỳ tên nào bạn muốn. Ví dụ: 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. Trong tệp bash, hãy đảm bảo rằng đường dẫn đến tệp openssl.cnf là chính xác.

    4. Thực thi tệp bash. Bạn sẽ được nhắc cung cấp thông tin chứng chỉ. Hãy nhớ sử dụng hellworld cho Tên phổ biến.

    5. Kiểm tra xem các tệp sau đã được tạo chưa:

      • rootca.key
      • rootca.pem
      • tls.key
      • tls.csr
      • rootca.srl
      • tls.crt
    6. Tạo một tệp mới tên là 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. Tạo tệp package.json trong cùng thư mục với server.js. Ví dụ:

      {
        "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. Chạy npm install để lấy các phần phụ thuộc.

    9. Tạo một Dockerfile mới trong cùng thư mục với server.js, trong đó WORKDIR là đường dẫn đến thư mục gốc của ứng dụng 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. Tạo hình ảnh Docker:

      docker build -t helloworld . 
      
    11. Khởi động ứng dụng mẫu:

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

    3. Tạo thực thể trên Apigee Edge

    1. Tạo một proxy nhận biết Edge Microgateway bằng các chế độ cài đặt sau. Để biết thêm thông tin, hãy xem phần Tạo proxy API nhận biết Edge Microgateway trên Edge.

      • Tên proxy: edgemicro_local
      • Bản sửa đổi: 1
      • Đường dẫn cơ sở: /local
      • Mục tiêu: https://helloworld:9443
    2. Tạo một sản phẩm API. Để biết thông tin chi tiết, hãy xem bài viết Tạo sản phẩm.

    3. Tạo nhà phát triển. Để biết thông tin chi tiết, hãy xem phần Tạo nhà phát triển.

    4. Tạo Ứng dụng dành cho nhà phát triển. Để biết thông tin chi tiết, hãy xem phần Tạo ứng dụng dành cho nhà phát triển

    4. Chạy vùng chứa

    1. Mở tệp cấu hình Edge Micro trong trình chỉnh sửa. Ví dụ:

      vi $HOME/.edgemicro/myorg-test-config.yaml
      
    2. Chỉnh sửa khổ edgemicro như sau. Lưu ý rằng bạn sẽ thực hiện các thay đổi vào thuộc tính portssl:

      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. Thực thi lệnh sau để mã hoá base64 tệp cấu hình Edge Microgateway trong $HOME/.edgemicro:

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

      trong đó your_orgyour_env là tổ chức và môi trường mà bạn đã sử dụng khi bạn đã chạy lệnh edgemicro config.

      Hãy nhớ đặt dấu phẩy ngược (`) xung quanh lệnh. Ví dụ:

      export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
    4. Chạy lệnh sau để khởi động Edge Microgateway trong vùng chứa 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. Kiểm thử cấu hình TLS

    1. Thực thi lệnh cURL sau đây để kiểm thử chế độ thiết lập. Sản phẩm thay thế đường dẫn cơ sở mà bạn đã sử dụng trong proxy nhận biết cổng vi mô và Khoá API lấy từ ứng dụng dành cho nhà phát triển mà bạn đã tạo trên Apigee Edge. Ví dụ:

      curl https://localhost:8443/local -k -H "x-api-key: xxxx" -v
      

      Bạn sẽ thấy lỗi này:

      ...
      *  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. Chạy lại Edge Microgateway, nhưng lần này thêm biến 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. Thực thi lệnh cURL sau đây. Sản phẩm thay thế đường dẫn cơ sở và khoá API của bạn như trước đây. Ví dụ:

      curl https://localhost:8443/local -k -H "x-api-key: xxxx" -v
      
    4. Kiểm tra kết quả đầu ra. Khi thành công, bạn sẽ nhận được phản hồi trạng thái 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
      

    Thêm trình bổ trợ tuỳ chỉnh

    Bạn có thể thêm các tính năng và khả năng mới vào cổng nhỏ bằng cách viết tùy chỉnh trình bổ trợ. Các trình bổ trợ tuỳ chỉnh cho phép bạn tương tác theo cách lập trình với các yêu cầu và phản hồi đi qua cổng vi mô.

    Bạn có hai lựa chọn để triển khai trình bổ trợ cho Edge Microgateway thực thể chạy trong vùng chứa Docker:

    Phần còn lại của phần này giả định mà bạn đã quen viết và định cấu hình để thiết lập Edge Microgateway tiêu chuẩn. Nếu chưa, hãy xem phần Phát triển trình bổ trợ tuỳ chỉnh.

    Lựa chọn A: Gắn thư mục trình bổ trợ trên một ổ đĩa

    (Đã thêm vào phiên bản 2.5.27) Các bước thêm trình bổ trợ thông qua giá đỡ âm lượng là tương tự như các bước bắt buộc để thêm bất kỳ trình bổ trợ tuỳ chỉnh nào vào Edge Microgateway. Thời gian bạn chạy vùng chứa Docker, bạn có thể gắn thư mục plugin trên system (âm lượng) trên điểm gắn vùng chứa, là /opt/apigee/plugins. Sau đó, bạn chỉ định thư mục ổ đĩa cục bộ trong tệp cấu hình Edge Microgateway.

    Các bước sau đây minh hoạ cách sử dụng điểm gắn Docker để thêm các trình bổ trợ.

    1. Dừng Edge Microgateway:

      edgemicro stop
      
    2. Tạo thư mục cho các trình bổ trợ tuỳ chỉnh. Ví dụ: tạo

      $HOME/edgemicro/custom/plugins
      
    3. Thêm thư mục trình bổ trợ tuỳ chỉnh vào tệp cấu hình Edge Microgateway. Ví dụ:

        plugins:
          dir: $HOME/edgemicro/custom/plugins
          sequence:
            - oauth
            - response-uppercase
        ````
      
    4. Viết và kiểm thử trình bổ trợ của bạn, theo hướng dẫn trong bài viết Viết một trình bổ trợ đơn giản. Hãy nhớ hãy đặt mã trình bổ trợ của bạn vào cấu trúc thư mục thích hợp. Ví dụ:

      custom
        |
        |-- plugins
          |
          |- response-uppercase
          |     |- index.js
          |     |- package.json
          |- request-headers
          |     | - index.js
                | - package.json
      
    5. Chạy vùng chứa Docker bằng lệnh tương tự như sau, trong đó bạn dùng tuỳ chọn -v để liên kết thư mục trình bổ trợ trên ổ đĩa Docker. Trong lệnh ví dụ sau đây, thư mục trình bổ trợ $HOME/edgemicro/custom/plugins (nơi chứa trình bổ trợ tuỳ chỉnh) được ánh xạ tới điểm gắn /opt/apigee/plugins của vùng chứa:

      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. Hãy gọi API của bạn để kiểm thử trình bổ trợ.

    Để biết thêm thông tin, hãy xem phần TẬP [hệ thống tệp dùng chung].

    Lựa chọn B: Tạo trình bổ trợ vào vùng chứa

    Trong tuỳ chọn này, bạn tạo các trình bổ trợ vào vùng chứa của mình.

    1. Đóng gói trình bổ trợ của bạn

    1. Viết và kiểm thử trình bổ trợ của bạn, theo hướng dẫn trong bài viết Viết một trình bổ trợ đơn giản.

    2. Đặt mã trình bổ trợ của bạn vào cấu trúc thư mục thích hợp. Các thư mục trình bổ trợ phải tuân theo cấu trúc tập hợp. Ví dụ sau đây cho thấy cấu trúc mà bạn phải tuân theo, trong đó response-uppercaserequest-headers là tên của các thư mục chứa mã trình bổ trợ tùy chỉnh (những tên này chỉ là ví dụ, tên thư mục có thể khác nhau):

      plugin
        |
        |-- plugins
          |
          |- response-uppercase
          |     |- index.js
          |     |- package.json
          |- request-headers
          |     | - index.js
                | - package.json
      
    3. cd vào thư mục plugin.

    4. Trong thư mục plugin, hãy nén toàn bộ thư mục plugins:

      zip -r plugins.zip plugins/

    2. Tạo hình ảnh Docker

    Tiếp theo, hãy tạo một Dockerfile để thêm mã trình bổ trợ của bạn vào hình ảnh Edge Microgateway.

    1. Trong cùng thư mục chứa tệp zip đó, hãy tạo một tệp mới tên là Dockerfile.
    2. Thêm mã sau vào Dockerfile rồi lưu tệp:

      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. Tạo hình ảnh Docker Edge Microgateway mới bằng các trình bổ trợ của bạn:

      docker build -t image-name .
      

      Ví dụ:

      docker build -t edgemicroplugins .
      

    3. Cập nhật cấu hình Edge Microgateway

    Giờ đây, các trình bổ trợ đã được đóng gói, bạn cần thêm chúng vào Edge Microgateway tệp cấu hình.

    1. Mở tệp cấu hình Edge Microgateway trong trình chỉnh sửa:

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

      Ví dụ:

      vi $HOME/.edgemicro/myorg-test-config.yaml
    2. Thêm thư mục trình bổ trợ vào tệp cấu hình. Trong ví dụ sau đây thuộc tính dir chỉ định vị trí của mã trình bổ trợ (mà bạn đã chỉ định) trong Dockerfile). Bạn cũng phải chỉ định tên của thư mục trình bổ trợ, trong ví dụ bên dưới là response-uppercase.

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

    4. Bắt đầu cổng nhỏ

    Cuối cùng, bạn phải bắt đầu cổng nhỏ trong vùng chứa.

    1. Chạy lệnh sau để mã hoá base64 tệp cấu hình Edge Microgateway đặt tại $HOME/.edgemicro:

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

      trong đó your_orgyour_env là tổ chức và môi trường mà bạn đã sử dụng khi bạn đã chạy lệnh edgemicro config.

      Hãy nhớ đặt dấu phẩy ngược (`) xung quanh lệnh. Ví dụ:

      export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
    2. Chạy Edge Microgateway như một vùng chứa. Lệnh này thiết lập một số biến môi trường được thời gian chạy vùng chứa dùng để khởi động 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

      Ví dụ:

      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. Gọi API của bạn để kiểm thử trình bổ trợ:

      Kiểm thử để đảm bảo mã trình bổ trợ thực thi bằng cách gọi API của bạn và xác minh rằng đầu ra như mong đợi:

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

      Ví dụ: trình bổ trợ response-uppercase có thể trả về phản hồi như sau:

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