移轉服務連結
讓我們採用遵循 12 因子應用程式原則、簡化並更新程式碼,以及同時建立 Cloud Foundry 和 Code Engine 版本的一般雲端原生應用程式。 這些版本作為討論移轉步驟及部署層面的範例。
範例應用程式是以 Node.js (JavaScript) 撰寫並使用 Express Web 架構的一般 Web 應用程式。 IBM Cloudant NoSQL 資料庫充當支持服務,以儲存應用程式所顯示的資料。 與一般雲端原生 12 因子應用程式一樣,範例應用程式是以離散且可重複使用的元件為基礎,這些元件充當微服務以組成整體應用程式。 已部署的 Node.js 程式和資料庫都可以獨立調整、改良或甚至取代。 元件會一起運作,因為它們的配置方式,以及使用明確定義的 API。
IBM Cloudant 資料庫可以配置為使用部署至 Cloud Foundry 及 Code Engine的應用程式版本作為附加資源。 為了簡單起見,會保留這兩個元件的解決方案。
建立服務連結
此範例應用程式需要 Cloudant 資料庫來儲存內容。 您可以透過手動注入環境變數來配置對 Cloudant 的存取權,但一般處理程序是透過 服務連結。 會明確指出應用程式與其支持服務之間的關係,因此會建立認證並自動注入執行時期環境中。 Cloud Foundry 提供認證作為 VCAP_SERVICES 物件的一部分。Code
Engine 會透過其 CE_SERVICES 環境變數來模擬此物件。
Cloud Foundry 及 Code Engine 應用程式都會連接至資料庫服務。 部署至 Code Engine 的程式碼可以視為 Cloud Foundry 應用程式的不同新版本。 它會繼續連結至相同的資料庫服務,但透過其他方法。
若要將 Code Engine 版本的應用程式連結至服務,
- 存取 Cloudant 資料庫實例。 如果您沒有,請建立一個。
- 使用敘述性名稱為 Cloudant 實例建立服務認證 (IAM 服務金鑰)。 指定應用程式的 IAM 角色 (
Manager、Writer或Reader)。 挑選具有應用程式所需最低專用權層次的角色。 - 使用現有認證將服務連結至應用程式。當您連結服務時,Code Engine 可以為您建立認證。 不過,透過建立您自己的認證,您可以獨立追蹤甚至變更 Code Engine的專用權。
對於此範例應用程式,並以 Cloudant 作為資料庫服務,請執行下列指令,以建立具有 Manager 角色的服務金鑰 Cloudant-CF2CE-Manager,然後使用它來連結服務。
ibmcloud resource service-key-create Cloudant-CF2CE-Manager Manager --instance-name Cloudant-CF2CE
ibmcloud ce app bind --name cf2ce-app --service-instance Cloudant-CF2CE --service-credential Cloudant-CF2CE-Manager
如果 Cloud Foundry 應用程式透過 使用者提供的服務連接至服務,請針對 Code Engine建立使用 secret 或 configmap 的應用程式。 透過使用密鑰及 configmap,您可以將服務認證注入執行時期環境,並在 Code Engine 專案內以具名物件管理它們。
移轉程式碼
通常,程式碼移轉是直接進行。 例如,您的程式碼必須從 CE_SERVICES for Code Engine讀取,而不是從稱為 VCAP_SERVICES for Cloud Foundry的環境變數讀取。 此外,請注意如何命名服務的微妙差異,因為服務是透過 Cloud Foundry 的分配管理系統及 Code Engine的 IAM 型資源管理所提供的方法。
視程式設計語言而定,您的程式碼可能使用程式碼庫或模組來存取 Cloud Foundry 運行環境、本端注入配置 ("dotenv") 等等。 必須調整這些區段。
在這兩個應用程式範例中,比較 server.js 檔中的程式碼。
暫置應用程式移轉
如果您將應用程式從 Cloud Foundry 移至 Code Engine時無法關閉,請考慮使用中間步驟來執行程式碼移轉。
- 1cloudfoundry_base: Cloud Foundry 程式碼庫作為起始來源。 此應用程式僅在 Cloud Foundry中執行。
- 2cf_ce_intermediate_hybrid: 新增程式碼以同時支援 Code Engine 部署。 此應用程式同時在 Cloud Foundry 及 Code Engine中執行。
- 3codeengine_target: 最後,在實際專案移轉完成之後,移至 Code Engine-only 程式碼庫。 此應用程式僅在 Code Engine中執行。
此方法是有益的,因為您可以在移轉處理程序期間繼續維護或加強程式碼庫,與部署環境無關。
建置程式碼並執行應用程式
當您完成設定服務連結、移轉程式碼及準備暫置移轉時,現在是建置程式碼的時候。 遵循 第一個移轉指導教學 中的步驟,從本端來源建置程式碼。 如果您想要使用主控台來建置程式碼,您的程式碼必須位於 Git-hub 中。 如需相關資訊,請參閱 從原始碼部署應用程式。
下一步
- 剛開始移轉嗎? 請參閱 入門。
- 比較 Cloud Foundry 術語與 Code Engine。
- 使用本端建置指導教學來試用 Code Engine。
- 移轉服務連結 (現行頁面)
- 瞭解 調整大小及資料流量管理。
- 尋找 Cloud Foundry 指令的 Code Engine 對等項目。
- 還有其他問題嗎? 嘗試將 移轉 Cloud Foundry 應用程式至 Code Engine 常見問題。
其他資訊
- 瞭解 Code Engine 定價。
- 請嘗試其他 Code Engine 指導教學。
- 探索其他 Code Engine 主題。