更新應用程式

應用程式包含一個以上 修訂。 修訂代表應用程式配置內容的不可變版本。 應用程式配置內容的每一項更新都會建立應用程式的新修訂。

當您修改應用程式並使用變更部署應用程式,或 重新部署應用程式而不變更其配置設定 時,這些動作會部署應用程式的新修訂。 當您部署 (或重新部署) 應用程式修訂時,Code Engine 會使用任何已變更的配置設定,並取得應用程式所參照的任何已更新容器映像檔、密鑰或 configmap。

如需部署應用程式的相關資訊,例如指定 有效 vCPU 及記憶體組合、定義指令及引數、環境變數、密碼或 configmap,請參閱 用於部署應用程式的選項

Code Engine 具有專案中應用程式及應用程式修訂數目的配額。 如需專案限制的相關資訊,請參閱 專案配額。Code Engine 除了作用中應用程式修訂之外,僅保留應用程式的最新非作用中修訂。 會刪除較舊的修訂。

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

  • 如果您具有容器映像檔,則根據 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 處理本端來源的建置,同時發展應用程式的來源開發。 然後,在映像檔成熟之後,您可以更新已部署的應用程式,以參照您想要的特定映像檔。 您可以視需要重複此程序。

當您部署更新的應用程式時,除非為映像檔指定標籤,否則會下載並部署所參照容器映像檔的最新版本。 如果為映像檔指定了標籤,則會將已標記的映像檔用於部署。

如果我想要在不變更配置設定的情況下重新部署我的應用程式,該怎麼辦?

您可以透過變更配置值並部署應用程式,一律使用配置變更來部署應用程式。

不過,您可能想要重新部署應用程式修訂,而不變更應用程式配置設定。 可能已變更您所參照的容器映像檔,且您想要應用程式修訂使用已更新的容器映像檔。 或者,您可能想要應用程式參照密鑰或 configmap,其中包含已更新的內容值。

對於這些實務範例,從主控台,您可以從應用程式頁面的 配置 標籤中按一下 重新部署,而無需變更應用程式配置。 使用 CLI,可使用 ibmcloud ce app update 指令。

從主控台更新應用程式

更新您在 從主控台部署公用登錄中的應用程式 中建立的應用程式,以新增環境變數。

  1. 導覽到您的申請頁面。 導覽至應用程式頁面的一種方式是
    • 找出 Code Engine 專案頁面
    • 按一下專案名稱以開啟「概觀」頁面。
    • 按一下應用程式,開啟應用程式清單。 按一下應用程式的名稱,以開啟其應用程式頁面。
  2. 從應用程式頁面中,您可以檢視應用程式的執行中實例及其修訂、配置詳細資料及應用程式端點設定的相關資訊。 按一下您要使用的應用程式修訂名稱,以開啟該修訂的配置摘要。 或者,您可以按一下 配置 標籤,以開啟最新應用程式修訂的配置摘要。
  3. 配置 標籤中,按一下 環境變數 標籤。
  4. 按一下新增環境變數。 將此環境變數定義為文字值。 輸入 TARGET 代表名稱,輸入 Stranger 代表值。 按一下新增
  5. 按一下 部署,以儲存變更並部署應用程式修訂。
  6. 應用程式狀態變更為 備妥之後,您可以測試應用程式修訂。 按一下 測試應用程式,然後在「測試應用程式」窗格中按一下 傳送要求。 若要在網頁中開啟應用程式,請按一下 應用程式 URL。 對於此應用程式,會顯示 Hello Stranger

在此範例中,您已更新應用程式的環境變數。 您也可以更新應用程式的其他配置設定,包括從 程式碼 標籤參照 不同的映像檔不同的映像檔建置。 從 資源及調整大小 標籤中,您可以更新應用程式的 記憶體應用程式調整大小 設定。 從 環境變數 標籤中,您可以為應用程式新增或更新 環境變數。 從 映像檔啟動選項 標籤中,您可以新增或更新 指令及引數,以置換容器映像檔內的設定,或 使用存活性及就緒探測

從主控台更新應用程式以使用僅限專案的端點

依預設,當您部署應用程式時,應用程式會進行部署,以便它可以從公用網際網路、專用網路或專案內的元件接收要求。 讓我們變更此應用程式的可見性,讓它僅由在相同 Code Engine 環境中執行的其他 Code Engine 資源存取。 使用 網域對映 標籤來變更應用程式的可見性。

  1. 導覽到您的申請頁面。 導覽至應用程式頁面的一種方式是

    • 找出 Code Engine 專案頁面
    • 按一下專案名稱以開啟「概觀」頁面。
    • 按一下應用程式,開啟應用程式清單。 按一下應用程式的名稱,以開啟其應用程式頁面。
  2. 從應用程式頁面中,您可以檢視應用程式的執行中實例及其修訂、配置詳細資料及應用程式端點設定的相關資訊。 按一下 網域對映 標籤,以開啟應用程式的端點可見性設定。

  3. 網域對映 標籤中,注意應用程式可用的 URL。 選取 Public 時,您可以檢視應用程式的公用及內部系統網域對映 URL。 當選取 無外部系統網域對映 時,無法再從公用網際網路存取此應用程式,且只能從此專案內的元件進行網路存取。

    當您變更應用程式的可見性時,變更會立即生效。 請務必考量變更對作用中使用者或整合的影響,以及任何安全含意。 您可以視需要變更可見性設定。

從主控台更新應用程式以使用專用端點

依預設,當您部署應用程式時,應用程式會進行部署,以便它可以從公用網際網路、專用網路或專案內的元件接收要求。 讓我們變更此應用程式的可見性,讓它僅由使用「虛擬專用端點」在相同專案中及從專用網路中執行的其他 Code Engine 資源存取。 使用 網域對映 標籤來變更應用程式的可見性。

  1. 導覽到您的申請頁面。 導覽至應用程式頁面的一種方式是

    • 找出 Code Engine 專案頁面
    • 按一下專案名稱以開啟「概觀」頁面。
    • 按一下應用程式,開啟應用程式清單。 按一下應用程式的名稱,以開啟其應用程式頁面。
  2. 從應用程式頁面中,您可以檢視應用程式的執行中實例及其修訂、配置詳細資料及應用程式端點設定的相關資訊。 按一下 網域對映 標籤,以開啟應用程式的端點可見性設定。

  3. 網域對映 標籤中,注意應用程式可用的 URL。 當選取 Private 時,無法再從公用網際網路存取此應用程式,且只能從此專案內的元件 (cluster-local) 及專用網路存取網路。

    按一下 專用,以變更應用程式的端點可見性。 端點定義的可用 URL 會針對專用及僅限專案的 URL 顯示。

  4. 若要使用「虛擬專用端點 (VPE)」安全地存取應用程式,請遵循 使用 VPE 來存取應用程式 的指示來設定 VPE 以存取您的應用程式。

如果您為 visibility = private 設定應用程式,則只能透過 Virtual Private Cloud(VPC)內的虛擬專用端點 來測試應用程式。

透過變更應用程式的可見性,變更會立即生效。 請務必考量變更對作用中使用者或整合的影響,以及任何安全含意。 您可以視需要變更可見性設定。

使用 CLI 更新您的應用程式

若要使用 CLI 更新應用程式,請使用 app update 指令。 此指令需要您要更新之應用程式的名稱,而且也容許其他選用引數。 如需選項的完整清單,請參閱 ibmcloud ce app update 指令。

更新您在 使用 CLI 部署應用程式 中建立的應用程式,以新增環境變數。

範例 icr.io/codeengine/hello 映像檔會讀取環境變數 TARGET,並列印 Hello ${TARGET}。 如果此環境變數為空,Hello World。 下列範例會更新應用程式,以將 TARGET 環境變數的值修改為 Stranger。 如需用於此範例之程式碼的相關資訊,請參閱 hello

  1. 執行 application update 指令。 例如,

    ibmcloud ce application update -n myapp --env TARGET=Stranger
    

    輸出範例

    Updating application 'myapp' to latest revision.
    [...]
    Run 'ibmcloud ce application get -n myapp' to check the application status.
    OK
    
    https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud    
    
  2. 執行 application get 指令,以顯示應用程式的狀態,包括最新修訂資訊。

    ibmcloud ce application get --name myapp  
    

    輸出範例

    [...]
    Name:          myapp
    [...]
    URL:           https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud
    Cluster Local URL:  http://myapp.4svg40kna19.svc.cluster.local
    Console URL:   https://cloud.ibm.com/codeengine/project/us-south/01234567-abcd-abcd-abcd-abcdabcd1111/application/myapp/configuration
    
    Environment Variables:
    Type     Name    Value
    Literal  TARGET  Stranger
    Image:                  icr.io/codeengine/hello
    Resource Allocation:
    CPU:                1
    Ephemeral Storage:  400M
    Memory:             4G
    
    Revisions:
    myapp-hc3u8-2:
        Age:                82s
        Traffic:            100%
        Image:              icr.io/codeengine/hello (pinned to f0dc03)
        Running Instances:  1
    
    Runtime:
    Concurrency:    100
    Maximum Scale:  10
    Minimum Scale:  0
    Timeout:        300
    
    Conditions:
    Type                 OK    Age  Reason
    ConfigurationsReady  true  75s
    Ready                true  62s
    RoutesReady          true  62s
    
    Events:
    Type    Reason   Age    Source              Messages
    Normal  Created  2m11s  service-controller  Created Configuration "myapp"
    Normal  Created  2m11s  service-controller  Created Route "myapp"
    
    Instances:
    Name                                       Revision       Running  Status       Restarts  Age
    myapp-hc3u8-1-deployment-65cf8cd4f5-jx8b8  myapp-hc3u8-1  1/2      Terminating  0         2m10s
    myapp-hc3u8-2-deployment-7f98b679d5-2hskr  myapp-hc3u8-2  2/2      Terminating  0         85s
    

    修訂 區段中的輸出,您可以查看 myapp 服務的最新應用程式修訂。 此外,請注意應用程式的 100% 資料流量正在執行應用程式的最新修訂。

  3. 呼叫應用程式。

    curl https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud
    

    輸出範例

    Hello Stranger
    

    從此指令的輸出中,您可以看到更新的應用程式現在會傳回 Hello Stranger

  4. 使用 ibmcloud ce revision list 指令來顯示所有應用程式修訂。 使用此資訊可協助您管理應用程式修訂,因為 Code Engine 具有 專案中應用程式修訂數目的配額

    在下列 revision list 輸出中,請注意 Code Engine 只會保留應用程式的最新非作用中修訂,以及作用中應用程式修訂。 會刪除較舊的修訂。

    ibmcloud ce revision list
    

    輸出範例

    Listing all application revisions...
    OK
    
    Name                   Application      Status  URL  Latest  Tag  Traffic  Age    Conditions  Reason
    myapp-hc3u8-4           myapp            Ready                            2d15h    3 OK / 4
    myapp-hc3u8-5           myapp            Ready        true         100%    2d8h    3 OK / 4  
    myapp2-vjfqt-1          myapp2           Ready        true         100%      3d    3 OK / 4
    myhelloapp-tv368-3      myhelloapp       Ready                              16d    3 OK / 4
    myhelloapp-tv368-4      myhelloapp       Ready        true         100%     16d    3 OK / 4
    newapp-mytest-00008     newapp-mytest    Ready                              4d17h  3 OK / 4
    newapp-mytest-00009     newapp-mytest    Ready        true         100%     2d20h  3 OK / 4
    

您可以使用 ibmcloud ce revision get 指令來顯示應用程式修訂的詳細資料,並使用 ibmcloud ce revision delete 指令來移除您不想保留的修訂,以管理您的應用程式修訂。 您也可以使用 ibmcloud ce revision logs 指令來檢視應用程式修訂實例的日誌。 使用 ibmcloud ce revision events 指令來顯示應用程式修訂實例的系統事件。

使用 CLI 更新應用程式以使用僅限專案的端點

依預設,當您部署應用程式時,應用程式會進行部署,以便它可以從公用網際網路、專用網路或專案內的元件接收要求。 若要變更應用程式的可見性,使其僅由在相同專案中執行的其他 Code Engine 資源存取,請搭配使用 --visibility=project 選項與 ibmcloud ce app updateibmcloud ce app create 指令。

在此實務範例中,更新您在 使用 CLI 部署應用程式 中建立的應用程式,以將應用程式的可見性變更為使用 專案端點

  1. 執行 application update 指令。 例如,

    ibmcloud ce application update -n myapp --visibility=project
    

    輸出範例

    Updating application 'myapp' to latest revision.
    [...]
    Run 'ibmcloud ce application get -n myapp' to check the application status.
    OK
    
    http://myapp.4svg40kna19.svc.cluster.local   
    
  2. 執行 application get 指令,以顯示應用程式的狀態,包括最新修訂資訊。

    ibmcloud ce application get --name myapp  
    

    輸出範例

    [...]
    Name:          myapp
    [...]
    URL:           http://myapp.4svg40kna19.svc.cluster.local
    Cluster Local URL:  http://myapp.4svg40kna19.svc.cluster.local
    Console URL:   https://cloud.ibm.com/codeengine/project/us-south/01234567-abcd-abcd-abcd-abcdabcd1111/application/myapp/configuration
    
    Environment Variables:
    Type     Name    Value
    Literal  TARGET  Stranger
    Image:                  icr.io/codeengine/hello
    Resource Allocation:
    CPU:                1
    Ephemeral Storage:  400M
    Memory:             4G
    
    Revisions:
    myapp-hc3u8-2:
        Age:                82s
        Traffic:            100%
        Image:              icr.io/codeengine/hello (pinned to f0dc03)
        Running Instances:  1
    
    Runtime:
    Concurrency:    100
    Maximum Scale:  10
    Minimum Scale:  0
    Timeout:        300
    
    Conditions:
    Type                 OK    Age  Reason
    ConfigurationsReady  true  75s
    Ready                true  62s
    RoutesReady          true  62s
    
    Events:
    Type    Reason   Age    Source              Messages
    Normal  Created  2m11s  service-controller  Created Configuration "myapp"
    Normal  Created  2m11s  service-controller  Created Route "myapp"
    
    Instances:
    Name                                       Revision       Running  Status       Restarts  Age
    myapp-hc3u8-1-deployment-65cf8cd4f5-jx8b8  myapp-hc3u8-1  1/2      Terminating  0         2m10s
    myapp-hc3u8-2-deployment-7f98b679d5-2hskr  myapp-hc3u8-2  2/2      Terminating  0         85s
    

    修訂 區段中的輸出,您可以查看 myapp 服務的最新應用程式修訂。 此外,請注意應用程式的 100% 資料流量正在執行應用程式的最新修訂。

現在您已在應用程式上設定 --visibility=project,無法再從公用網際網路存取此應用程式,且只能從此專案內的元件 (cluster-local) 進行網路存取。

更新應用程式以使用 CLI 來使用專用端點

依預設,當您部署應用程式時,應用程式會進行部署,以便它可以從公用網際網路、專用網路或專案內的元件接收要求。 您可以設定應用程式的端點可見性,讓它使用專用端點進行部署。 設定專用端點表示無法從公用網際網路存取您的應用程式,且只能從虛擬專用端點 (VPC) 或 Code Engine 元件 (在相同專案中執行) 中的其他 IBM Cloud 服務進行網路存取。

若要變更應用程式的可見性,以便只使用專用端點來存取它,請搭配使用 --visibility=private 選項與 ibmcloud ce app updateibmcloud ce app create 指令。

如果您選取的專案支援 應用程式專用可見性,則只能使用 VPE 來存取具有專用端點的應用程式。 若要確認專案是否支援應用程式專用可見性,請使用 ibmcloud ce project get 指令來驗證 Application Private Visibility Supported 的輸出是否設為 true

在此實務範例中,更新您在 使用 CLI 部署應用程式 中建立的應用程式,以將應用程式的可見性變更為使用 專用端點

  1. 確認現有專案支援具有專用可見性的應用程式。 使用 ibmcloud ce project get 指令來驗證 Application Private Visibility Supported 的輸出是否設為 true。 如果值為 false,請 聯絡 IBM 支援中心,以在現有專案內啟用此功能。

    ibmcloud ce project get -n myproject
    

    輸出範例

    Getting project 'myproject'...
    OK
    
    Name:                                      myproject  
    ID:                         abcdabcd-abcd-abcd-abcd-f1de4aab5d5d
    Status:                                    active  
    Enabled:                                   true  
    Application Private Visibility Supported:  true  
    Selected:                                  true  
    Region:                                    us-south
    Resource Group:             default
    Service Binding Service ID: ServiceId-1234abcd-abcd-abcd-1111-1a2b3c4d5e6f
    Age:                        52d
    Created:                                   Tue, 28 Sep 2021 05:12:16 -0500  
    Updated:                                   Tue, 28 Sep 2021 05:12:19 -0500  
    
    Quotas:    
    Category                                  Used  Limit  
    App revisions                             1     60  
    Apps                                      1     20  
    Build runs                                1     100  
    Builds                                    2     100  
    Configmaps                                2     100  
    CPU                                       0     64  
    Ephemeral storage                         0     256G  
    Instances (active)                        0     250  
    Instances (total)                         0     2500  
    Job runs                                  0     100  
    Jobs                                      0     100  
    Memory                                    0     256G  
    Secrets                                   6     100  
    Subscriptions (cron)                      0     100  
    Subscriptions (IBM Cloud Object Storage)  0     100  
    Subscriptions (Kafka)                     0     100
    
  2. 如果 Application Private Visibility Supportedtrue,則您可以更新應用程式以使用專用端點。 執行 application update 指令。 例如,

    ibmcloud ce application update -n myapp --visibility=private
    

    輸出範例

    Updating application 'myapp' to latest revision.
    [...]
    Run 'ibmcloud ce application get -n myapp' to check the application status.
    OK
    
    https://myapp.4svg40kna19.private.us-south.codeengine.appdomain.cloud
    
  3. 執行 application get 指令,以顯示應用程式的狀態,包括最新修訂資訊。

    ibmcloud ce application get --name myapp  
    

    輸出範例

    [...]
    Name:          myapp
    [...]
    URL:           https://myapp.4svg40kna19.private.us-south.codeengine.appdomain.cloud
    Cluster Local URL:  http://myapp.4svg40kna19.svc.cluster.local
    Console URL:   https://cloud.ibm.com/codeengine/project/us-south/01234567-abcd-abcd-abcd-abcdabcd1111/application/myapp/configuration
    
    Environment Variables:
    Type     Name    Value
    Literal  TARGET  Stranger
    Image:                  icr.io/codeengine/hello
    Resource Allocation:
    CPU:                1
    Ephemeral Storage:  400M
    Memory:             4G
    
    Revisions:
    myapp-hc3u8-2:
        Age:                82s
        Traffic:            100%
        Image:              icr.io/codeengine/hello (pinned to f0dc03)
        Running Instances:  1
    
    Runtime:
    Concurrency:    100
    Maximum Scale:  10
    Minimum Scale:  0
    Timeout:        300
    
    Conditions:
    Type                 OK    Age  Reason
    ConfigurationsReady  true  75s
    Ready                true  62s
    RoutesReady          true  62s
    
    Events:
    Type    Reason   Age    Source              Messages
    Normal  Created  2m11s  service-controller  Created Configuration "myapp"
    Normal  Created  2m11s  service-controller  Created Route "myapp"
    
    Instances:
    Name                                       Revision       Running  Status       Restarts  Age
    myapp-hc3u8-1-deployment-65cf8cd4f5-jx8b8  myapp-hc3u8-1  1/2      Terminating  0         2m10s
    myapp-hc3u8-2-deployment-7f98b679d5-2hskr  myapp-hc3u8-2  2/2      Terminating  0         85s
    

    修訂 區段中的輸出,您可以查看 myapp 服務的最新應用程式修訂。 此外,請注意應用程式的 100% 資料流量正在執行應用程式的最新修訂。

  4. 設定 VPE 以 使用專用端點存取應用程式

更新應用程式以參照不同的映像檔

您可以更新應用程式以參照不同的映像檔。

與特定應用程式修訂相關聯的映像檔具有唯一儲存器登錄摘要,且 Code Engine 在應用程式修訂的生命期限內使用此摘要。 如果您使用與原始映像檔相同的標籤來建立較新版本的映像檔,則會改寫容器登錄中的原始映像檔,並變成無標籤。 會標記較新的映像檔,且此較新的映像檔具有不同的摘要。 您的 Code Engine 應用程式未使用這個較新的映像檔,因為較新的映像檔具有與應用程式修訂所參照的映像檔不同的摘要。只要原始參照的未標記映像檔仍然存在,Code Engine 仍然可以建立應用程式修訂的新實例。 如需相關資訊,請參閱 為何無法 Code Engine 取回映像檔?

從主控台更新應用程式以參照 Container Registry 中的不同映像檔

使用 Code Engine 主控台,更新應用程式以參照儲存器登錄中的不同映像檔。

在此範例中,讓我們更新您在 從主控台在容器登錄中部署參照映像檔的應用程式 中建立的 helloapp,以參照不同的映像檔。 更新的應用程式會參照 Container Registry中 mynamespace2 名稱空間內的 helloworld_repo 映像檔。 下列步驟說明在應用程式更新期間新增對登錄的存取權。

如需將映像檔新增至 Container Registry的相關資訊,請參閱 開始使用 IBM Cloud Container Registry

  1. 導覽到您的申請頁面。 導覽至應用程式頁面的一種方式是

    • 找出 Code Engine 專案頁面
    • 按一下專案名稱以開啟「概觀」頁面。
    • 按一下應用程式,開啟應用程式清單。 按一下應用程式的名稱,以開啟應用程式頁面。
  2. 按一下 配置 標籤,以開啟最新應用程式修訂的配置詳細資料。

  3. 配置 標籤中,按一下 程式碼 標籤。

  4. 若要讓映像檔執行,請按一下 配置映像檔,以開啟配置映像檔對話框。 對於此範例,請更新應用程式以參照現有 ibmcregistry 登錄,選取 mynamespace2 名稱空間,選取 helloworld-repo 映像檔,然後選取 1 作為 tag 的值。 從配置映像檔頁面中,

    • 如果您要使用的映像檔位於相同的 Container Registry 帳戶中,請選取登錄的存取權。
    • 如果您要使用的映像檔位於不同的容器登錄帳戶中,則可以選取此登錄的登錄存取權。 如果登錄存取權不存在,您必須先 建立 IAM API 金鑰,然後 將登錄存取權新增至 Code Engine

    如果您只想要更新映像檔的登錄存取權,則可以進行此變更,而無需按一下 配置映像檔 以開啟配置映像檔對話框,並使用「登錄存取」功能表來選取現有登錄存取權,或針對應用程式所參照的映像檔 建立 Code Engine 的登錄存取權。

  5. 按一下完成。 您已在登錄中選取要從應用程式參照的映像檔。

  6. 按一下 部署,以儲存變更並部署應用程式修訂。

  7. 應用程式狀態變更為 備妥之後,您可以測試應用程式修訂。 按一下 測試應用程式,然後在「測試應用程式」窗格中按一下 傳送要求。 若要在網頁中開啟應用程式,請按一下 應用程式 URL。 對於此應用程式,會顯示 Hello World from Code Engine

使用 CLI 更新應用程式以參照 Container Registry 中的不同映像檔

更新應用程式以從 Code Engine CLI 參照 Container Registry 中的不同映像檔。

在此範例中,請更新您在 使用 CLI 部署參照容器登錄中映像檔的應用程式 中建立的 myhelloapp,以參照相同帳戶中不同名稱空間內的不同映像檔。 更新應用程式以參照 Container Registry中 mynamespace2 名稱空間內的 helloworld_repo 映像檔。

  1. 將不同的映像檔新增至 Container Registry。 在此範例中,請在 Container Registry的 mynamespace2 名稱空間中新增 helloworld_repo 映像檔。 如需將映像檔新增至 Container Registry的相關資訊,請參閱 開始使用 IBM Cloud Container Registry

  2. 新增 Code Engine的登錄存取權。 在此範例中,因為 helloworld_repo 映像檔位於相同的帳戶中,所以請使用先前定義的 myregistry 登錄存取權。

  3. 使用 myregistry 存取權來更新應用程式並參照 Container Registry 中的映像檔。 例如,更新 myhelloapp 應用程式,以使用 myregistry 存取資訊來參照 us.icr.io/mynamespace2/helloworld_repo

    ibmcloud ce app update --name myhelloapp --image us.icr.io/mynamespace2/helloworld_repo:1 --registry-secret myregistry
    

    此應用程式的映像檔名稱格式為 REGISTRY/NAMESPACE/REPOSITORY:TAG,其中 REGISTRYTAG 是選用項目。 如果未指定 REGISTRY,則默認為 docker.io。 如果未指定 TAG,則默認為 latest

  4. 更新應用程式之後,您可以存取應用程式。 若要取得應用程式的 URL,請執行 ibmcloud ce app get --name myhelloapp --output url。 當您對 myhelloapp 應用程式進行 curl 處理時,應用程式會傳回 Hello World from Code Engine,這會示範應用程式現在正在使用 helloworld_repo 映像檔。

更新應用程式以從主控台參照從原始碼建置的映像檔

更新應用程式以參照使用 Code Engine 主控台從原始碼建置的映像檔。

在此範例中,讓我們更新您在 從主控台部署參照容器登錄中映像檔的應用程式 中建立的 helloapp,以參照從原始碼建置的映像檔。

如需從主控台建立建置配置的相關資訊,請參閱 建立建置

  1. 導覽到您的申請頁面。 導覽至應用程式頁面的一種方式是
    • 找出 Code Engine 專案頁面
    • 按一下專案名稱以開啟「概觀」頁面。
    • 按一下應用程式,開啟應用程式清單。 按一下應用程式的名稱,以開啟應用程式頁面。
  2. 按一下 配置 標籤,以開啟最新應用程式修訂的配置詳細資料。
  3. 配置 標籤中,按一下 程式碼 標籤。
  4. 程式碼 標籤中,您可以建立映像檔建置,也可以重新執行應用程式所參照的現有映像檔建置。 若要建立映像檔建置,請按一下 從來源建立映像檔,以執行映像檔建置。 即會開啟「指定建置詳細資料」頁面,您可以在其中輸入建置的詳細資料,以 從原始碼部署應用程式。 指定建置詳細資料更新項目時,請按一下 完成
  5. 按一下 部署,以儲存變更、執行建置,並部署應用程式修訂。
  6. 應用程式狀態變更為 備妥之後,您可以測試應用程式修訂。 按一下 測試應用程式,然後在「測試應用程式」窗格中按一下 傳送要求。 若要在網頁中開啟應用程式,請按一下 應用程式 URL
  7. 若要再次更新此應用程式以參照更新的建置映像檔,請從 程式碼 標籤中按一下 重新執行建置,並為更新的建置映像檔指定唯一的映像檔標籤。 如果您想要對建置詳細資料進行更多變更,請按一下 編輯建置詳細資料。 即會開啟「指定建置詳細資料」頁面,您可以在其中輸入建置的詳細資料,以 從原始碼部署應用程式。 指定建置詳細資料更新項目時,請按一下 完成
  8. 按一下 部署 以儲存變更、使用變更執行建置,以及部署應用程式修訂。
  9. 應用程式狀態變更為 備妥之後,您可以測試應用程式修訂。 按一下 測試應用程式,然後在「測試應用程式」窗格中按一下 傳送要求。 若要在網頁中開啟應用程式,請按一下 應用程式 URL

更新應用程式以參照使用 CLI 從原始碼建置的映像檔

更新應用程式以參照使用 Code Engine CLI 從原始碼建置的映像檔。

在此範例中,讓我們在 使用 CLI 來更新應用程式以參照 Container Registry 中的不同映像檔 中變更您更新的 myhelloapp,以參照從原始碼建置的不同映像檔。

在前一個範例中,myhelloapp 應用程式使用 myregistry 存取資訊來參照 us.icr.io/mynamespace2/helloworld_repo。 讓我們建立建置配置,執行建置,並更新 myhelloapp,以參照從原始碼建置的映像檔。

  1. 建立建置配置。 例如,下列 build create 指令會建立稱為 helloworld-build 的建置配置。 此配置從公用 Git 儲存庫 https://github.com/IBM/CodeEngine 建置,使用 dockerfile 策略及 medium 建置大小,並使用 myregistry 中定義的映像檔登錄密鑰將映像檔儲存至 us.icr.io/mynamespace/codeengine-helloworld

    ibmcloud ce build create --name helloworld-build --image us.icr.io/mynamespace/codeengine-helloworld --registry-secret myregistry --source https://github.com/IBM/CodeEngine --commit main --context-dir /hello --strategy dockerfile --size medium
    
  2. 執行建置。 這個範例執行稱為 helloworld-build-run 的建置,並使用 helloworld-build 建置配置。

    ibmcloud ce buildrun submit --build helloworld-build --name helloworld-build-run
    

    下列輸出顯示使用 ibmcloud ce buildrun get 指令來執行建置的詳細資料。

    輸出範例

    Getting build run 'helloworld-build-run'...
    [...]
    OK
    
    Name:          helloworld-build-run  
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:  myproject  
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111  
    Age:           21m  
    Created:       2021-09-30T14:50:13-05:00  
    
    Summary:  Succeeded  
    Status:   Succeeded  
    Reason:   All Steps have completed executing
    
    Image:  us.icr.io/mynamespace/codeengine-helloworld
    
    

    如需使用 CLI 來建立建置配置的相關資訊,請參閱 建立建置

  3. 更新 myhelloapp 以參照您所建置並使用 myregistry 登錄密鑰的映像檔。

    ibmcloud ce app update --name myhelloapp --image us.icr.io/mynamespace/codeengine-helloworld --registry-secret myregistry
    
  4. 顯示已更新應用程式的相關資訊,以確認所參照的映像檔是您所建置的映像檔。

    ibmcloud ce app get --name myhelloapp
    

    輸出範例

    [...]
    OK
    
    Name:               myhelloapp
    ID:                 abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:       myproject
    Project ID:         01234567-abcd-abcd-abcd-abcdabcd1111
    Age:                2m4s
    Created:            2021-09-09T14:01:02-04:00
    URL:                https://myhelloapp.abcdabcdabc.us-south.codeengine.appdomain.cloud
    Cluster Local URL:  http://myhelloapp.abcdabcdabc.svc.cluster.local
    Console URL:        https://cloud.ibm.com/codeengine/project/us-south/01234567-abcd-abcd-abcd-abcdabcd1111/application/myhelloapp/configuration
    Status Summary:     Application deployed successfully
    
    Environment Variables:    
        Type     Name             Value  
        Literal  CE_API_BASE_URL  https://api.private.us-south.codeengine.cloud.ibm.com
        Literal  CE_APP           myhelloapp  
        Literal  CE_DOMAIN        us-south.codeengine.appdomain.cloud  
        Literal  CE_PROJECT_ID    abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
        Literal  CE_REGION        us-south  
        Literal  CE_SUBDOMAIN     abcdabcdab
    Image:                  us.icr.io/mynancesnamespace/codeengine-helloworld
    Resource Allocation:
    CPU:                1
    Ephemeral Storage:  400M
    Memory:             4G
    Registry Secrets:
    myregistry
    
    Revisions:
    helloapp-00003:
        Age:                2m46s
        Latest:             true
        Traffic:            100%
        Image:              us.icr.io/mysnamespace/codeengine-helloworld (pinned to eeca2b)
        Running Instances:  1
    [...]