共用方式為


在 Azure 容器應用程式中更新和部署變更

當您在雲端中開發容器化應用程式時,變更管理可能會很困難。 最後,您需要支援來追蹤變更、確保運作時間,以及有處理順暢復原的機制。

Azure 容器應用程式中的變更管理是由修訂所提供,這是每個容器應用程式修訂的快照集。

修訂的主要特性包括:

  • 不可變:修訂建立完成後就會保持不變。

  • 設定版本:修訂可作為容器應用程式修訂版本的記錄,在各個階段擷取其狀態。

  • 自動佈建:當您第一次部署容器應用程式時,會自動建立初始修訂。

  • 範圍變更:雖然修訂維持靜態,但變更應用程式範圍可能會影響所有修訂,而變更修訂範圍則會建立新的修訂。

  • 歷程記錄:根據預設,您可以存取 100 個非使用中修訂,但您可以手動調整此閾值

  • 多個修訂:您可以同時執行多個修訂。 當您需要同時管理不同版本的應用程式時,這項功能特別有用。

生命週期

每個修訂都會經歷特定狀態,並受到其狀態和可用性的影響。 在其生命週期中,容器應用程式會經歷不同的佈建、執行和非作用中狀態。

佈建狀態

當您建立新的修訂時,容器應用程式會進行啟動和整備檢查。 在此階段中,佈建狀態可作為追蹤容器應用程式進度的指南。

狀態 描述
正在佈建 修訂處於驗證流程中。
已佈建 修訂已成功通過所有檢查。
佈建失敗 修訂在驗證期間碰到問題。

執行狀態

成功佈建容器應用程式之後,修訂會進入其作業階段。 執行狀態有助於監視容器應用程式的健康情況和功能。

狀態 描述
正在佈建 修訂處於驗證流程中。
調整為 0 沒有執行中的複本,且未佈建任何新複本。 如果觸發調整規則,容器應用程式可以建立新的複本。
啟用中 沒有執行中的複本,並正在佈建一個複本。
啟用失敗 第一個複本佈建失敗。
縮放/處理 正在縮小或放大。 正在執行一或多個複本,且正在佈建其他複本。
執行中 正在執行一或多個複本。 沒有要回報的問題。
執行中 (最大值) 正在執行的複本數目達上限 (根據修訂的縮放規則)。 沒有要回報的問題。
解除佈建 修訂正從作用中轉換為非使用中,並正在移除其已建立的所有資源。
已降級 修訂中至少有一個複本處於失敗狀態。 針對特定問題,檢視執行狀態詳細資料。
失敗 嚴重錯誤導致修訂失敗。 執行狀態會提供詳細資料。 常見的原因包括:
• 終止
• 結束代碼 137

非使用中狀態

修訂也可以進入非使用中狀態。 這些修訂並未處於佈建或執行狀態。 不過,Azure 容器應用程式會維護這些修訂的清單,最多可容納 100 個非使用中的項目。 您可以隨時啟用修訂。

變更非使用中修訂限制

您可以使用 --max-inactive-revisions 參數,搭配 containerapp createcontainerapp update 命令,以控制 Azure 容器應用程式追蹤的非使用中修訂數目。

此範例示範如何建立可追蹤 50 個非使用中修訂的新容器應用程式:

az containerapp create --max-inactive-revisions 50

修訂模式

Azure 容器應用程式支援兩種修訂模式。 您選擇的模式會決定應用程式同時作用的修訂數目。

修訂模式 描述 預設
Single 新的修訂會自動佈建、啟用並調整為所需的大小。 所有複本都以縮放規則所定義的方式執行後,流量會從舊版轉移至新的複本。 若更新失敗,流量仍會指向舊的修訂。 此時會自動取消佈建舊修訂。 Yes
多個 您可以有多個作用中修訂、分割修訂之間的流量,然後選擇何時取消佈建舊修訂。 此一等級的控制有助於測試多個版本的應用程式、藍綠測試,或完全控制應用程式更新。 如需詳細資訊,請參閱流量分割

標籤

對於具有外部 HTTP 流量的容器應用程式,標籤會將流量導向到特定修訂。 標籤提供了一個唯一的 URL,您可以使用該 URL 來將流量路由傳送到指派了該標籤的修訂版。

若要在修訂版之間切換流量,您可以將標籤從一個修訂版移至另一個修訂版。

  • 當標籤從一個修訂版移到另一個修訂版時,它會保留相同的 URL。
  • 標籤一次只能套用於一個修訂版。
  • 對於具有標籤的修訂版,不需要進行流量分割的分配。
  • 當應用程式處於多重修訂模式時,標籤最有用。
  • 您可以啟用標籤、流量分割或同時啟用兩者。

標籤對於測試新的修訂版很有用。 例如,當您想要授與一組測試使用者存取權時,您可以向他們提供標籤的 URL。 然後,當您想要將使用者移至不同的修訂版時,您可以將標籤移至該修訂版。

標籤的運作與流量分割無關。 流量分割會根據流量百分比將流向容器應用程式的應用程式 URL 的流量分散到不同的修訂版。 當流量導向至標籤的 URL 時,流量會路由傳送到一個特定的修訂版。

標籤名稱必須:

  • 包含小寫英數位元或連字號 (-)
  • 以字母字元開頭
  • 以英數字元結尾

標籤不得:

  • 出現兩個連續虛線 (--)
  • 必需超過 64 個字元

您可以在 Azure 入口網站的容器應用程式 [修訂版管理] 頁面中管理標籤。

Screenshot of Container Apps revision management.

您可以在 [修訂版詳細資料] 窗格中找到標籤 URL。

Screenshot of Container Apps revision details.

零停機時間部署

單一修訂模式中,Azure 容器應用程式會確保在建立新的修訂時,您的應用程式不會發生停機。 在新的修訂就緒之前,不會停用現有的使用中修訂。

如果啟用輸入,則現有的修訂會繼續接收 100% 的流量,直到新的修訂就緒為止。

新修訂會在下列情況下視為就緒:

  • 已成功佈建修訂
  • 修訂已擴大,以符合先前的修訂複本計數 (相對於新修訂的最小和最大複本計數)
  • 所有複本都已通過其啟動和整備度探查

多個修訂模式中,您可以控制何時啟動或停用修訂,以及哪些修訂會收到輸入流量。 如果流量分割規則latestRevision 設定為 true,則流量在準備就緒之前不會切換至最新的修訂。

使用多個修訂

雖然單一修訂模式是預設值,但有時候您可能想要完全控制修訂的管理方式。

多個修訂模式可讓您彈性手動管理修訂。 例如,使用多個修訂模式可讓您精準決定配置給每個修訂的流量。

流量分割

下圖顯示有兩個修訂版的容器應用程式。

Azure Container Apps: Traffic splitting among revisions

此情節假設容器應用程式處於下列狀態:

  • 已啟用輸入,以透過 HTTP 或 TCP 使用容器應用程式。
  • 第一個修訂版會部署為修訂版 1
  • 更新容器之後,新的修訂版會以修訂版 2 啟動。
  • 已設定流量分割規則,這樣一來,修訂版 1 會接收 80% 的要求,而修訂版 2 會接收剩下的 20%。

直接修訂存取

您可能想要針對特定 URL 的要求提供修訂,而不是使用路由規則將流量轉移至修訂。 多個修訂模式可讓您將傳入網域的所有要求傳送至最新的修訂,而對較舊修訂的要求則可透過標籤直接存取。

啟用狀態

在多個修訂模式中,您可以視需要啟用或停用修訂。 作用中的修訂是可運作的,而且可以處理要求,而非作用中的修訂仍處於休眠狀態。

Azure 容器應用程式不會收取非使用中修訂的費用。 不過,可用修訂總數有上限。只要超過 100 個可用修訂,系統就會清除最舊的修訂。

變更類型

容器應用程式的變更分為兩個類別:修訂範圍應用程式範圍變更。 修訂範圍變更會在您部署應用程式時觸發新的修訂版,而應用程式範圍變更則不會。

修訂範圍變更

當容器應用程式因修訂範圍變更而更新時,就會建立新的修訂版。 這些變更僅限於部署使用的修訂版,而不會影響其他修訂版。

修訂範圍變更是在容器應用程式資源範本的 properties.template 區段中,對參數所做的任何變更。

這些參數包括:

應用程式範圍變更

當您部署發生應用程式範圍變更的容器應用程式時:

  • 這些變更會全域套用至所有修訂版。
  • 不會建立新的修訂版。

應用程式範圍變更定義為在容器應用程式資源範本的 properties.configuration 區段中,對參數所做的任何變更。

這些參數包括:

自訂修訂

您可以自訂修訂名稱和標籤,以更符合您的命名慣例或版本控制策略。

名稱尾碼

Azure 容器應用程式中的每個修訂都會獲指派唯一識別碼。 自動產生名稱時,您可以個人化修訂名稱。

修訂版名稱的一般格式為:

<CONTAINER_APP_NAME>-<REVISION_SUFFIX>

例如,如果您的容器應用程式名為 album-api ,並決定修訂尾碼為 first-revision,則完整的修訂名稱會變成 album-api-first-revision

修訂尾碼名稱必須:

  • 包含小寫英數位元或連字號 (-)
  • 以字母字元開頭
  • 以英數字元結尾

名稱不得有:

  • 連續兩個破折號 (--)
  • 必需超過 64 個字元

您可以透過 Azure CLI az containerapp createaz containerapp update 命令,或透過 Azure 入口網站建立修訂版時,在 ARM 範本中設定修訂版尾碼。

使用案例

以下是在容器應用程式中使用修訂的常見使用案例。 這份清單不是使用 Azure 容器應用程式修訂之用途或功能的完整清單。

版本管理

修訂可簡化引進新版應用程式的流程。 當您準備好推出更新或新功能時,您可以建立新的修訂,而不會影響目前的即時版本。 此方法可確保順暢的轉換,並將終端使用者的中斷降到最低。

還原至先前的版本

有時候,您需要將應用程式快速還原為先前的穩定版本。 如有必要,您可以回復至先前的容器應用程式修訂。

A/B 測試

當您要測試應用程式的不同版本時,修訂可以支援 A/B 測試。 您可以將使用者的子集路由至新的修訂、收集意見反應,並根據真實世界數據做出明智的決策。

藍綠部署

修訂支援藍綠部署策略。 藉由有兩個平行修訂 (即時版本為藍色,新版本為綠色),您可以逐步推動新修訂。 當您對新版本的穩定性和效能感到放心後,就可以將流量完全切換至綠色環境。

下一步