託管目標參考資料

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

環境變數限制

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

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

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

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

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

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

系統資源分配

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

  • 256 MB 記憶體
  • 1.2 GHz CPU

資源調度

本節說明代管目標應用程式如何根據您擁有的 Edge 帳戶類型調度資源。
  • Apigee Edge 試用版的 Proxy 最多只能有一個 Hosted Targets 例項。
  • 付費 Apigee Edge 帳戶會根據要求頻率、回應延遲時間和每個 Proxy 的其他應用程式指標,自動調整資源配置。
  • 如果應用程式部署至 Apigee Edge 付費和試用版本,託管目標應用程式會在閒置期間將資源調度降至零。因此,你可能會在短時間內發現回應速度較慢。另請參閱已知問題

資訊清單檔案

為了收集用來建構及部署託管應用程式的執行階段資訊,Edge 會在 resources/managed 目錄中尋找名為 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 - (選用) 在代管目標執行階段環境中設定的環境變數 (名稱/值組合) 陣列。這些變數可供已部署的 Hosted Targets 應用程式使用。
    • 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 download」(複製或下載),使用您偏好的方法將存放區提取至本機系統
    3. cd<your install dir>/api-platform-samples/doc-samples/hosted-targets
    4. 存放區下載完畢後,您就能使用 cd 程式碼至任何範例目錄,並按照 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。在某些情況下,部署作業可能會逾時,如果您重新部署,問題本身就會解決。