在 Azure Container Apps 中更新和部署變更
當您在雲端中開發容器化應用程式時,變更管理可能會很困難。 最後,您需要支援來追蹤變更、確保運行時間,以及有處理順暢回復的機制。
Azure Container Apps 中的變更管理是由修訂所提供,這是每個容器應用程式的快照集。
修訂的主要特性包括:
不可變:一旦建立,修訂會保持不變。
版本設定:修訂可作為容器應用程式版本的記錄,在各種階段擷取其狀態。
自動布建:當您第一次部署容器應用程式時,會自動建立初始修訂。
歷程記錄:根據預設,您可以存取 100 個非使用中修訂,但您可以 手動調整此閾值。
多個修訂:您可以同時執行多個修訂。 當您需要同時管理不同版本的應用程式時,這項功能特別有用。
生命週期
每個修訂都會經歷特定狀態,並受到其狀態和可用性的影響。 在其生命週期中,容器應用程式會經歷不同的布建、執行和非作用中狀態。
布建狀態
當您建立新的修訂時,容器應用程式會進行啟動和整備檢查。 在此階段中,布建狀態可作為追蹤容器應用程式進度的指南。
狀態 | 描述 |
---|---|
正在佈建 | 修訂是在驗證程式中。 |
已佈建 | 修訂已成功通過所有檢查。 |
佈建失敗 | 在驗證期間發生修訂的問題。 |
執行狀態
成功布建容器應用程式之後,修訂會進入其作業階段。 執行狀態有助於監視容器應用程式的健全狀況和功能。
狀態 | 描述 |
---|---|
正在佈建 | 修訂是在驗證程式中。 |
調整為 0 | 零個執行中的複本,且未布建任何新的複本。 如果觸發調整規則,容器應用程式可以建立新的複本。 |
啟動 | 零個執行中的複本,一個正在布建的複本。 |
啟用失敗 | 第一個復本無法布建。 |
調整/處理 | 正在相應縮小或相應放大。 一或多個複本正在執行,而正在布建其他複本。 |
執行中 | 一或多個複本正在執行。 沒有要回報的問題。 |
執行中 (最大值) | 復本數目上限(根據修訂的縮放規則)正在執行。 沒有要回報的問題。 |
取消布建 | 修訂正從作用中轉換為非使用中,並正在移除它已建立的任何資源。 |
已降級 | 修訂中至少有一個復本處於失敗狀態。 檢視特定問題的執行中狀態詳細數據。 |
失敗 | 嚴重錯誤導致修訂失敗。 執行 中狀態 會提供詳細數據。 常見的原因包括: •終止 • 結束代碼 137 |
非使用中狀態
修訂也可以進入非使用中狀態。 這些修訂沒有布建或執行中狀態。 不過,Azure Container Apps 會維護這些修訂的清單,最多可容納 100 個非使用中的專案。 您可以隨時啟用修訂。
變更非使用中修訂限制
您可以使用 --max-inactive-revisions
參數搭配 containerapp create
或 containerapp 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 入口網站 管理標籤。
標籤 URL 可在 [修訂詳細數據] 窗格中取得。
零停機時間部署
在 單一修訂模式中,Container Apps 可確保您的應用程式在建立新修訂時不會經歷停機。 在新的修訂就緒之前,不會停用現有的使用中修訂。
如果啟用輸入,則現有的修訂會繼續接收 100% 的流量,直到新的修訂就緒為止。
新的修訂會在下列情況下視為就緒:
- 修訂已成功布建
- 修訂已相應增加以符合先前的修訂複本計數(相對於新修訂的最小和最大複本計數)
- 所有複本都已通過其啟動和整備探查
在 多個修訂 模式中,您可以控制何時啟動或停用修訂,以及哪些修訂會收到輸入流量。 如果流量分割規則將 latestRevision
設定為 true
,則流量在準備就緒之前不會切換至最新的修訂。
使用多個修訂
雖然單一修訂模式是預設值,但有時候您可能想要完全控制修訂的管理方式。
多個修訂模式可讓您彈性手動管理修訂。 例如,使用多個修訂模式可讓您確切決定配置給每個修訂的流量。
流量分割
下圖顯示具有兩個修訂的容器應用程式。
此案例假設容器應用程式處於下列狀態:
- 啟用輸入 ,讓容器應用程式可透過 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 create
和az containerapp update
命令,或在透過 Azure 入口網站 建立修訂時,在 ARM 範本中設定修訂後綴。
使用案例
以下是在容器應用程式中使用修訂的常見使用案例。 這份清單不是使用 Container Apps 修訂之用途或功能的完整清單。
版本管理
修訂可簡化引進新版應用程式的程式。 當您準備好推出更新或新功能時,您可以建立新的修訂,而不會影響目前的即時版本。 此方法可確保順暢的轉換,並將終端使用者的中斷降到最低。
還原為舊版
有時候,您需要快速還原為先前穩定版本的應用程式。 如有必要,您可以回復至先前的容器應用程式修訂。
A/B 測試
當您想要測試應用程式的不同版本時,修訂可以支援 A/B 測試。 您可以將使用者的子集路由至新的修訂、收集意見反應,並根據真實世界數據做出明智的決策。
藍綠部署
修訂支援 藍綠部署 策略。 藉由有兩個平行修訂(即時版本為藍色,新版本為綠色),您可以逐步逐步進行新的修訂。 一旦您確信新版本的穩定性和效能,就可以將流量完全切換至綠色環境。