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