託管目標工作

查看 Apigee Edge 說明文件。
前往 Apigee X說明文件
資訊

取消部署託管目標 Proxy

當您取消部署包含 託管目標應用程式的 Edge Proxy 時, Hosted Targets 應用程式已取消部署,但基礎應用程式映像檔不會遭到刪除。如果發生以下情況: 重新部署 Proxy,即可重新部署 Hosted Targets 應用程式。

刪除託管目標 Proxy

刪除託管目標 Proxy 之後,基礎執行階段執行個體就會停止執行 某些變化不過,應用程式程式碼會保留下來。

存取記錄檔

記錄檔在偵錯和疑難排解時相當實用,您可以查看兩種類型的記錄檔 託管目標部署:

  • 版本記錄 - 顯示與部署及建構代管目標應用程式相關的輸出內容。
  • 執行階段記錄 - 顯示與執行中的 Hosted Targets 應用程式相關的輸出內容。執行階段記錄檔 範圍限定於環境,並顯示目前部署的 Proxy 修訂版本記錄資訊。

從 Edge UI 存取記錄

  1. 前往:apigee.com/edge
  2. 輸入您的登入憑證,然後按一下「Sign In」
  3. 依序選取「開發」>「開發」API Proxy
  4. 選取要查看記錄檔的 Proxy。
  5. 按一下「開發」分頁標籤。
  6. 如要查看建構記錄,請按一下「Build Logs」,瞭解如何調查及移除這項存取權。
  7. 如要查看執行階段記錄,請按一下「執行階段記錄」

使用 API 存取記錄檔

您也可以使用 Edge API 擷取代管目標的記錄。詳情請參閱 取得快取的 Node.js 記錄檔

使用私人 npm 存放區

本節說明如何在下列情況中,將 Node.js Proxy 部署至代管目標 請在以下位置使用私人 NPM 存放區: 您的開發環境。

使用私人存放區的須知事項

將 Node.js 應用程式部署至 Edge 時,系統會自動匯入專案的所有依附元件 可用來執行部署程序 基本上,託管目標會在部署完成後在您的程式碼上執行 npm install。 不過,如果您在開發環境中使用私人 NPM 存放區,則私人的 無法在 Cloud 中解析依附元件。於 在此情況下,解決方案就是在使用 --bundled-dependencies 時 部署公用程式 apigeetool。其他參考資訊 將 Node.js 從系統部署至 Edge。

apigeetool 上使用 --bundled-dependencies 旗標時, Node.js 應用程式將上傳至 Hosted Targets 和任何列出的本機/私人檔案 bundledDependencies 陣列中的 package.json 中的檔案會經過壓縮,並與軟體包一起上傳。

請注意,雖然不是常見的情況,但請注意,如果您在內部建立公開 NPM 存放區的鏡像,部署作業就會失敗 前提是部署套件包含指向目標的 .npmrcpackage-lock.json 檔案 就能切換至私人鏡子在本例中,請務必省略 .npmrcpackage-lock.json

使用私人 NPM 存放區部署

如要使用私人 NPM 存放區提供的模組,請按照下列步驟操作:

  1. 登入 npm:
    npm login
  2. 取得 npm 驗證權杖:
    1. 找出 .npmrc (應該位於 ~/.npmrc)。
    2. .npmrc 中,您會發現該行結尾的權杖如下所示:

      //registry.npmjs.org/:_authToken=****
    3. 或使用 npm token <list | create | revoke> 指令列出 建立或撤銷驗證權杖。請參閱 npm-token 說明文件
  3. 存取「鍵/值對應」設定頁面,詳情請見下文。

    Edge

    如何使用 Edge UI 存取鍵/值對應設定頁面:

    1. 登入 apigee.com/edge
    2. 依序選取「管理員」>環境 >鍵/值對應

    傳統版 Edge (Private Cloud)

    如何使用傳統版 Edge UI 存取鍵/值對應設定頁面:

    1. 登入「http://ms-ip:9000」(ms-ip 為以下應用程式) Management Server 節點的 IP 位址或 DNS 名稱。
    2. 選取「API」>環境設定 >鍵/值對應
  4. 按一下「+ 鍵/值對應」
  5. 在「New Key Value Map」對話方塊中輸入名稱,然後選取「Encrypted」
  6. 按一下 [新增]。
  7. 將您先前找到或建立的驗證權杖,在每個 KVM 中新增為新項目 每個 Cloud Storage 值區
  8. 在您的 app.yaml 檔案中,新增參照 KVM 和金鑰的項目 與 npm 驗證權杖相關聯如下所示:
  9. env:
    - name: NPM_TOKEN
     valueRef:
       name: npm_store
       key: private_token

    在此情況下:

    • 頂層 name 屬性與環境名稱相對應 這個變數即可。
    • valueRef 下方的 name 會對應至您的 KVM
    • key 屬性會對應至與您 npm 權杖相對應的鍵 已新增至 KVM。
  10. 在與 package.json 相同的目錄中建立 .npmrc 檔案。這個 檔案看起來會像這樣:
    //registry.npmjs.org/:_authToken=${NPM_TOKEN}
    敬上 如果您並未使用 registry.npmjs.org,則可設定範圍 .npmrc 檔案 新增一行程式碼,像這樣@myscope:registry=https://mycustomregistry.example.org 另請參閱 npmrc 說明文件
  11. 上傳或更新包含 .npmrc 檔案和 app.yaml 檔案的 Node.js Proxy。
  12. 確認新的或更新的 Proxy 已部署完畢,並與所需的私人存放區搭配運作 後續課程我們將逐一介紹 預先訓練的 API、AutoML 和自訂訓練
  13. 如果 Proxy 無法部署,請查看建構記錄檔,確認 Proxy 無法部署 私人 npm 模組。如果是:
    1. 確認「開發」分頁下方有 .npmrc
    2. 請確認權杖有效 (嘗試在本機安裝具有該權杖的模組) kvm)。
    3. 如果您使用的是自訂範圍,請務必加以設定。

指定套裝依附元件的 NPM 版本

根據預設,NPM v4 會用來在代管目標環境中安裝封裝依附元件。 不過,如果您想要使用其他 NPM 版本,可以在 NPM_VERSION 中指定。 環境變數您可以在應用程式的資訊清單檔案中設定這個變數。詳情請參閱資訊清單檔案元素

如果您使用封裝的依附元件,且未指定 NPM_VERSION,則代管目標 預設會使用 NPM v4。如未使用隨附依附元件,則內含的 NPM 版本 都會使用指定的 Node.js 執行階段。

隨附依附元件範例

如需關於代管目標封裝依附元件功能的範例,請參閱 如何使用自訂模組,透過代管函式建立 Node.js 應用程式

新增健康狀態檢查端點

您可以選擇為 Node.js 應用程式實作健康狀態檢查端點。Apigee 會在 Node.js 應用程式會開始檢查應用程式是否已在容器中啟動及執行。

根據預設,Apigee 預期的端點為 /health。如要變更預設設定 方法是在名為「端點」的環境變數中指定端點 HOSTED_TARGET_HEALTH_CHECK_PATH。您可以在應用程式資訊清單中設定這個變數 檔案。詳情請參閱資訊清單檔案元素

不需要實作健康狀態檢查端點。不過,若您實作健康狀態檢查 端點,請注意下列項目:

  • 如果您的應用程式在 Apigee 到達端點時結束,應用程式將不會如預期啟動。
  • 如果您的端點傳回 404 找不到 HTTP 狀態也沒關係。/healthHOSTED_TARGET_HEALTH_CHECK_PATH 僅用於檢查應用程式是否正在執行。 系統會忽略實際回應。
,瞭解如何調查及移除這項存取權。

變更 NPM 快取位置

較新版本的 Node.js 採用的 NPM 版本使用 /root/.npm 做為 NPM 快取。 這個位置顯示代管目標的問題,因為該目錄位置是唯讀狀態 由於 Hosted Target 執行階段使用 tmpfs 檔案系統,其中僅可寫入 /tmp。 如要解決這個問題,您可以在以下位置設定 npm_config_cache 環境變數: 應用程式的 app.yaml檔案 (資訊清單檔案) 移至 /tmp 中的目錄。例如:

  runtime: node
  application: my-express-app
  env:
    - name: npm_config_cache
      value: /tmp/.npm
    - name: NODE_ENV
      value: production
    - name: LOG_LEVEL
      value: 3
  

在不使用 NPM 的情況下執行應用程式

根據預設,代管目標會使用 npm start 執行您的代管目標應用程式。但 我們在前一項工作中討論了使用 NPM 的問題,因為新版本會嘗試使用 /root/.npm 用於 NPM 快取,無法寫入,因而會導致代管目標發生 無法啟動上一個工作可以緩解這個問題,而另一個選項則是 不用 NPM 也能執行應用程式方法是使用 command 和 應用程式中的 args 個值 app.yaml檔案 (資訊清單檔案) 以便直接使用 node index.js 執行代管目標。例如:

  runtime: node
  application: my-express-app
  command: node
  args:
    - index.js
  env:
    - name: NODE_ENV
      value: production
    - name: LOG_LEVEL
      value: 3
  
敬上 當然,您可以隨意使用任何指令,而 node index.js 只是 範例。