移轉服務連結

讓我們採用遵循 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 版本的應用程式連結至服務,

  1. 存取 Cloudant 資料庫實例。 如果您沒有,請建立一個。
  2. 使用敘述性名稱為 Cloudant 實例建立服務認證 (IAM 服務金鑰)。 指定應用程式的 IAM 角色 (ManagerWriterReader)。 挑選具有應用程式所需最低專用權層次的角色。
  3. 使用現有認證將服務連結至應用程式。當您連結服務時,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建立使用 secretconfigmap 的應用程式。 透過使用密鑰及 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 中。 如需相關資訊,請參閱 從原始碼部署應用程式

下一步

  1. 剛開始移轉嗎? 請參閱 入門
  2. 比較 Cloud Foundry 術語與 Code Engine
  3. 使用本端建置指導教學來試用 Code Engine
  4. 移轉服務連結 (現行頁面)
  5. 瞭解 調整大小及資料流量管理
  6. 尋找 Cloud Foundry 指令的 Code Engine 對等項目
  7. 還有其他問題嗎? 嘗試將 移轉 Cloud Foundry 應用程式至 Code Engine 常見問題

其他資訊