在雲原生應用開發中,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 與監控體系的深度整合,將透過預測性擴展與自動化異常修復,把系統效能與穩定性推升至全新層次。
玄貓認為,這套實踐框架是提升團隊績效與商業敏捷性的關鍵投資,值得追求技術卓越的管理者優先佈局。