從 IBM Cloud Container Registry 中的映像檔部署應用程式工作負載

請使用 Code Engine 部署您的應用程式,該服務採用 IBM Cloud® Container Registry 中的映像檔。 您可以從主控台或使用 CLI 來建立應用程式。

開始之前

您是否想將專案設定為讓所有專案使用者都能在 Container Registry 中儲存和存取圖片,而無需手動建立註冊表機密? 如果具備足夠的許可權,您可以根據每個位置 (地區) 來配置這個預設登錄存取權。 如果您沒有足夠許可權來執行這些動作,您可以利用這個頁面來協助您瞭解必要的許可權。 請參閱 配置專案層面的設定

使用主控台部署在 Container Registry 中參照映像檔的應用程式

使用 Code Engine 控制台,在 Container Registry 中部署一個使用映像檔的應用程式。

Code Engine 可以自動從帳戶中的 Container Registry 名稱空間取回映像檔。 若要從不同的 Container Registry 帳戶或從專用 Docker Hub 帳戶取回映像檔,請參閱 從專用登錄中的映像檔部署應用程式工作量

  1. 開啟 Code Engine 主控台。
  2. 選擇「開始建立」。
  3. 請從可用專案清單中選取一個專案。 您也可以 建立新的。 您必須具有選取的專案才能部署應用程式。
  4. 選擇應用程式
  5. 請輸入應用程式的名稱;例如:helloapp。 請為您的應用程式指定一個在該專案內具有唯一性的名稱。
  6. 選取「使用現有容器映像」,然後按一下「設定映像」。
  7. 選取儲存器登錄位置,例如 IBM Registry Dallas
  8. 針對 登錄密鑰選取 Code Engine managed secret。 因為此範例使用帳戶中 Container Registry 名稱空間中的映像檔,Code Engine 可以自動為您建立並管理登錄密鑰。
  9. 選取登錄中的現有名稱空間及映像檔名稱,以供 Code Engine 應用程式參照。 例如,選取 mynamespace 並選取該名稱空間中的映像檔 hello_repo
  10. 選取 標籤的值; 例如 latest
  11. 按一下完成
  12. 修改應用程式的任何執行時期設定或環境變數。 如需這些選項的相關資訊,請參閱 應用程式端點可見性的選項部署應用程式的選項
  13. 按一下「建立」以建立該應用程式。
  14. 應用程式狀態變更為 備妥之後,您可以測試應用程式。 按一下 測試應用程式,然後在「測試應用程式」窗格中按一下 傳送要求。 若要在網頁中開啟此應用程式,請點擊「應用程式 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 可以取回映像檔。 如需存取映像檔登錄所需許可權的相關資訊,請參閱 設定映像檔登錄的權限
  1. 若要新增對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 金鑰。 此後無法擷取它。

  2. 建立 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
    
  3. 在 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,其中 REGISTRYTAG 是選用項目。 若未指定 REGISTRY,預設值為 docker.io。 若未指定 TAG,預設值為 latest

  4. 在應用程式部署之後,您可以存取應用程式。 要取得您應用程式的 URL,請執行 ibmcloud ce app get --name myhelloapp --output url。 當您 curl myhelloapp 應用程式時,會傳回 Hello World

    curl https://myhelloapp.abcdabcdhye.us-south.codeengine.appdomain.cloud
    

下一步

部署應用程式之後,您可以使用下列 任何 方法來 更新已部署的應用程式 及其參照的程式碼,與您建立或先前更新應用程式的方式無關:

  • 如果您具有容器映像檔,則根據 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 儲存庫中的範例