在將範例網頁應用程式遷移到 Azure 之前,務必對 AWS 與 Azure 平台的操作差異有紮實的理解。
本文將介紹這些工作量的一些關鍵概念,並提供更多資源連結以獲取更多資訊。 欲全面比較 Azure 與 AWS 服務,請參見 AWS 與 Azure 服務比較。
部署
AKS 和 EKS 都提供多種選項,讓 Azure 和 AWS 上部署受管 Kubernetes 叢集。 這些選項包括基於第三方系統或開源技術的原生解決方案與配置解決方案。
| 部署選項 | EKS | AKS |
|---|---|---|
| Portal | AWS 管理控制台 | Azure 入口網站 |
| 原生基礎設施即程式碼 | AWS CloudFormation | Bicep 與 Azure 資源管理器(ARM) |
| 原生CLI | AWS CLI 與 EKS CLI | Azure CLI, Azure Developer CLI, and PowerShell |
| Terraform | EKS模組 | AzureRM 提供者 |
| Pulumi | EKS 群組 | AKS ManagedCluster |
| Crossplane | 是的 | 是的 |
| 叢集 API | 是的 | 是的 |
Azure CLI 的設計注重簡便與易用性。 你可以用一個指令建立、升級或刪除叢集。 這種簡化的方式降低了在 Azure 上管理 Kubernetes 叢集的複雜度。 欲了解更多資訊,請參閱 az aks 指令。 相較之下,EKS CLI 採用較手動的方式,需多步驟配合使用 kubectl。
監測
有效的監控對於識別並解決 Kubernetes 叢集中的問題至關重要。 以下資訊說明了AKS與EKS如何進行監控:
| 監控選項 | EKS | AKS |
|---|---|---|
| 原生監控 | 亞馬遜 CloudWatch | Azure 監視器 |
| 管理普羅米修斯與格拉法納 | Amazon 管理的 Prometheus 服務 與 Amazon 管理的 Grafana | 適用於 Prometheus 的 Azure 監視器受管理服務和 Azure 受控 Grafana |
| Datadog | 是的 | 是的 |
| Dynatrace | 是的 | 是的 |
支援開源專案
AKS 與 EKS 皆支援開源專案,讓您能運用更多功能與功能。 AKS 為 KEDA 與 Karpenter 提供以下詳細說明的託管能力。
| 開源專案 | EKS | AKS |
|---|---|---|
| Kubernetes 事件驅動自動縮放(KEDA) | 是的 | 是的 |
| 卡彭特 | 是的 | 節點自動配置 與 AKS Karpenter 供應商 |
負載平衡
Azure Application Gateway for Containers 與 AWS Application Load Balancer 是 Microsoft Azure 與 Amazon Web Services 分別提供的兩款熱門第七層負載平衡解決方案。 這些服務在將進來的網路流量分配到多台伺服器上扮演關鍵角色,以確保應用程式的高可用性與效能提升。
AWS 應用程式負載平衡器
AWS 應用負載平衡器(ALB)是亞馬遜網路服務(AWS)中彈性負載平衡的一個元件。 ALB 確保流量僅導向健康的目標物,並隨著流量的增加而擴展。 它支援多種負載平衡器,包括應用負載平衡器、網路負載平衡器、閘道器及經典負載平衡器。
適用於容器的 Azure 應用程式閘道
Azure Application Gateway for Containers 是一款第 7 層網頁流量區域負載平衡器,讓客戶能管理多個下游網頁應用程式及 REST API 的入站流量。 Azure 容器應用閘道旨在優化網頁應用程式的交付,並透過如 Azure 網頁應用程式防火牆 為 Azure Kubernetes Service (AKS) 等功能來增強安全性。 它將進來的應用程式流量分配到多個後端池,包括公有與私有的 Azure 負載平衡器、Azure 虛擬機(VM)、Azure 虛擬機規模集(VMSS)、主機名稱、Azure App Service 以及本地/外部伺服器。
比較 Azure Application Gateway for Containers 與 AWS ALB
Azure Application Gateway 與 AWS Application Load Balancer 提供相當的功能集。 下表為解決方案提供比較:
| Feature | Azure Application Gateway for Containers | AWS 應用程式負載平衡器 |
|---|---|---|
| 安全套接層(SSL/TLS)終止 | Supported | Supported |
| Autoscaling | Supported | Supported |
| 區域備援 | Supported | Supported |
| Web 應用程式防火牆 | Supported | Supported |
| 入口控制器 | Supported | Supported |
| URL 型路由 | Supported | Supported |
| 多網站裝載 | Supported | Supported |
| Redirection | Supported | Supported |
| 工作階段親和性 | Supported | Supported |
| WebSocket 與 HTTP/2 流量 | Supported | Supported |
| 雙向 TLS 驗證 | Supported | Supported |
| 清空連線 | Supported | Supported |
| 重寫 HTTP 標頭和 URL | Supported | 支援 AWS WAF |
Web 應用程式防火牆
確保網頁應用程式的安全對於防範不斷演變的網路威脅至關重要。 完全託管的網路應用防火牆服務為網路應用程式提供強大的防護,防止威脅與惡意攻擊。
AWS 網路存取防火牆(WAF)
AWS 網頁存取防火牆(WAF) 是一種網頁應用程式防火牆,用來監控對您網頁應用程式的 HTTP 和 HTTPS 請求。 它保護多個 AWS 資源,包括透過 AWS 應用負載平衡器(AWS)暴露的資源。
Azure Web 應用程式防火牆 (WAF)
Azure Web Application Firewall(WAF) 提供集中式保護網路應用程式,防止常見的漏洞與漏洞。 WAF 可透過 Microsoft 的 Azure Application Gateway for Containers、 Azure Front Door 及 Azure Content Delivery Network(CDN) 服務部署。
Azure WAF 內建預設、平台管理的 OWASP(Open Web Application Security Project)規則集 ,能防範各種攻擊,包括跨站腳本與 SQL 注入。 作為 WAF 管理員,您可以自行撰寫 自訂規則 ,以強化核心規則集(CRS)規則。 Azure WAF 也支援 一套機器人防護規則集 ,你可以用來防止惡意機器人爬取、掃描並尋找你網頁應用程式中的漏洞。 Azure WAF 可配置為以下兩種模式:
- 偵測模式:監控並記錄所有威脅警報。 您可以在「診斷」區段中啟用「適用於容器的應用程式閘道」的記錄診斷功能。 您也必須確保已選取並開啟 WAF 記錄。 網頁應用程式防火牆在偵測模式下不會阻擋來電請求。
- 預防模式:阻擋規則偵測到的入侵與攻擊。 攻擊者會收到「403 未經授權存取」例外狀況,且連線會關閉。 預防模式會將這類攻擊記錄在 WAF 記錄中。
Azure Web 應用程式防火牆 (WAF) 監視與記錄是透過記錄來提供,以及透過與 Azure 監視器及 Azure 監視器記錄整合來提供。 你可以將 Azure Application Gateway for Containers、 Azure Front Door 和 Azure Content Delivery Network(CDN) 配置為使用 Azure Web Application Firewall(WAF), 並將診斷日誌和指標儲存到 Log Analytics 工作空間。 你可以使用 Azure Monitor Metrics Explorer 分析 Azure WAF 指標,並使用 Kusto 查詢語言 ,針對 Log Analytics 工作區收集的診斷日誌建立並執行查詢。
後續步驟
欲了解更多AKS與EKS差異的資訊,請參閱以下文章:
- 從 Amazon EKS 遷移到 Azure Kubernetes Service (AKS)
- 適用於 Amazon EKS 專業人員的 AKS
- 身分識別和存取管理
- 叢集記錄和監視
- 安全網路拓撲
- 儲存體選項
- 成本優化和管理
- 代理程式節點和節點集區管理
- 叢集治理
- 工作負載移轉
貢獻者們
本文由 Microsoft 維護。 本書最初由以下貢獻者撰寫:
主要作者:
- Paolo Salvatori |首席客戶工程師
其他貢獻者:
- 肯·基爾蒂 | 首席技術計劃經理
- Russell de Pina | 首席 TPM
- Erin Schaffer | 內容開發人員 2