共用方式為


中斷服務部署作業

本文說明在非終端狀態中斷月臺網路服務 (SNS) 部署作業的方法。 此功能僅支援容器網路功能 (CNF)。 您可以將標籤套用至網路功能 (NF)的受控資源群組 (MRG)來觸發它。 您稍後必須移除此標籤,才能還原未來的 SNS 操作。

為什麼要中斷服務部署作業

Azure 操作員 Service Manager 會部署複雜的 CNF 工作負載,其中包含許多個別元件 (Helm 圖表) 。 當您啟動 SNS 部署時,每個元件都會依照網路功能設計 (NFD) 定義的順序循序處理。 視部署中接觸的元件數量而定,SNS 作業可能需要較長的時間才能完成。

例如,請考慮 CNF 有 30 個元件的案例。 每個元件需要 5 分鐘才能部署。 此作業的總執行時間將超過 2 小時。 現在,請考慮長時間執行部署作業的作業問題:

  • 使用者可能只想測試特定元件的部署作業。
  • 使用者可能會在啟動作業之後意識到元件配置中存在錯誤。
  • 此作業可能會對面向客戶的服務造成非預期的負面影響。

在這種情況下,需要能夠中斷操作。 在引入此中斷功能之前,唯一的選擇是等待有缺陷的組件發生故障。 您可以使用這項主動中斷能力,在長時間執行的部署到達有缺陷的元件之前提前中斷部署。 這種中斷最大限度地減少了延誤並提高了營運敏捷性。

服務部署作業概觀

在第一次部署 SNS 期間,安裝操作會建立包含 NF 資源的受管資源群組 (MRG)。 對於後續的 SNS 部署,升級作業會使用此管理者關係來修改 MRG 內的 NF。 若要使用中斷功能,您必須擁有 NF MRG 的存取權。

備註

NF MRG 與 SNS 資源群組 (RG) 具有不同的預設許可,後者通常會限制使用者直接存取。

中斷服務部署作業

請遵循此程序來執行中斷。 請注意,在安裝作業和升級作業中執行中斷時,中斷行為會有所不同:

  • 當您中斷安裝時,工作流程僅支援“發生故障時暫停”失敗恢復方法。
  • 當您中斷升級時,工作流程會遵循已設定的失敗復原方法。 此方法可以是失敗時回滾或失敗時暫停。

使用標籤要求中斷

若要中斷執行中的部署,請在 NF MRG 上新增標籤 cancel:1 。 您可以參考 SNS 資源中的 properties.managedResourceGroupConfiguration.name 值來識別 MRG。

標籤是靜態索引鍵/值組,且必須完全相符。 您可以使用任何支援的方法來新增它,例如 Azure 入口網站、Azure CLI 或 REST SDK。

下列範例示範如何使用 Azure CLI 新增標籤:

az tag update --resource-id {resourceGroup} --operation Merge --tags cancel=1

等待中斷信號觸發

將標籤套用至 NF MRG 之後,中斷會在元件作業之間發生。 目前的元件作業不會中斷,而且必須繼續完成。

在工作流程開始下一個元件作業之前,它會檢查 NF MRG 上是否存在標籤。 如果標籤存在,則不會執行任何剩餘的元件,並設定為狀態 failed

如果中斷套用至升級作業,則工作流程將遵循設定的失敗復原方法。 失敗復原完成後,部署作業的終端狀態會設定為 failed

監控網路功能元件的狀態

使用 NF 元件檢視來判斷已執行中斷的狀態。 尋找最後完成元件的 DeploymentStatusProperties 屬性是否處於 installing 以外的狀態。

您也可以使用元件檢視,根據已配置的失敗回復方法來判斷元件狀態。

透過日誌確認中斷動作

在 SNS 部署達到failed終端狀態之後,中斷通知會附加到操作輸出日志。

安裝中斷期間發出的錯誤

下列程式碼顯示在第一次安裝作業期間發出的記錄範例。 參考testapp 會識別因中斷請求而未啟動的元件。 字串 deployment cancelled 指出中斷已套用至起始安裝作業。

{
 "code": "DeploymentFailed",
 "message": "At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/arm-deployment-operations for usage details.",
 "details": [ 
  { 
   "code": "NetworkFunctionApplicationDeploymentFailed",
   "message": "[Application(testapp): Deployment cancelled for application: testapp due to User cancellation request]"
  }
 ]
}

升級中斷期間發出錯誤

下列程式碼顯示升級作業期間發出的記錄範例。 對 testapp 的參考用於識別下一個因中斷要求而未啟動的元件。 字串 NF update 表示中斷已套用至升級作業。

{
 "code": "DeploymentFailed",
 "message": "At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/arm-deployment-operations for usage details.",
 "details": [ 
  { 
   "code": "NetworkFunctionApplicationDeploymentFailed", 
   "message": "[Application(testapp) failed to be processed in NF update. Error: Deployment cancelled for application: testapp due to User cancellation request]" 
  } 
 ]
}

中斷完成後移除標籤

為避免無意中中斷任何未來的 SNS 部署操作,您應該從 NF MRG 中移除標籤。 例如,若要使用 Azure CLI 移除標籤,請執行下列命令:

az tag update --resource-id {resourceGroup} --operation Delete --tags cancel=1

其他考慮

當您想要中斷 SNS 部署操作時,請注意以下考量事項:

  • 只有 CNF 部署支援中斷部署。
  • 當您將標籤新增至 SNS MRG 時,進行中的元件動作不會中斷,而且必須在中斷開始之前完成。