Share via


在 Azure Container Apps 中更新和部署變更

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

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

修訂的主要特性包括:

  • 不可變:一旦建立,修訂會保持不變。

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

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

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

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

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

生命週期

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

布建狀態

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

狀態 描述
正在佈建 修訂是在驗證程式中。
已佈建 修訂已成功通過所有檢查。
佈建失敗 在驗證期間發生修訂的問題。

執行狀態

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

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

非使用中狀態

修訂也可以進入非使用中狀態。 這些修訂沒有布建或執行中狀態。 不過,Azure Container Apps 會維護這些修訂的清單,最多可容納 100 個非使用中的專案。 您可以隨時啟用修訂。

變更非使用中修訂限制

您可以使用 --max-inactive-revisions 參數搭配 containerapp createcontainerapp update 命令來控制 Container Apps 所追蹤的非使用中修訂數目。

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

az containerapp create --max-inactive-revisions 50

修訂模式

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

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

標籤

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

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

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

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

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

標籤名稱必須:

  • 由小寫英數位元或連字元組成 (-
  • 以字母字元開頭
  • 以英數位元結尾

標籤不得:

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

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

Screenshot of Container Apps revision management.

標籤 URL 可在 [修訂詳細數據] 窗格中取得。

Screenshot of Container Apps revision details.

零停機時間部署

單一修訂模式中,Container Apps 可確保您的應用程式在建立新修訂時不會經歷停機。 在新的修訂就緒之前,不會停用現有的使用中修訂。

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

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

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

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

使用多個修訂

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

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

流量分割

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

Azure Container Apps: Traffic splitting among revisions

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

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

直接修訂存取

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

啟用狀態

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

容器應用程式不會收取非使用中修訂的費用。 不過,可用修訂總數有上限,一旦您超過計數 100,就會清除最舊的修訂。

變更類型

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

修訂範圍變更

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

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

這些參數包括:

  • 修訂後綴
  • 容器組態和映像
  • 容器應用程式的調整規則

應用程式範圍變更

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

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

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

這些參數包括:

自訂修訂

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

名稱後綴

Container Apps 中的每個修訂都會獲指派唯一標識碼。 自動產生名稱時,您可以個人化修訂名稱。

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

<CONTAINER_APP_NAME>-<REVISION_SUFFIX>

例如,如果您有名為 album-api 的容器應用程式,並決定修訂後綴 第一個修訂,則完整的修訂名稱會 變成album-api-first-revision

修訂後綴名稱必須:

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

名稱不得具有:

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

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

使用案例

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

版本管理

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

還原為舊版

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

A/B 測試

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

藍綠部署

修訂支援 藍綠部署 策略。 藉由有兩個平行修訂(即時版本為藍色,新版本為綠色),您可以逐步逐步進行新的修訂。 一旦您確信新版本的穩定性和效能,就可以將流量完全切換至綠色環境。

下一步