在雲原生應用開發中,Kubernetes 已是容器編排的標準,但其管理複雜性是一大挑戰。Azure Kubernetes Service (AKS) 作為託管服務,旨在簡化此流程,將控制平面的維護責任轉移至雲端。本篇從技術實踐角度,闡述如何建立從程式碼到生產環境的完整工作流。內容涵蓋 AKS 叢集的基礎建置,並深入探討如何與 Azure Pipelines 整合,打造自動化的持續整合與持續部署(CI/CD)管道。此外,有效的監控是確保服務可靠性的基石,文章將分析如何運用原生工具與 Azure Monitor 等整合服務,對部署於 AKS 的應用程式進行全面的效能與健康狀態監控,形成一個穩健的開發維運閉環。
Azure Kubernetes Service (AKS) 實踐:部署、管理與監控
深入解析 Azure Kubernetes Service (AKS) 的創建與配置,學習如何將本地 Helm Chart 或應用程式部署到 AKS,並透過 Azure Pipelines 構建完整的 CI/CD 流程,同時探討 Kubernetes 應用程式的監控策略與工具
本節將聚焦於 Azure Kubernetes Service (AKS) 的實踐應用。我們將詳細介紹如何創建和配置 AKS 叢集,包括與 Azure Container Registry (ACR) 的整合,以及如何配置 kubeconfig 文件以連接到 AKS。隨後,我們將探討 AKS 的優勢,並著重於如何利用 Azure Pipelines 構建一個完整的 CI/CD 流程,實現應用程式的自動化部署到 AKS。最後,我們將深入了解 Kubernetes 應用程式的監控方法,包括使用 kubectl、Kubernetes Dashboard 以及其他監控工具。
Azure Kubernetes Service (AKS) 的創建與配置
AKS 是 Azure 提供的一項託管 Kubernetes 服務,它簡化了在 Azure 中部署、管理和擴展容器化應用程式的過程。
- 
AKS 的優勢: - 託管控制平面: Azure 負責 AKS 控制平面的部署、管理和維護,減輕了用戶的負擔。
- 簡化部署與管理: 提供簡單的 API 和工具來部署和管理 Kubernetes 叢集。
- 自動擴展: 支援節點自動擴展,根據工作負載需求自動調整節點數量。
- 整合 Azure 服務: 與 Azure Container Registry (ACR)、Azure Monitor、Azure Active Directory (Azure AD) 等服務無縫整合。
- 安全性: 提供諸如 Azure AD 整合、網絡策略、節點隔離等安全特性。
 
- 
創建 AKS 服務: - Azure CLI: 使用 Azure CLI 是創建 AKS 叢集最常見和靈活的方式。
az group create --name myResourceGroup --location eastus # 創建資源組 az aks create --resource-group myResourceGroup --name myAKSCluster --node-count 1 --enable-addons monitoring --generate-ssh-keys- --resource-group: 指定叢集所在的資源組。
- --name: AKS 叢集的名稱。
- --node-count: 初始化節點的數量。
- --enable-addons monitoring: 啟用 Azure Monitor for containers。
- --generate-ssh-keys: 自動生成 SSH 密鑰用於節點訪問。
 
- Azure Portal: 也可以通過 Azure 入口網站的可視化界面創建 AKS 叢集。
 
- Azure CLI: 使用 Azure CLI 是創建 AKS 叢集最常見和靈活的方式。
- 
配置 kubeconfig文件:- kubectl是與 Kubernetes 叢集交互的命令行工具。它需要一個- kubeconfig文件來獲取叢集的訪問憑證和 API 端點。
- 獲取 AKS 的 kubeconfig:此命令會自動下載 AKS 叢集的憑證,並將其合併到您的本地az aks get-credentials --resource-group myResourceGroup --name myAKSCluster~/.kube/config文件中。
- 驗證連接:
如果命令成功返回 AKS 節點列表,則表示連接成功。kubectl get nodes
 
- 
與 Azure Container Registry (ACR) 整合: - 目的: 將構建好的 Docker 映像檔存儲在 ACR 中,然後 AKS 可以從 ACR 拉取這些映像檔來部署應用程式。
- 創建 ACR:
az acr create --resource-group myResourceGroup --name myACRName --sku Basic
- 將 AKS 叢集連接到 ACR:
這會配置 AKS 的服務主體,使其擁有從 ACR 拉取映像檔的權限。az aks update --resource-group myResourceGroup --name myAKSCluster --attach-acr myACRName
 
Azure Pipelines CI/CD 流程 for AKS
將 CI/CD 流程整合到 AKS 部署,可以實現應用程式的自動化構建、測試和部署。
- 
CI/CD 管道設計: - CI 階段:
- 從 Git 倉庫獲取程式碼。
- 構建 Docker 映像檔。
- 將映像檔推送到 ACR。
- (可選)運行單元測試。
 
- CD 階段:
- 觸發部署任務。
- 使用 kubectl或 Helm 將應用程式部署到 AKS 叢集。
- (可選)運行整合測試或端到端測試。
- (可選)執行滾動更新或藍綠部署。
 
 
- CI 階段:
- 
Azure Pipelines 配置: - 服務連接: 在 Azure Pipelines 中創建一個 Kubernetes 服務連接,指向您的 AKS 叢集。通常需要一個服務主體或託管身份。
- ACR 服務連接: 創建一個 Azure Container Registry 服務連接,以便管道能夠推送映像檔。
- YAML 管道: 定義 CI/CD 流程的 YAML 文件。
- 構建任務: 使用 Docker@2任務來構建和推送映像檔到 ACR。
- 部署任務: 使用 Kubernetes@1任務來部署到 AKS,可以執行kubectl apply或helm upgrade命令。
 
- 構建任務: 使用 
 
- 
部署策略: - kubectl apply: 直接使用 Kubernetes YAML 文件進行部署。
- Helm: 使用 Helm Chart 來部署和管理應用程式。這是一種更推薦的方式,因為它提供了更好的包管理和配置靈活性。
- 在管道中,可以先打包自定義 Chart,然後使用 helm upgrade --install命令部署到 AKS。
 
- 在管道中,可以先打包自定義 Chart,然後使用 
 
Kubernetes 應用程式監控
有效的監控是確保 Kubernetes 應用程式穩定運行和性能的關鍵。
- 
使用 kubectl:- 查看 Pod 狀態: kubectl get pods
- 查看 Pod 日誌: kubectl logs <pod-name>
- 查看節點狀態: kubectl get nodes
- 查看資源使用情況: kubectl top pods和kubectl top nodes(需要啟用 Metrics Server)。
 
- 查看 Pod 狀態: 
- 
Kubernetes Dashboard: - 提供了一個 Web UI,用於可視化查看叢集狀態、部署、 Pods、 Services 等資源。
- 可以直觀地監控資源使用情況、 Pod 健康狀態和部署進度。
 
- 
Azure Monitor for containers: - AKS 整合了 Azure Monitor,可以收集容器的性能指標、日誌和事件。
- 提供儀表板來展示 CPU、記憶體使用率、網絡流量等關鍵指標。
- 支援日誌分析和告警設置。
 
- 
其他監控工具: - Prometheus & Grafana: 業界標準的開源監控解決方案,常與 Kubernetes 結合使用,提供強大的指標收集和可視化能力。
- ELK Stack (Elasticsearch, Logstash, Kibana): 用於集中式日誌收集、處理和分析。
 
AKS 部署與監控流程圖示
@startuml
!define DISABLE_LINK
!define PLANTUML_FORMAT svg
!theme _none_
skinparam dpi auto
skinparam shadowing false
skinparam linetype ortho
skinparam roundcorner 5
skinparam defaultFontName "Microsoft JhengHei UI"
skinparam defaultFontSize 16
skinparam minClassWidth 100
start
partition "AKS 應用部署與監控" {
  partition "AKS 環境設置" {
    :1. 創建 Azure 資源組;
    :2. 創建 AKS 叢集 (`az aks create`);
    :3. 創建 Azure Container Registry (ACR);
    :4. 配置 AKS 與 ACR 整合;
    :5. 獲取 AKS kubeconfig (`az aks get-credentials`);
  }
  partition "CI/CD 管道 (Azure Pipelines)" {
    partition "CI 階段" {
      :6. 程式碼提交觸發管道;
      :7. 構建 Docker 映像檔;
      :8. 推送映像檔到 ACR (`Docker@2` 任務);
    }
    partition "CD 階段" {
      :9. 觸發部署任務;
      :10. 使用 Helm 或 kubectl 部署到 AKS (`Kubernetes@1` 任務);
      :11. 部署應用程式 Chart/YAML 到 AKS;
    }
  }
  partition "應用程式監控" {
    partition "監控工具" {
      :kubectl (`get pods`, `logs`, `top`);
      :Kubernetes Dashboard (UI);
      :Azure Monitor for containers;
      :Prometheus & Grafana;
      :ELK Stack (日誌);
    }
    :12. 監控 Pod 狀態與資源使用;
    :13. 收集應用程式日誌與指標;
    :14. 設置告警與閾值;
  }
}
stop
@enduml看圖說話:
此圖示全面展示了在 Azure Kubernetes Service (AKS) 上部署和監控應用程式的完整流程。開頭的「AKS 環境設置」部分,清晰地列出了創建 AKS 叢集、ACR 以及配置連接所需的關鍵步驟。接著,「CI/CD 管道 (Azure Pipelines)」部分,將流程細分為 CI 和 CD 兩個階段,詳細說明了如何通過 Azure Pipelines 自動化構建映像檔、推送到 ACR,以及最終部署到 AKS。圖示的核心是「應用程式監控」部分,它匯總了多種監控工具,包括 kubectl、Kubernetes Dashboard、Azure Monitor、Prometheus/Grafana 和 ELK Stack,強調了從 Pod 狀態到日誌和指標的全方位監控策略。這張圖為理解和實踐 AKS 上的應用部署與運維提供了一個清晰的路線圖。
縱觀現代管理者的多元挑戰,採納以 Azure Kubernetes Service (AKS) 為核心的雲原生實踐,不僅是單純的技術架構升級,更是對組織研發與維運績效框架的系統性重塑。其整合價值並非體現在單獨的叢集建置,而在於將 CI/CD 自動化管道與全方位監控融合成一個高效的反饋閉環。然而,實踐中的關鍵瓶頸往往不在於技術指令的掌握,而在於團隊思維的轉變——從傳統分工過渡到 DevOps 協作文化,以及克服 Kubernetes 內在複雜性所帶來的學習曲線。將此自動化與監控體系視為核心產品進行投資,而非事後附加功能,才是釋放其全部績效潛力的關鍵。
展望未來二至三年,技術焦點將從「部署自動化」轉向「維運智能化」。AIOps 與監控體系的深度整合,將透過預測性擴展與自動化異常修復,把系統效能與穩定性推升至全新層次。
玄貓認為,這套實踐框架是提升團隊績效與商業敏捷性的關鍵投資,值得追求技術卓越的管理者優先佈局。
 
            