適用於 Kubernetes 叢集的 Azure Arc 混合式管理和部署

Azure Arc
Azure Kubernetes Service (AKS)
Azure 監視器
Azure 原則
Azure 角色型存取控制

此參考架構示範 Azure Arc 如何跨客戶數據中心、邊緣位置和多個雲端環境擴充 Kubernetes 叢集管理和設定。

架構

架構圖顯示適用於 Kubernetes 拓撲的 Azure Arc。

下載此架構的 Visio 檔案

工作流程

架構包含下列層面:

  • 已啟用 Azure Arc 的 Kubernetes。 使用已啟用 Azure Arc 的 Kubernetes 來連結及設定 Azure 內部或外部的 Kubernetes 叢集。 當 Kubernetes 叢集連結至 Azure Arc 時,會指派 Azure Resource Manager 識別碼和受控識別。
  • Azure Kubernetes Service。 在 Azure 中裝載 Kubernetes 叢集,以減少 Kubernetes 叢集管理的複雜性和作業負荷。
  • 內部部署 Kubernetes 叢集。 附加雲端原生運算基礎 (NCF)認證的 Kubernetes 叢集,這些叢集裝載於內部部署或第三方雲端環境中。
  • Azure 原則。 部署和管理已啟用Arc的 Kubernetes 叢集原則。
  • Azure 監視器。 觀察並監視已啟用Arc的 Kubernetes 叢集。

元件

  • Azure Arc 是延伸 Azure 平臺的網橋,可讓您建置可在資料中心、邊緣和多重雲端環境中執行的應用程式和服務。
  • Azure Kubernetes Service (AKS) 是用來部署和調整 Kubernetes 叢集的受控服務。
  • Azure 原則 可讓您透過一致的資源控管大規模實現即時雲端合規性。
  • Azure 監視器 可為您的應用程式、基礎結構和網路提供端對端可檢視性。

案例詳細資料

您可以使用 Azure Arc 來註冊裝載於 Microsoft Azure 外部的 Kubernetes 叢集。 然後,您可以使用 Azure 工具來管理這些叢集,以及裝載在 Azure Kubernetes Service (AKS) 中的叢集。

潛在的使用案例

此結構的一般用法包括:

  • 管理裝載在 AKS 中的內部部署 Kubernetes 叢集和叢集,以進行清查、分組和標記。
  • 使用 Azure 監視器來監視混合式環境之間的 Kubernetes 叢集。
  • 使用 Azure 原則 在混合式環境中部署及強制執行 Kubernetes 叢集的原則。
  • 使用 Azure 原則 來部署及強制執行 GitOps。

建議

下列各節提供適用於大部分案例的建議。 除非您有覆寫它們的需求,否則 Microsoft 建議您遵循它們。

叢集註冊

您可以註冊任何作用中的NCF Kubernetes 叢集。 您需要 kubeconfig 檔案,才能存取叢集和叢集上的叢集管理員角色,以部署已啟用 Arc 的 Kubernetes 代理程式。 您可以使用 Azure 命令列介面 (Azure CLI) 來執行叢集註冊工作。 您用於 az loginaz connectedk8s connect 命令的使用者或服務主體需要 Microsoft.Kubernetes/connectedClusters 資源類型的讀取和寫入許可權。 Kubernetes 叢集 - Azure Arc 上線角色具有這些許可權,而且可用於用戶主體或服務主體的角色指派。 使用 connectedk8s 擴充功能的叢集需要 Helm 3。 需要 Azure CLI 2.3 版或更新版本,才能安裝已啟用 Azure Arc 的 Kubernetes 命令行介面延伸模組。

適用於 Kubernetes 的 Azure Arc 代理程式

已啟用 Azure Arc 的 Kubernetes 是由一些代理程式(也稱為 操作員)所組成,這些代理程式會在部署至 azure-arc 命名空間的叢集中執行:

  • deployment.apps/config-agent。 監看連線的叢集,以取得在叢集上套用的原始檔控制設定資源,並更新合規性狀態。
  • deployment.apps/controller-manager。 運算子運算子,可協調 Azure Arc 元件之間的互動。
  • deployment.apps/metrics-agent。 從其他 Arc 代理程式收集計量,以確保這些代理程式表現出最佳效能。
  • deployment.apps/cluster-metadata-operator。 收集叢集元數據、叢集版本、節點計數和 Azure Arc 代理程式版本。
  • deployment.apps/resource-sync-agent。 將先前提及的叢集元數據同步處理至 Azure。
  • deployment.apps/clusteridentityoperator。 維護其他代理程式用來與 Azure 通訊的受控服務識別 (MSI) 憑證。
  • deployment.apps/flux-logs-agent。 從部署為原始檔控制組態一部分的 flux 運算元收集記錄。
  • deployment.apps/extension-manager。 安裝及管理擴充功能 Helm 圖表的生命週期。
  • deployment.apps/kube-azure-ad-proxy。 用於使用叢集 連線 傳送至叢集的要求驗證。
  • deployment.apps/clusterconnect-agent。 反向 Proxy 代理程式,可讓叢集連線功能提供叢集 apiserver 的存取權。 這是選擇性的元件,只有在叢集上啟用叢集連線功能時,才會部署。
  • deployment.apps/guard。 用於 Microsoft Entra 角色型存取控制 (RBAC) 的驗證和授權 Webhook 伺服器。 只有在叢集上啟用 azure-rbac 功能時,才會部署的選擇性元件。

如需詳細資訊,請參閱 連線 已啟用 Azure Arc 的 Kubernetes 叢集

使用 Azure 監視器容器深入解析監視叢集

監視您的容器非常重要。 Azure 監視器容器深入解析可為 AKS 和 AKS 引擎叢集提供豐富的監視體驗。 您也可以設定 Azure 監視器容器深入解析,以監視裝載於 Azure 外部的 Azure Arc 已啟用 Kubernetes 叢集。 這樣做可讓您全面監視 Azure、內部部署和第三方雲端環境的 Kubernetes 叢集。

Azure 監視器容器深入解析可透過計量應用程式開發介面 (API) 從 Kubernetes 中取得的控制器、節點和容器收集記憶體和處理器計量,以提供效能可見度。 容器記錄也會一併收集。 從 Kubernetes 叢集啟用監視之後,Log Analytics 代理程式的容器化版本會自動為您收集計量和記錄。 計量會寫入計量存放區,而記錄數據會寫入與Log Analytics工作區相關聯的記錄存放區。 如需 Azure 監視器容器深入解析的詳細資訊,請參閱 Azure 監視器容器深入解析概觀

您可以使用PowerShell腳本或Bash腳本,為 Kubernetes 的一或多個部署啟用 Azure 監視器容器深入解析。

若要啟用已啟用 Arc 的 Kubernetes 叢集監視,請參閱 啟用 Azure Arc 的 Kubernetes 叢集監視

使用 Azure 原則 來啟用以 GitOps 為基礎的應用程式部署

使用 Azure 原則 來強制每個已啟用 GitOps 的 Microsoft.Kubernetes/connectedclusters 資源或 Microsoft.ContainerService/managedClusters 資源已套用特定的 Microsoft.KubernetesConfiguration/fluxConfigurations 例如,您可以將基準組態套用至一或多個叢集,或將特定應用程式部署到多個叢集。 若要使用 Azure 原則,請從已啟用 Azure Arc 的 Kubernetes Azure 原則 內建定義中選取定義,然後建立原則指派。

當您建立原則指派時,請將範圍設定為 Azure 資源群組或訂用帳戶。 同時設定所建立 fluxConfiguration 的參數。 建立指派時,原則引擎會識別位於範圍內的所有 connectedCluster 或 managedCluster 資源,然後將 fluxConfiguration 套用至每個資源。

如果您針對每個叢集使用多個來源存放庫(例如,中央IT/叢集操作員的一個存放庫,以及應用程式小組的其他存放庫),請使用多個原則指派來啟用此功能,並將每個原則指派設定為使用不同的來源存放庫。

如需詳細資訊,請參閱使用 Flux v2 組態和 Azure 原則 大規模部署應用程式。

使用 GitOps 部署應用程式

GitOps 是宣告來源存放庫中所需 Kubernetes 組態狀態(部署、命名空間等)的做法,例如 Git 或 Helm 存放庫、貯體或 Azure Blob 儲存體。 接著會使用運算符,輪詢和提取型部署這些組態至叢集。

叢集與一或多個來源存放庫之間的連線是藉由將 microsoft.flux 擴充功能部署到您的叢集來啟用。 fluxConfiguration 資源屬性代表 Kubernetes 資源應該從來源存放庫流向叢集的位置和方式。 fluxConfiguration 數據會以待用加密方式儲存在 Azure Cosmos DB 資料庫中,以確保數據機密性。

叢集中執行的 flux-config 代理程式會負責監看已啟用 Azure Arc 的 Kubernetes 資源上新增或更新的 fluxConfiguration 擴充資源、從來源存放庫部署應用程式,以及傳播對 fluxConfiguration 所做的任何更新。 您甚至可以在同一個已啟用 Azure Arc 的 Kubernetes 叢集上使用命名空間範圍來建立多個 fluxConfiguration 資源,以達成多租使用者。

來源存放庫可以包含任何有效的 Kubernetes 資源,包括命名空間、Config 地圖、部署和 DaemonSets。 它也可以包含 Helm 圖表來部署應用程式。 常見的來源存放庫案例包括為您的組織定義基準組態,其中包含常見的角色基底訪問控制 (RBAC) 角色和系結、監視代理程式、記錄代理程式和全叢集服務。

您也可以管理跨異質環境部署的大型叢集集合。 例如,您可以有一個存放庫來定義您組織的基準組態,然後將它同時套用至多個 Kubernetes 叢集。 您也可以從多個來源存放庫將應用程式部署到叢集。

如需詳細資訊,請參閱 使用 GitOps 搭配 Flux v2 部署應用程式。

拓撲、網路和路由

Azure Arc 代理程式需要下列通訊協定/埠/輸出 URL 才能運作:

端點 (DNS) 描述
https://management.azure.com:443 代理程式連線到 Azure 並註冊叢集的必要專案。
https://[region].dp.kubernetesconfiguration.azure.com:443 代理程式用來推送狀態和擷取組態信息的數據平面端點,其中 [region] 代表裝載 AKS 實例的 Azure 區域。
https://docker.io:443 提取容器映像的必要專案。
https://github.com:443, git://github.com:9418 GitOps 存放庫範例裝載於 GitHub 上。 組態代理程式需要連線到您指定的 Git 端點。
https://login.microsoftonline.com:443 擷取和更新 Azure Resource Manager 權杖的必要項目。
https://azurearcfork8s.azurecr.io:443 需要提取 Azure Arc 代理程式的容器映像。

如需跨 Azure Arc 服務的完整 URL 清單,請參閱 Azure Arc 網路需求

考量

這些考慮會實作 Azure Well-Architected Framework 的支柱,這是一組指導原則,可用來改善工作負載的品質。 如需詳細資訊,請參閱 Microsoft Azure Well-Architected Framework

可靠性

可靠性可確保您的應用程式可以符合您對客戶的承諾。 如需詳細資訊,請參閱 可靠性要素概觀。

  • 在大部分情況下,您在建立安裝腳本時選取的位置應該是地理位置最接近內部部署資源的 Azure 區域。 其餘的數據會儲存在 Azure 地理位置中,其中包含您指定的區域,這一事實可能會影響您選擇的區域,如果您有數據落地需求。 如果中斷會影響您的計算機所連線的 Azure 區域,中斷不會影響連線的電腦,但使用 Azure 的管理作業可能無法完成。 若要在發生區域性中斷時復原,最好是如果您有多個位置提供異地備援服務,將每個位置中的機器連線到不同的 Azure 區域。 如需可用的區域,請參閱 已啟用 Azure Arc 的 Kubernetes 支援的區域
  • 您應該確定部署 Azure Arc 的區域支援 [架構] 區段中所參考的服務。

安全性

安全性可提供針對蓄意攻擊和濫用寶貴數據和系統的保證。 如需詳細資訊,請參閱 安全性要素概觀。

  • 您可以使用 Azure RBAC 來管理跨 Azure 和使用 Microsoft Entra 身分識別的內部部署環境,存取已啟用 Azure Arc 的 Kubernetes。 如需詳細資訊,請參閱 使用適用於 Kubernetes 授權的 Azure RBAC。
  • Microsoft 建議您使用具有有限許可權的服務主體,將 Kubernetes 叢集上線至 Azure Arc。這種做法適用於 CI/CD 管線,例如 Azure Pipelines 和 GitHub Actions。 如需詳細資訊,請參閱 建立已啟用 Azure Arc 的上線服務主體
  • 若要簡化服務主體管理,您可以在 AKS 中使用受控識別。 不過,必須使用受控識別來建立叢集,而且現有的叢集(包括 Azure 和內部部署叢集)無法移轉至受控識別。 如需詳細資訊,請參閱在 Azure Kubernetes Service 中使用受控識別 \(部分機器翻譯\)。

成本最佳化

成本優化是考慮如何減少不必要的費用,並提升營運效率。 如需詳細資訊,請參閱 成本優化要素概觀。

一般成本考慮會在 Microsoft Azure 架構良好架構中的成本優化 原則一節中說明。

卓越營運

卓越營運涵蓋部署應用程式的作業程式,並讓它在生產環境中執行。 如需詳細資訊,請參閱 營運卓越支柱概觀。

  • 設定已啟用 Azure Arc 的 Kubernetes 叢集之前,請先檢閱 Azure Resource Manager 訂用帳戶限制 和資源 群組限制 ,以規劃叢集數目。
  • 使用開放原始碼封裝工具 Helm 來安裝和管理 Kubernetes 應用程式生命週期。 類似於 APT 和 Yum 等 Linux 套件管理員,您可以使用 Helm 來管理 Kubernetes 圖表,這些圖表是預先設定 Kubernetes 資源的套件。

參與者

本文由 Microsoft 維護。 原始投稿人如下。

主體作者:

若要查看非公用LinkedIn配置檔,請登入LinkedIn。

下一步

相關的混合式指引:

相關架構: