託管目標參考資料

您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件
info

環境變數限制

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

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

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

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

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

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

系統資源分配

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

  • 256 MB 記憶體
  • 1.2 GHz CPU

資源調度

本節說明 Hosted Targets 應用程式的調度方式,取決於您擁有的 Edge 帳戶類型。
  • Apigee Edge 試用版每個 Proxy 只能有一個 Hosted Targets 執行個體。
  • 付費 Apigee Edge 帳戶會根據每個 Proxy 的要求比率、回應延遲和其他應用程式指標,自動調整資源配置。
  • 部署至付費和試用版 Apigee Edge 的 Hosted Targets 應用程式,會在閒置期間縮減至零。 在這種情況下,你可能會發現回覆速度在短時間內變慢。另請參閱 已知問題

資訊清單檔案

為收集建構及部署代管應用程式的執行階段資訊,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)namekey。 例如:
        runtime: node
        env:
          - name: DB_ENV
            value: production
          - name: DB_PASSWORD
            valueRef:
              name: hosted-kvm
              key: db-password

    資訊清單檔案範例

    本節包含 Node.js 應用程式的資訊清單檔案範例。部署 Hosted Targets 應用程式時,必須使用資訊清單檔案,且該檔案必須位於 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 編寫的 Hosted Targets 應用程式。您可以複製這個存放區,然後按照 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。在某些情況下,部署作業可能會逾時,如果重新部署,問題就會自行解決。