Microsoft AZ-400: 容器化與 Kubernetes — 學習指南
屬於 Microsoft DevOps Engineer Expert AZ-400 — 學習指南. 使用經過驗證的解答練習: Microsoft 考試中心, 或參加限時模擬考試: ExamRoll.io.
總覽
在 Azure 上,容器化與 Kubernetes 透過結合可重現的建置、安全的分發,以及宣告式、自我修復的執行階段編排,奠定了現代 DevOps 的基礎。要精通此領域,需要理解映像檔如何組建與優化、登錄檔如何複寫與驗證內容、AKS 如何在不中斷服務的情況下設計與升級、漸進式交付如何實作,以及如何端對端地保護工作負載。除了原生的 Kubernetes,您還將利用 Helm 進行封裝、使用 GitOps 進行協調,並在無伺服器領域中,運用 Azure Container Apps 搭配 Dapr 和 KEDA 來簡化微服務模式與事件驅動的擴展。以下章節將提煉出您需要知道的平台決策與維運實務,以實作出強健且合規的管線,以及具備韌性的生產環境叢集。
建置與登錄檔基礎:Docker 與 ACR
一個高效能的容器映像檔,始於一個確定性的 Dockerfile 與有紀律的建置情境。多階段建置讓您可以將充滿工具鏈的編譯階段與精簡的執行階段映像檔分開。例如,在一個建置者階段編譯 .NET 或 Go 的二進位檔,然後只將編譯好的成品複製到一個 distroless 或最小化的基礎映像檔中 (例如 mcr.microsoft.com/dotnet/runtime-deps 或 gcr.io/distroless/base),從而產生更小的攻擊面與更快的拉取時間。每一個 RUN、COPY 和 ADD 指令都會建立一個圖層;請重構 Dockerfile,將較不常變動的步驟放在後面,並在維持可讀性的前提下,透過邏輯分組來彙總指令,以最大化圖層快取的命中率。務必包含一個 .dockerignore 檔案來排除 bin/obj、node_modules、測試、文件和密鑰;過大的建置情境會減慢上傳速度,並降低遠端快取的有效性。請謹慎使用確定性的套件安裝 (版本釘選、鎖定檔案) 與建置參數;特定於環境的檔案應透過執行階段組態傳入,而非寫死在不可變的映像檔中。
Azure Container Registry (ACR) 是映像檔儲存與分發的核心骨幹。善用 ACR Tasks 將建置工作卸載至 Azure:用於隨需建置的快速任務 (az acr run)、由 Git commit、基礎映像檔更新或排程觸發的自動化任務,以及使用 Buildx 為多架構映像檔設計的多步驟任務 YAML。異地複寫 (Premium SKU) 能將成品鏡像至不同區域,為多區域的 AKS/ACA 部署最小化拉取延遲與出口成本;請結合私人端點與儲存庫範圍的 RBAC,以實踐最低權限原則。啟用內容信任以簽署映像檔並驗證其來源:Docker Content Trust/Notary 與演進中的 OCI 簽章生態系統 (例如 cosign) 可透過 OPA Gatekeeper 的約束,在准入階段強制執行,要求受保護的命名空間必須使用具備簽章的映像檔。整合弱點掃描:Microsoft Defender for Cloud 會在映像檔推送時與靜態儲存時進行掃描,揭露 CVEs 並提供修復指南,且能透過 Azure Policy 與 CI 檢查來把關部署;請納入基礎映像檔更新自動化,以減少已知的弱點圖層。
AKS 平台與工作負載交付
建立 AKS 叢集時採用預設安全的設定:受控識別、整合 Azure AD 以實現 RBAC、使用 Azure CNI 進行 VNET 整合、網路原則 (Azure 或 Calico)、用於密鑰取用的 Azure Key Vault 提供者 (Secrets Store CSI),以及具備授權 IP 範圍的私有叢集。選擇適合工作負載的節點集區:用於控制平面關鍵元件的系統集區;用於應用程式的使用者集區;用於機器學習的 GPU 集區;用於節省成本的無狀態作業的 Spot 集區;用於 Windows 容器的 Windows 節點集區。使用污點/容忍 (taints/tolerations) 與拓撲分佈約束 (topology spread constraints) 來控制排程與彈性。透過叢集自動擴展器 (cluster autoscaler) 與每個部署的 Horizontal Pod Autoscaler 進行自動擴展;考慮使用暫時性 OS 磁碟與可用性區域以提升效能與彈性。
規劃升級以將中斷降至最低。AKS 會先升級控制平面,然後再升級節點集區。在節點集區升級時使用 max-surge 來增加突增容量、優雅地清空節點,並遵循 PodDisruptionBudgets。採用自動升級通道 (快速/穩定/僅修補) 以獲得可預測的節奏;將系統與使用者集區
Azure 上的開發者生產力與無伺服器容器
AKS DevOps 整合工具能簡化開發的內部迴圈 (inner loop)。Draft 會偵測語言框架並搭建 Dockerfile、Helm chart 和啟動設定,從而加速容器化過程。Bridge to Kubernetes 會將來自線上叢集的服務呼叫重新導向到您的本地工作站,讓您可以在本地疊代和偵錯單一微服務,而其餘服務則在叢集中使用真實資料和依賴項運行。Azure Dev Spaces 已被淘汰;Bridge to Kubernetes 是受支援的本地開發體驗,並與 VS Code 和 Visual Studio 整合。
Azure Container Apps (ACA) 為微服務和作業提供了一個無伺服器、全代管的執行環境,無需管理 Kubernetes。每次部署都會建立一個修訂版本;您可以透過單一指令或 YAML 變更,依百分比將流量路由到不同修訂版本,以實現藍綠部署或金絲雀式發布。原生 Dapr 整合無需客製化的底層實作即可啟用服務叫用、發布/訂閱、繫結、狀態儲存和密鑰;可插拔的元件(例如 Azure Service Bus、Key Vault、Cosmos DB)可加速實現跨服務的一致性功能。KEDA 根據 HTTP 並行性以及超過 60 種擴展器 (scaler)(如 Azure Queue/Service Bus、Kafka、Prometheus、自訂)來驅動事件驅動的自動擴展,並可擴展至零以實現成本效益。使用 ACA 環境進行網路隔離和 VNET 整合,透過受控識別連接 ACR,並透過 containerapps YAML 管理設定,以維持與 GitOps 實踐的宣告式一致性。
實際問題情境
Adobe 需要將一個多區域的客戶分析服務現代化,在降低發布風險的同時,加強供應鏈和執行階段的安全性。團隊必須標準化建置流程、自動化安全發布,並確保在美國和歐盟地區能夠快速且合規地交付。
- 為所有服務實作多階段 Dockerfile 和 .dockerignore
- 原因:最小化映像檔大小和攻擊面,提高建置快取命中率,並防止意外將密鑰或大型測試資產包含在映像檔中。
- 使用 ACR Tasks 建置並簽署映像檔,然後推送到地理複寫的 ACR
- 原因:雲端建置消除了本地差異;基礎映像檔更新觸發器可減少 CVE 曝險。Premium ACR 的地理複寫功能將成品與 AKS 叢集部署在同一位置,從而減少延遲和出口流量。簽署則能提供來源證明。
- 啟用 Defender for Cloud 映像檔掃描,並透過 CI 閘門和 OPA Gatekeeper 強制執行
- 原因:在推送時和靜態時掃描能及早發現 CVE。Gatekeeper 約束會強制執行「僅限核准的登錄庫」、「要求簽署的映像檔」和資源限制等政策,防止不安全的工作負載被准入。
- 在每個區域配置帶有 Azure CNI、網路原則和受控識別的私有 AKS 叢集
- 原因:私有端點限制了控制平面的曝險;Azure CNI 與企業 VNET 整合;網路原則限制了橫向移動;受控識別消除了密鑰擴散的問題。
- 建立獨立的系統和使用者節點池,並為批次作業增加 Spot 節點池
- 原因:隔離關鍵的平台 Pod,為非關鍵工作負載提供具成本效益的容量,並簡化升級和 SLO 管理。
- 採用 Helm 進行封裝,將 chart 儲存在 ACR (OCI) 中,並透過 Azure Pipelines 部署
- 原因:實現一致、版本化的發布,並為每個環境設定不同的 values。Pipelines 在執行 helm upgrade 前會先運行
undefined
、
undefined
和
undefined
,並使用 Kubernetes 服務連線來指定目標叢集。
- 部署 Flux v2 進行 GitOps 的協調和漂移偵測,並整合 Flagger 進行金絲雀部署
- 原因:宣告式、基於拉取 (pull-based) 的同步減少了 CI 中的憑證需求並確保收斂。Flagger 會根據 NGINX Ingress 指標自動化針對 SLO 的加權金絲雀部署,並在發生錯誤或延遲飆升時自動回滾。
- 設定帶有 PDB (Pod 中斷預算) 和 readiness/startup 探測的滾動更新;對高風險元件使用藍綠部署
- 原因:滾動更新能維持容量;探測能保護使用者流量。透過在 Service 上切換標籤來實現藍綠部署,可對 API 閘道器等高風險元件進行即時回滾。
- 導入 Istio 服務網格,採用嚴格的 mTLS、重試和超時機制;將遙測資料匯出到 Application Insights
- 原因:實現網格範圍的加密、強健的流量策略和一致的可觀察性。OpenTelemetry 收集器會將追蹤/指標傳送到一個中央儲存庫,用於 SLO 監控和事件分類。
- 建立受控的升級策略,包含 AKS 自動升級通道和節點映像檔升級
- 原因:定期、可預測的平台更新可減少零時差攻擊的曝險。Max-surge 和 PDB 確保最小的中斷;獨立升級使用者節點池可限制爆炸半徑。
- 使用 Bridge to Kubernetes 進行內部迴圈開發;使用 Draft 建立鷹架
- 原因:開發人員可以在本地針對叢集內的依賴項進行偵錯,無需進行模擬。Draft 加速了跨團隊的一致性容器化和 Helm 鷹架的建立。
- 將長尾服務卸載到帶有 Dapr 和 KEDA 的 Azure Container Apps
- 原因:事件驅動、可擴展至零的微服務(例如攝取和擴充服務)能以低成本運行,並內建用於金絲雀部署的流量分割功能;Dapr 元件標準化了服務對服務的呼叫和發布/訂閱,無需撰寫客製化程式碼。
這個端到端的設計將建置的確定性與安全的分發、宣告式的操作以及漸進式交付結合起來,為 Adobe 提供了快速、低風險的發布能力,以及跨區域的強化執行環境。
← 基礎設施即程式碼與組態管理 · 所有領域 · 發行管理與部署策略 →
練習這些題目 → · 在 ExamRoll.io 上限時練習 →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
通過考試 →