託管目標參考資料

您正在查看 Apigee Edge 說明文件。
查看 Apigee X 說明文件
資訊

環境變數限制

代管目標會限制可在代管目標執行階段環境中設定的環境變數大小和數量。

  • 1000:單一環境變數的長度上限。
  • 100:可設定的環境變數數量上限。

如要瞭解如何設定環境變數,請參閱資訊清單檔案

在應用程式執行階段中設定的環境變數

部署代管目標應用程式時,系統會設定下列環境變數,以供應用程式在執行階段使用:

  • APIGEE_ENVIRONMENT:部署代管目標 Proxy 的環境。
  • APIGEE_ORGANIZATION:部署代管目標 Proxy 的機構。
  • PORT:代管目標應用程式必須監聽的通訊埠。

系統資源分配

每個代管目標執行個體都會收到下列資源:

  • 256 MB 記憶體
  • 1.2 GHz CPU

資源調度

本節說明代管目標應用程式如何根據您擁有的 Edge 帳戶類型進行擴充。
  • 試用 Apigee Edge 時,每個 Proxy 只能使用一個代管目標執行個體。
  • 付費 Apigee Edge 帳戶會自動根據要求比率、回應延遲時間和每個 Proxy 的其他應用程式指標,自動調整資源配置。
  • 部署至 Apigee Edge 付費和試用版的託管目標應用程式,在閒置期間將資源調度降至零。在此情況下,您可能會發現在短時間內的回應速度變慢。另請參閱已知問題

資訊清單檔案

如要收集建構及部署代管應用程式的執行階段資訊,Edge 會在 resources/hosted 目錄中尋找名為 app.yaml 的資訊清單檔案。這個檔案包含建構及部署代管目標應用程式所需的資訊。

資訊清單檔案語法

runtime: node
runtimeVersion: version_number
command: command_name
args: argument_array
env:
  - name: variable_name
    value: literal_value
  - name: variable_name
    valueRef:
      name: kvm_name
      key: kvm_value

資訊清單檔案元素

app.yaml 資訊清單檔案包含下列元素:

  • runtime - (必要) 指定您要部署的應用程式類型。您必須指定 node
  • runtimeVersion - (選填) 應用程式使用的執行階段版本。預設值:Node.js LTS (v10.x)。如要瞭解其他選項,請參閱 Node 適用的 Docker 官方存放區
  • command - (選用) 讓您指定執行指令,而不是用於啟動應用程式的預設指令。預設值:Node.js=npm
  • args:要傳送到應用程式的指令列引數陣列 (以標準 YAML 陣列語法指定)。一般而言,這些指令會新增至預設指令。預設值為 start。例如,根據預設,系統會向 Node.js 應用程式傳送 npm start 指令。
  • env - (選用) 要在代管目標執行階段環境中設定的環境變數 (名稱/值組合)。這些變數可用於您部署的代管目標應用程式。
    • name - 變數名稱。
    • value | valueRef - 有兩種選項。您可以設定常值或參照儲存在鍵/值對應中的值。Edge 環境中必須已有金鑰值對應。請參閱「使用鍵/值對應
      • 如果您使用 value,則必須指定變數 name 和常值 value。例如:
        runtime: node
        env:
         - name: NODE_ENV
           value: production
      • 如果您使用 valueRef,就必須提供先前在 Edge 中建立的鍵/值對應 (KVM) 名稱。舉例來說:
        runtime: node
        env:
          - name: DB_ENV
            value: production
          - name: DB_PASSWORD
            valueRef:
              name: hosted-kvm
              key: db-password

    資訊清單檔案範例

    本節包含 Node.js 應用程式的範例資訊清單檔案。部署代管目標應用程式需要資訊清單檔案,且其必須位於 apiproxy/resources/hosted 目錄中,且檔案名稱必須為 app.yaml

    以下是 Node.js 應用程式的 app.yaml (資訊清單) 檔案範例。

    指定常值環境變數的範例:

     runtime: node
     env:
       - name: NODE_ENV
         value: production

    範例包含啟動指令、指令列引數和環境變數。

     runtime: node
     command: ./node_modules/pm2/bin/pm2
     env:
       - name: NODE_ENV
         value: production
     args:
       - app.js


    指定鍵/值對應 (KVM) 參照的範例:

    如要進一步瞭解 KVM 存取權,請參閱「資訊清單檔案」。

    runtime: node
    env:
      - name: DB_ENV
        value: production
      - name: DB_PASSWORD
        valueRef:
          name: hosted-kvm
          key: db-password

    GitHub 上的代管目標應用程式範例

    Apigee 提供 GitHub 上的 Proxy 範例,以及以 Node.js 編寫的託管目標應用程式。您可以複製這個存放區,然後按照 README 操作說明來部署任何 Proxy。

    必要條件

    如要部署範例,您的系統必須安裝兩項工具:

    • apigeetool -- 用於部署 Edge Proxy 的指令列工具。
    • get_token - 指令列工具,用於取得 apigeetool 所需的授權權杖。

    若要在本機測試範例,您也必須安裝 Node.js。

    取得範例存放區

    1. 透過瀏覽器前往 https://github.com/apigee/api-platform-samples
    2. 按一下「Clone or 下載」,然後使用您偏好的方法將存放區提取至您的本機系統。
    3. cd 新增至 <your install dir>/api-platform-samples/doc-samples/hosted-targets
    4. 下載存放區後,您可以輸出任何範例目錄,並按照 README 操作說明將範例 Proxy 部署至 Edge。部署指令如下所示。只要將指定的參數替換為 Apigee 帳戶中的參數:
    5. get_token && apigeetool deployproxy \
        -o YOUR_ORGANIZATION \
        -e YOUR_ENVIRONMENT \
        --json \
        --token "$(< ~/.sso-cli/valid_token.dat)"\
        --api NAME_OF_THE_PROXY \
        --directory .

    範例:執行範例應用程式

    複製範例存放區

    cd ~/myhome
    git clone https://github.com/apigee/api-platform-samples.git
    cd ~/myhome/api-platform-samples/doc-samples/hosted-targets
    cd node-hosted-hello

    在本機測試應用程式

    您必須安裝 Node.js 才能進行這項本機測試。

     PORT=8081 node apiproxy/resources/hosted/index.js
     curl http://localhost:8081
    

    輸出內容範例:

    {"date":"2018-03-12T21:45:22.161Z","msg":"Hello, World!"}

    部署 Proxy

     get_token && apigeetool deployproxy \
       -o myorg \
       -e test \
       --json \
       --token "$(< ~/.sso-cli/valid_token.dat)"\
       --api node-hosted-hello \
       --directory .

    測試部署作業

    部署作業可能需要幾分鐘才能完成。如果收到部署錯誤,請再次執行部署指令。

    curl http://myorg-test.apigee.net/node-hosted-hello

    輸出內容範例:

    {"date":"2018-03-23T18:59:18.668Z","msg":"Hello, World!"

    已知問題

    • 網路延遲 - 現在 Node.js 應用程式不再於 MP 的 JVM 中執行,現在在 MP 與部署作業之間設有網路躍點。當然,這確實需要付費,但從一開始的基準值來看,其品質已達合理的要求範圍
    • API 回應速度緩慢:執行應用程式的基礎架構可根據需求自動調整資源配置。如此一來,您的應用程式實際上可以將資源縮減至零個執行個體。如果是這種情況,由於基礎架構會啟動執行個體來處理要求,下一個 API 要求需要的時間會比一般 API 要求少一點。
    • 部署錯誤 - 如果您在部署代管目標 Proxy 時收到部署錯誤,請嘗試重新部署 Proxy。在某些情況下,部署作業可能會逾時,如果您重新部署,問題會自行解決。