啟用自動化的建議

適用於此 Azure Well-Architected Framework Operation Excellence 檢查列表建議:

OE:10 針對生命周期考慮、啟動載入和套用治理與合規性防護等作業,設計和實作自動化。 請勿稍後嘗試進行自動化。 選擇平臺提供的自動化功能。

本指南說明設計及實作工作負載以啟用自動化的建議。 使用自動化設計工作負載,以確保布建資源、調整和部署等例行工作會快速且可靠地執行。 自動化可簡化維護工作,並可讓您更有效率地更新、修補和升級系統。

主要設計策略

工作負載設計

您可以將工作負載設計為支援從構想階段到進行中改進階段的自動化。 首先,請考慮如何在工作負載中套用自動化,以協助確保您已備妥必要的部分。 以 Well-Architected 架構要素來考慮您的工作負載,以協助規劃您將使用的自動化類型。 您可以將許多安全性、可靠性、效能、作業和成本控制的功能自動化。

考慮自動化設計,以在工作負載執行之後將重構降至最低。 決定要使用的自動化工具時,請考慮您的工作負載需求。 您的小組可能已經熟悉現成的自動化工具。 採用這些工具可讓自動化工作負載的路徑變得更容易,但要留意其與雲端平臺的限制和相容性。 例如,某些自動化工具可能會與 Azure CLI 工具整合良好,而有些則可能需要 REST 介面。 請一律調查雲端平臺所提供的工具,以確保它們相容,並提供您需要的功能。 您可以主動規劃自動化方式的範例包括:

  • 部署:將應用程式和基礎結構部署自動化,以確保可預測的標準。 藉由開發部署標準、針對您將使用的工具訓練小組,以及實作必要的基礎結構,以規劃自動化部署。

  • 驗證:使用協調流程或原則工具來自動驗證工作負載的合規性需求。 識別工作負載的適當驗證工具,並規劃實作必要的系統,例如協調流程伺服器。

  • 自動調整:在整個基礎結構中使用自動調整,以協助您達到可靠性和效能需求。 除了規劃備援和自然成長之外,您也應該事先在工作負載中配置IP位址空間和子網,以考慮調整作業。

取捨:設計工作負載以啟用自動化時,請考慮您想要維護的控制程度,以及您可以透過自動化取得的效率。 在某些情況下,您的工作負載可能不夠成熟,無法自動化某些函式,或者您可能需要自動化未提供的彈性層級。

此外,在設計工作負載時,也請考慮小組的技能集。 如果高度自動化需要小組不支援的工具,則您可能需要使用較不完整的設計作為中繼步驟。

持續工作負載改善

在雲端中執行工作負載之後,請務必設定持續改善的優先順序。 觀察您的工作負載運作情形、分析使用模式,並檢閱與工作負載相關的客戶行為,以識別您可以改善自動化的區域。 尋找增強現有自動化或引進新自動化的方式,以改善客戶體驗。 例如,您可能已啟用自動調整,但工作負載增加是短期的。 您可以整合相應縮小自動化,以在負載低於閾值時減少 CPU 使用量。

本指南的下列各節提供特定自動化領域的建議,可協助您進行工作負載設計和實作。

啟動

啟動載入是指在布建資源之後必須進行的資源組態更新,但在工作負載集區可用之前。 啟動載入通常會與虛擬機 () 相關聯,但許多其他資源必須設定為部署程式的一部分,包括平臺即服務 (PaaS) 技術和容器裝載技術,例如 Azure Kubernetes Service (AKS) 。

您的雲端平臺可能會為您提供啟動載入解決方案,您應該盡可能使用。 例如,您可以在 Azure 中使用 VM 擴充功能,在部署程式期間進行預先定義的設定變更,並插入 PowerShell 腳本來自定義設定變更。

驗證與授權

設計驗證和授權策略時,將自動化納入考慮。 請務必在生產工作負載中維持最高層級的安全性,但這可能會影響自動化。 例如,使用生物特徵辨識或多重要素驗證會增加自動化設計中必須考慮的複雜度。 使用非人類安全帳戶進行自動化驗證,例如受控識別、工作負載身分識別或憑證。 請確定您已在自動化中包含秘密和金鑰管理,以提高驗證安全性。

設計工作負載的變化

藉由在成品中建立彈性,避免在進行小型變更時,不必要地部署新的基礎結構。 例如,相較於在功能旗標變更時重新部署基礎結構,您可以使用設定來更新元件的參數,例如應用程式組態。 請務必清楚定義及記錄使用變化的方式,以避免過度使用和設定漂移。

建置控制平面

控制平面是後端系統或工具套件,可用來透過統一介面來管理應用程式及其相依性。 建置您的控制平面,例如 REST 介面、CLI 或 Webhook,以支援外部工具的自動化。

透過控制平面公開維護作業,讓您能夠協調工作負載元件,例如,依序備份和還原、啟動載入、設定、匯入/導出和批處理作業。 決定要透過控制平面公開的作業時,請小心選擇正確的粒度層級。

監視與記錄

開發監視策略,以擷取驅動所需自動化類型的計量。 使用結構化記錄和自定義計量,以易於使用自動化工具辨識的格式,提供自動化所需的資訊。 您擷取的計量應該與監視系統中定義的臨界值配對,以觸發警示和自動化動作,例如適當時通知或自我修復機制。 如需詳細資訊,請參閱 自我修復和自我保留的建議

使用者生命週期

設計您的應用程式和基礎結構,以允許個人或多租用戶客戶的自動化用戶上線和下線。 透過腳本、基礎結構布建和取消布建,以及認證和秘密管理來規劃自動化資料庫更新。

協調流程和原則使用

作為持續工作負載管理的一部分,您可以在資源中自動 Desired State Configuration (DSC) ,以協助確保它們符合合規性和商務需求。 DSC 自動化有助於確保快速攔截並修復設定漂移。 您可以使用協調流程工具或原則管理工具將 DSC 自動化。 將協調流程工具視為推送式機制,例如 Azure DevOps 服務或 Jenkins。 協調流程工具允許透過工作流程事件推送組態更新,例如手動或自動化部署。 這些更新會在部署腳本中定義的工作順序中執行。 原則管理工具會使用提取式機制,這表示系統會在工作負載的基礎層級執行,以定期輪詢工作負載,以針對您定義的 DSC 檢查其狀態。 如果投票識別錯誤或設定漂移,此工具會採取更正動作。 在協調流程和原則管理工具之間決定時,請考慮下列因素:

  • 協調流程工具沒有內建功能,可主動輪詢您的工作負載以取得設定漂移。 協調流程工具應該整合到您的持續整合和持續傳遞 (CI/CD) 管線中,以維護基礎結構的標準作為程式代碼 (IaC) 部署和管理。 使用協調流程工具的優點是資源一律會在部署時完全設定。

  • 原則管理工具可讓您定義影響一或多個資源群組的原則。 當資源使用原則管理系統簽入時,會強制執行這些原則。 使用原則管理的優點是這些系統不是程式碼驅動,因此您的小組操作員可能更容易採用這些系統。

在協調流程或原則工具之間決定時,請考慮您在部署時是否必須對新資源進行設定更新。 也請考慮在程式代碼中定義更新是否符合您的作業作法,以及您打算部署的資源類型數目。 如果資源類型之間有許多不同的設定,原則工具可能是管理更新的較簡單方式。

Azure 設施

原則管理

Azure 原則:使用 Azure 原則,您可以大規模強制執行標準和評估合規性。 Azure 原則 提供匯總檢視,以評估合規性儀錶板中工作負載環境的整體狀態。 或者,您可以使用 Azure 原則,以細微層級評估每個資源和原則。 您也可以使用 Azure 原則 自動補救新資源,或大量補救現有的資源。

取捨:將自動化從 CI/CD 管線卸除至平臺工具或服務,例如 Azure 原則,可以簡化您的管線,但有缺點,例如使用多個系統的額外管理負擔。 例如,平台服務中的執行失敗不會攔截到您的管線記錄中,而且必須以智慧方式送入您的可觀察性平臺,讓適當的物件收到通知。

啟動程序自動化

Azure 虛擬機器 擴充功能:虛擬機器 擴充功能是在 VM 上執行部署後設定和自動化的小型套件。 有數個擴充功能可用於不同的設定工作,例如執行腳本、設定反惡意代碼解決方案,以及設定記錄解決方案。 使用 Azure Resource Manager 範本、Azure CLI、Azure PowerShell 模組或 Azure 入口網站,在 VM 上安裝並執行這些擴充功能。 每個 VM 都有一個 VM 代理程式,可管理擴充功能的生命週期。

一般而言,VM 擴充功能會使用自定義腳本擴充功能來安裝軟體、執行命令,以及在 VM 或 Azure 虛擬機器擴展集 上執行設定。 您可以將這些擴充功能設定為 IaC 部署的一部分來執行,以便它們使用 Azure VM 代理程式在新 VM 上執行。 擴充功能也可以使用 Azure CLI、PowerShell 模組或 Azure 入口網站,在 Azure 部署外部執行。

Cloud-init: Cloud-init 是一種業界工具,可用來在第一次開機時設定 Linux VM。 就像 Azure 自定義腳本延伸模組一樣,cloud-init 可讓您在 Linux VM 上安裝套件並執行命令。 您可以使用 cloud-init 進行軟體安裝、系統設定和內容預備。 Azure 包含跨已知 Linux 發行版的許多已啟用雲端 init 的 VM 映射。 如需完整清單,請參閱 Azure 中 VM 的 cloud-init 支援

Azure 部署腳本資源: 當您使用 Azure 進行部署時,您可能需要執行任意程式代碼,以啟動使用者帳戶、Kubernetes Pod 的管理,或從非 Azure 系統查詢數據。 由於這些作業都無法透過 Azure 控制平面存取,因此需要個別的機制。 如需詳細資訊,請參閱 Microsoft.Resources deploymentScripts。 就像任何其他 Azure 資源一樣,部署腳本資源:

  • 可用於 Azure Resource Manager 範本。

  • 包含其他資源中的 Azure Resource Manager 範本相依性。

  • 取用輸入並產生輸出。

  • 使用使用者指派的受控識別進行驗證。

部署時,部署指令碼會執行 PowerShell 或 Azure CLI 命令和指令碼。 您可以在 Azure 入口網站 或使用 Azure CLI 和 PowerShell 模組來觀察腳本執行和記錄。 您可以在文稿失敗之後自定義執行環境的變數、逾時選項和資源管理。

使用 GitOps 啟動 AKS 叢集:您可以使用 GitOps 和 Flux v2 叢集擴充功能來啟動新佈建的 AKS 叢集,方法是在 GitHub 存放庫中宣告您的組態設定。 因為 AKS 叢集檔案會儲存在 GitHub 存放庫中,所以它們已設定版本版本,而且可以輕鬆地追蹤版本之間的變更。 Kubernetes 控制器會在叢集中執行,並藉由從存放庫提取檔案,持續協調叢集狀態與 Git 存放庫中所宣告的所需狀態。 如需詳細資訊,請參閱 AKS 基準參考架構

設定管理

Azure 自動化 狀態設定 是由 Azure 原則 客體設定功能所管理的 DSC 管理工具,可用來針對任何雲端或內部部署數據中心內的節點撰寫、管理及編譯 PowerShell DSC 組態。 您也可以使用此工具來匯入 DSC 資源,並將設定指派給目標節點。

Azure 應用程式組態 是一項服務,可用來集中管理應用程式設定和功能旗標。 它適用於 Azure 金鑰保存庫,因此您可以安全地管理整個環境的各種應用程式設定。

變更追蹤和清查

使用 Azure 監視代理程式變更追蹤和清查 會追蹤虛擬機中的 OS 設定漂移。 這會自動偵測漂移、清查執行中的服務,以及在工作負載中的虛擬機上安裝套件。 變更追蹤和清查所追蹤的專案包括:

  • 已安裝的 Windows 和 Linux 軟體
  • 密鑰 Windows 和 Linux 檔案
  • Windows 登錄機碼
  • Windows 服務和 Linux 精靈

營運卓越檢查清單

請參閱一組完整的建議。