將 Cloud Foundry 應用程式移轉至 Code Engine 常見問題 (FAQ)
有關將 Cloud Foundry 應用程式移轉至 Code Engine的常見問題解答。
我可以使用 Code Engine 自訂 URL 嗎?
是的! 您可以透過從 Code Engine 控制台建立 自訂網域映射, 將您自己的自訂 URL 對應到 Code Engine 應用程式。 您也可以透過網際網路服務供應商指定自訂 URL,例如 IBM Cloud Internet Services. 如需透過 IBM Cloud Internet Services 部署具有自訂網域的應用程式的詳細資訊,請參閱 設定高可用性應用程式。 有關透過 Cloud Internet Services (CIS) 部署自訂網域的應用程式的詳細資訊,請參閱 取得自訂網域及其 TLS 證書和私密金鑰。
我的應用程式包含特定路徑,我可以使用相同的路徑嗎?
只要您控制,即可使用相同的自訂路徑或網域。 如果路徑來自另一個來源,例如 IBM提供的路徑 (例如 mybluemix.net),則您必須使用 Code Engine 提供的網域,否則將新的自訂網域對映至您的應用程式。
我可以停止應用程式嗎?
您無法直接停止應用程式,但您可以透過將其可見性設為 project 並容許其調整為 0,來阻止應用程式接收資料流量。 如需相關資訊,請參閱 如何停止應用程式接收資料流量?
為何我有這麼多應用程式實例?
當您更新應用程式時,Code Engine 會自動建立新的修訂。 當修訂可用時,資料流量會遞送至新實例。 當修訂擴增並將資料流量傳送至它時,原始應用程式實例會繼續處理資料流量。 當擴增修訂並將所有資料流量遞送至它時,會縮減原始應用程式。 您的應用程式也會根據資料流量需要自動擴增及縮減。 請稍後再回來檢查,以確定您的應用程式正在執行正確的實例數。 如需相關資訊,請參閱 配置應用程式調整大小。
為何我的應用程式回應緩慢?
依預設,您的應用程式會調整為零,因此在重新調整時回應可能較慢。 您可以透過在主控台或 CLI 中更新應用程式,並將最小比例設為 1,來變更此行為。
例如,若要從 CLI 將應用程式 myapp 的最小比例設為 1,請執行下列指令:
ibmcloud ce app update --name myapp --min-scale 1
在應用程式更新之後,單一實例一律在執行中。 請注意,費用可能適用。 如需相關資訊,請參閱 定價 Code Engine。
我可以將要求遞送至特定的應用程式實例嗎?
否,目前不支援此功能。 您可以使用 Knative 資料流量分割來近似此功能。 如需搭配使用 Knative 與 Code Engine的相關資訊,請參閱 Using Knative with Code Engine。
我將廣域負載平衡器與 Cloud Foundry 應用程式搭配使用。 我可以將它移轉至 Code Engine嗎?
是,如果您可以存取憑證鏈及對應的私密金鑰,則可以更新廣域負載平衡器以指向 Code Engine 應用程式。 下列步驟假設您使用 Cloud Internet Services (CIS); 不過,您可以針對自己的廣域負載平衡器調整這些步驟。
這些步驟使用主控台。
-
建立應用程式的網域對映。 當您建立網域對映時,請提供私密金鑰及網域的完整憑證鏈。 如需相關資訊,請參閱 配置應用程式的自訂網域對映。 等到所有專案中的網域對映都顯示
Ready狀態。 -
開啟每一個網域對映的詳細資料,並記錄
CNAME值,例如custom.<your-random-id>.us-south.codeengine.appdomain.cloud或custom.<your-other-random-id>.us-east.codeengine.appdomain.cloud。 -
導覽至每一個應用程式的詳細資料頁面,選取 網域對映 標籤,然後在系統網域對映區段中選取
No external system domain mapping。 此步驟可確保只有從這個專案外部呼叫時,才能透過自訂網域來存取您的應用程式。 -
在 Cloud Internet Services (CIS) 實例中,導覽至 可靠性。> 廣域負載平衡器> 原點儲存區,並透過將原點位址變更為您先前記錄的
CNAME來編輯現有原點儲存區。
您的廣域負載平衡器現在正在指向 Code Engine 應用程式。
我的應用程式是否需要遵循任何規格?
您的應用程式必須遵循 12 因子應用程式方法。
Code Engine提供哪些類型的工作量?
Code Engine 支援兩種類型的工作量: 應用程式和批次工作。
應用程式(或稱 app)會執行您的程式碼,為 HTTP 請求提供服務。 除了傳統的 HTTP 請求外,IBM Cloud® Code Engine 也支援使用 WebSockets 作為通訊協定的應用程式。 應用程式的執行中實例數會根據送入的要求及您的配置設定自動擴增或縮減 (至零)。 應用程式包含一個以上修訂。 修訂代表應用程式配置內容的不可變版本。 應用程式配置內容的每一項更新都會建立應用程式的新修訂。
工作會平行執行一個以上執行碼實例。 與處理 HTTP 請求的應用程式不同,工作的設計是執行一次後就退出。 建立工作時,您可以指定每次執行工作時使用的工作量配置資訊。
決定您想要的工作量類型
大部分 Cloud Foundry 應用程式可以移轉至 Code Engine。 但是,如果您的 Cloud Foundry 應用程式不等待傳入的 HTTP 請求,那麼工作可能是更好的選擇。 如需更多討論和範例,請參閱 規劃 Code Engine。
我使用資訊清單檔。 Code Engine是否有類似的選項可用?
如果您使用 Cloud Foundry 應用程式的資訊清單檔,請將資訊清單屬性對映至對應的 Code Engine 特性或 CLI 選項。
| 資訊清單屬性 | ibmcloud ce app create 或 app update 指令上的 Code Engine 對等項目 |
|---|---|
command |
--command 選項 |
disk_quota |
由 Code Engine隱含設定。 |
docker |
在 Code Engine中不需要。 |
health-check-http-endpoint |
在 Code Engine中不需要。 依預設,會使用 TCP 探測來瞭解應用程式何時健全且備妥。 |
health-check-invocation-timeout |
在 Code Engine中不需要。 |
instances |
--min-scale 和 --max-scale 選項 |
memory |
--memory 選項 |
metadata |
目前不支援。 |
no-route |
使用 --cluster-local 選項時,應用程式仍可從專案內的其他工作負載存取,但不包括與應用程式相關、面向網際網路的可存取 URL。 |
path |
目前不適用。 |
processes |
在 Code Engine中不需要。 應用程式可以在執行時期建立其他處理程序。 |
random-route |
在 Code Engine中不需要。 每個專案都有唯一的子網域,由於應用程式名稱是 URL 的一部分,因此 URL 保證是唯一的。 |
routes |
目前不支援自訂路徑,但您可以使用 IBM Cloud Internet Service(CIS)或 Cloudflare,以自訂網域來前端您的應用程式。 |
sidecars |
目前不支援。 |
stack |
隱含地由 Code Engine管理。 |
timeout |
在 Code Engine中不需要。 |
| 環境變數 | -env 選項 |
| 服務 | 請參閱 ibmcloud ce app bind 指令。 |
Code Engine 支援 Cloud Foundry中無法使用的許多選項,例如如何管理自動調整。 請參閱 在 Code Engine 及 配置應用程式調整。
我知道如何使用 Cloud Foundry部署應用程式。 我需要知道什麼才能在 Code Engine中部署應用程式?
如果您知道如何使用 Cloud Foundry部署應用程式,請在 Code Engine中尋找部署應用程式所需的資訊。
推送程式碼
使用 Code Engine,您可以建置源自 Git 儲存庫或本端系統 (僅限 CLI-only) 的程式碼。 此外,與 Cloud Foundry (cf push) 一樣,您可以使用 CLI 及 Code Engine 主控台,以單一步驟來建置及部署應用程式。 如需相關資訊,請參閱 如何以 Code Engine 應用程式元件身分執行我的程式碼?。
部署環境定義
Cloud Foundry 需要 Org 及 Space,才能將程式碼推送至應用程式。 依預設,所有 Cloud Foundry 使用者都會收到為他們建立的 Org 及 Space。 不過,如果要新增目標,您必須設定類似下列範例的 Org 和 Space 目標。
ibmcloud cf create-org MyOrg
ibmcloud target -o <ORGNAME>
ibmcloud target -s dev
然後,當您使用 Cloud Foundry部署應用程式時,會將 Org 及 Space 設為部署的目標。
Code Engine 使用 IBM Cloud 資源群組及 Code Engine 專案的概念。
ibmcloud target -g <RESOURCE-GROUP>
ibmcloud ce project create --name <PROJECTNAME>
這些指令不僅會建立專案,還會將它「設定目標」。 所有後續的 Code Engine 指令都會在此專案的環境定義中執行,直到使用 project select 指令以不同的專案為目標為止。 如需相關資訊,請參閱 管理專案。
日誌
Code Engine 提供應用程式、工作及建置的日誌,以協助您判定部署未適當地執行時發生的情況。 您可以執行類似下列範例的指令來尋找日誌。
ibmcloud ce app logs -n <APPNAME>
ibmcloud ce jobrun logs -n <JOBRUN-NAME>
ibmcloud ce buildrun logs -n <BUILDRUN_NAME>
您也可以使用IBM Cloud Logs服務,該服務可用於更長期地保留日誌訊息。 如需相關資訊,請參閱檢視日誌。
建立服務
在 Cloud Foundry 和 Code Engine中建立受管理服務的實例類似。
若要建立新的服務以與 Cloud Foundry 應用程式搭配使用,請使用下列指令。
ibmcloud cf create-service cloudantNoSQLDB lite myNameCloudant
若要建立與 Code Engine 應用程式搭配使用的新服務,
ibmcloud resource service-instance-create myNameCOS cloud-object-storage lite global
服務連結
建立應用程式之後,您可以將應用程式「連結」至服務。
使用 Cloud Foundry,執行下列指令。
ibmcloud cf bind-service appName instanceName
使用 Code Engine,
ibmcloud ce app bind --name appName --service-instance instanceName
使用環境變數將服務實例認證 (座標) 注入應用程式 (或工作)。 Code Engine 中 VCAP_SERVICES 的 Cloud Foundry 對等項目是 CE_SERVICES。 如需相關資訊,請參閱 整合 IBM Cloud 服務與服務連結。
更新應用程式或工作
建立應用程式或工作之後,您可以使用 update 指令來更新工作量的內容。 例如,若要在 Code Engine中更新應用程式,
ibmcloud ce app update --name <APPNAME> ...
您可以更新建立應用程式或工作時可用的任何內容。 如需相關資訊,請參閱下列主題。
執行時期支援
Code Engine 支援 Cloud Foundry 支援的許多執行時期。 如需 Code Engine支援的執行時期清單,請參閱 Cloud Native 建置套件。 如果您想要使用不受支援的運行環境 (例如,Swift 或 Liberty),您可以自行將應用程式包裝為容器映像檔,並 在 Code Engine中部署該映像檔,而不直接從 Code Engine建置映像檔。
下一步
- 剛開始移轉嗎? 請參閱 入門。
- 比較 Cloud Foundry 術語與 Code Engine。
- 使用本端建置指導教學來試用 Code Engine。
- 您的應用程式是否使用服務連結? 請參閱 移轉服務連結。
- 瞭解 調整大小及資料流量管理。
- 尋找 Cloud Foundry 指令的 Code Engine 對等項目。
- 將 Cloud Foundry 應用程式移轉至 Code Engine 常見問題 (FAQ) (現行頁面)
其他資訊
- 瞭解 Code Engine 定價。
- 請嘗試其他 Code Engine 指導教學。
- 探索其他 Code Engine 主題。