從 IBM Cloud Container Registry 中的映像檔部署應用程式工作負載
請使用 Code Engine 部署您的應用程式,該服務採用 IBM Cloud® Container Registry 中的映像檔。 您可以從主控台或使用 CLI 來建立應用程式。
開始之前
-
您必須在 IBM Cloud® Container Registry中具有映像檔。 如需相關資訊,請參閱開始使用 Container Registry。 或者,您可以從 儲存庫來源 或從 本端來源 建置映像檔。
-
請確認您能否存取登錄檔。 請參閱 設定容器登錄的權限。
您是否想將專案設定為讓所有專案使用者都能在 Container Registry 中儲存和存取圖片,而無需手動建立註冊表機密? 如果具備足夠的許可權,您可以根據每個位置 (地區) 來配置這個預設登錄存取權。 如果您沒有足夠許可權來執行這些動作,您可以利用這個頁面來協助您瞭解必要的許可權。 請參閱 配置專案層面的設定。
使用主控台部署在 Container Registry 中參照映像檔的應用程式
使用 Code Engine 控制台,在 Container Registry 中部署一個使用映像檔的應用程式。
Code Engine 可以自動從帳戶中的 Container Registry 名稱空間取回映像檔。 若要從不同的 Container Registry 帳戶或從專用 Docker Hub 帳戶取回映像檔,請參閱 從專用登錄中的映像檔部署應用程式工作量。
- 開啟 Code Engine 主控台。
- 選擇「開始建立」。
- 請從可用專案清單中選取一個專案。 您也可以 建立新的。 您必須具有選取的專案才能部署應用程式。
- 選擇應用程式。
- 請輸入應用程式的名稱;例如:
helloapp。 請為您的應用程式指定一個在該專案內具有唯一性的名稱。 - 選取「使用現有容器映像」,然後按一下「設定映像」。
- 選取儲存器登錄位置,例如
IBM Registry Dallas。 - 針對 登錄密鑰選取
Code Engine managed secret。 因為此範例使用帳戶中 Container Registry 名稱空間中的映像檔,Code Engine 可以自動為您建立並管理登錄密鑰。 - 選取登錄中的現有名稱空間及映像檔名稱,以供 Code Engine 應用程式參照。 例如,選取
mynamespace並選取該名稱空間中的映像檔hello_repo。 - 選取 標籤的值; 例如
latest。 - 按一下完成。
- 修改應用程式的任何執行時期設定或環境變數。 如需這些選項的相關資訊,請參閱 應用程式端點可見性的選項 及 部署應用程式的選項。
- 按一下「建立」以建立該應用程式。
- 應用程式狀態變更為 備妥之後,您可以測試應用程式。 按一下 測試應用程式,然後在「測試應用程式」窗格中按一下 傳送要求。 若要在網頁中開啟此應用程式,請點擊「應用程式 URL」。
現在您已部署應用程式,您可以檢視應用程式修訂及任何執行中實例的相關資訊,以及配置詳細資料。
如果您想要將登錄存取權新增至不在您帳戶中的 Container Registry 實例,請參閱 將存取權新增至 Container Registry。
使用 CLI 在 Container Registry 中部署具有映像檔的應用程式
IBM Cloud® Container Registry 使用 CLI 並透過 ibmcloud ce app create 命令。 如需選項的完整清單,請參閱 ibmcloud ce app create 指令。
開始之前
- 設定 Code Engine CLI 環境。
- 建立並使用專案。
- 在您可以使用參照 Container Registry中映像檔的 Code Engine 應用程式之前,您必須先新增登錄的存取權,以便在部署應用程式時 Code Engine 可以取回映像檔。 如需存取映像檔登錄所需許可權的相關資訊,請參閱 設定映像檔登錄的權限。
-
若要新增對Container Registry的存取權限,請建立 IAM API 金鑰。 若要使用 CLI 建立IBM Cloud IAM API 金鑰,請執行
iam api-key-create指令。 例如,要建立一個名為cliapikey且描述為My CLI API key的 API 金鑰並將其儲存到名為key_file的檔案中,請執行以下命令:ibmcloud iam api-key-create cliapikey -d "My CLI API key" --file key_file如果您選擇不將金鑰儲存至檔案,則必須記錄建立金鑰時所顯示的 API 金鑰。 此後無法擷取它。
-
建立 API 金鑰之後,請新增 Code Engine的登錄存取權。 若要使用 CLI 新增對 Container Registry 的存取權,請使用
ibmcloud ce secret create --format registry指令來建立登錄密鑰。 例如,下列指令會建立名為myregistry之 Container Registry 實例的登錄存取權。 請注意,即使在範例指令中指定了--server和--username選項,當伺服器是us.icr.io時,--server選項的預設值是us.icr.io,且--username選項預設為iamapikey。ibmcloud ce secret create --format registry --name myregistry --server us.icr.io --username iamapikey --password APIKEY輸出範例
Creating registry secret 'myregistry'... OK -
在 Container Registry中建立應用程式並參照
hello_repo映像檔。 例如,使用ibmcloud ce app create指令來建立myhelloapp應用程式,以使用myregistry存取資訊來參照us.icr.io/mynamespace/hello_repo。ibmcloud ce app create --name myhelloapp --image us.icr.io/mynamespace/hello_repo --registry-secret myregistry此應用程式的映像檔名稱格式為
REGISTRY/NAMESPACE/REPOSITORY:TAG,其中REGISTRY和TAG是選用項目。 若未指定REGISTRY,預設值為docker.io。 若未指定TAG,預設值為latest。 -
在應用程式部署之後,您可以存取應用程式。 要取得您應用程式的 URL,請執行
ibmcloud ce app get --name myhelloapp --output url。 當您 curlmyhelloapp應用程式時,會傳回Hello World。curl https://myhelloapp.abcdabcdhye.us-south.codeengine.appdomain.cloud
下一步
-
應用程式部署完成後,請透過 URL 執行 存取您的應用程式 指令。
-
您可以建立 自訂網域對映,並將它指派給應用程式。 如需在多個地區中使用自訂網域名稱部署應用程式的相關資訊,請參閱 配置高可用性應用程式。
-
既然您的應用程式已部署,請考慮讓應用程式以事件驅動。 透過使用事件訂閱,您可以透過 定期排程 來觸發應用程式,或設定應用程式對事件 (例如 檔案上傳 或 Kafka 訊息) 做出反應。
部署應用程式之後,您可以使用下列 任何 方法來 更新已部署的應用程式 及其參照的程式碼,與您建立或先前更新應用程式的方式無關:
-
如果您具有容器映像檔,則根據 Open Container Initiative(OCI)標準,您只需要提供映像檔的參照,這會在您部署應用程式時指向容器登錄的位置。 您可以使用 公用登錄 或 專用登錄 中的映像檔來部署應用程式。
如果您已使用
app create指令建立應用程式,並指定--build-source選項以從本端或儲存庫來源建置容器映像檔,且您想要將應用程式變更為指向不同的容器映像檔,則必須先從應用程式移除建置的關聯。 例如,執行ibmcloud ce application update -n APP_NAME --build-clear。 從應用程式移除建置的關聯之後,您可以更新應用程式以參照不同的映像檔。 -
如果您是從位於 Git 儲存庫中的原始碼開始,則可以選擇讓 Code Engine 負責從您的來源建置映像檔,並使用 單一 作業來部署應用程式。 在此實務範例中,Code Engine 會將映像檔上傳至 IBM Cloud® Container Registry。 若要進一步瞭解,請參閱 從儲存庫原始碼部署應用程式。 如果您想要進一步控制映像檔的建置,則可以選擇在部署應用程式之前使用 Code Engine 建置映像檔。
-
如果您是從位於本端工作站上的原始碼開始,則可以選擇讓 Code Engine 負責從來源建置映像檔,並使用 單一 CLI 指令來部署應用程式。 在此實務範例中,Code Engine 會將映像檔上傳至 IBM Cloud® Container Registry。 若要進一步瞭解,請參閱 使用 CLI 從本端原始碼部署應用程式。 如果您想要進一步控制映像檔的建置,則可以選擇在部署應用程式之前使用 Code Engine 建置映像檔。
例如,您可以選擇讓 Code Engine 處理本端來源的建置,同時發展應用程式的來源開發。 然後,在映像檔成熟之後,您可以更新已部署的應用程式,以參照您想要的特定映像檔。 您可以視需要重複此程序。
當您部署更新的應用程式時,除非為映像檔指定標籤,否則會下載並部署所參照容器映像檔的最新版本。 如果為映像檔指定了標籤,則會將已標記的映像檔用於部署。
尋找更多程式碼範例? 請參閱 IBM Cloud Code Engine GitHub 儲存庫中的範例。