Kubernetes 工具生態系完整指南:Helm、Argo CD、監控工具一次搞懂

Kubernetes 工具生態系完整指南:Helm、Argo CD、監控工具一次搞懂
Kubernetes 本身只是基礎。真正的威力來自周邊的工具生態系。
Helm、Argo CD、Prometheus⋯⋯這些工具讓 Kubernetes 從「能用」變成「好用」。
這篇文章會介紹 Kubernetes 生態系中最重要的工具,幫你建立完整的工具鏈。
Kubernetes 的基本介紹,請參考 Kubernetes 完整指南。
工具生態系總覽
Kubernetes 生態系可以分成幾大類:
| 類別 | 用途 | 代表工具 |
|---|---|---|
| 套件管理 | 打包和部署應用 | Helm、Kustomize |
| CI/CD | 持續整合和部署 | Argo CD、Flux、Tekton |
| 監控 | 指標和告警 | Prometheus、Grafana |
| 日誌 | 日誌收集和分析 | ELK、Loki |
| 服務網格 | 服務間通訊 | Istio、Linkerd |
| 安全 | 安全掃描和政策 | Falco、OPA |
CNCF Landscape:
CNCF(Cloud Native Computing Foundation)維護了一個完整的雲原生工具地圖,包含超過 1,000 個專案。不用全部學,挑重要的就好。
Helm:套件管理
Helm 是 Kubernetes 的「套件管理工具」,就像 apt 之於 Ubuntu,npm 之於 Node.js。
為什麼需要 Helm
問題:YAML 太多了
一個應用可能需要:
- Deployment
- Service
- ConfigMap
- Secret
- Ingress
- PVC
- ...
每個環境(dev、staging、prod)的設定還不一樣。
Helm 的解法:
| 功能 | 說明 |
|---|---|
| 打包 | 把多個 YAML 包成一個 Chart |
| 參數化 | 用 values.yaml 管理設定 |
| 版本控制 | 追蹤每次部署的版本 |
| 回滾 | 一鍵回到上個版本 |
核心概念
Chart: 一個 Helm 套件,包含應用程式的所有 K8s 資源定義
Release: Chart 安裝到叢集的一個實例
Repository: 存放 Chart 的地方
結構:
my-chart/
├── Chart.yaml # Chart 的元資料
├── values.yaml # 預設的設定值
├── templates/ # K8s 資源模板
│ ├── deployment.yaml
│ ├── service.yaml
│ └── ingress.yaml
└── charts/ # 相依的 Chart
基本操作
安裝 Helm:
# macOS
brew install helm
# Windows
choco install kubernetes-helm
使用現有 Chart:
# 新增 repository
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
# 搜尋 Chart
helm search repo nginx
# 安裝 Chart
helm install my-nginx bitnami/nginx
# 查看安裝的 Release
helm list
# 升級
helm upgrade my-nginx bitnami/nginx --set replicaCount=3
# 回滾
helm rollback my-nginx 1
# 解除安裝
helm uninstall my-nginx
建立自己的 Chart
# 建立新 Chart
helm create my-app
修改 values.yaml:
# values.yaml
replicaCount: 3
image:
repository: my-app
tag: "1.0"
pullPolicy: IfNotPresent
service:
type: ClusterIP
port: 80
ingress:
enabled: true
hosts:
- host: my-app.example.com
paths:
- path: /
pathType: Prefix
resources:
limits:
cpu: 500m
memory: 256Mi
requests:
cpu: 250m
memory: 128Mi
在模板中使用:
# templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}
spec:
replicas: {{ .Values.replicaCount }}
template:
spec:
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
resources:
{{- toYaml .Values.resources | nindent 12 }}
安裝自己的 Chart:
# 安裝
helm install my-release ./my-app
# 用不同的 values 安裝
helm install my-release ./my-app -f production-values.yaml
# 或用 --set 覆蓋
helm install my-release ./my-app --set replicaCount=5
Helm vs Kustomize
| 項目 | Helm | Kustomize |
|---|---|---|
| 方式 | 模板化 | 疊加修改 |
| 學習曲線 | 中等 | 較低 |
| 生態系 | 大量現成 Chart | 較少 |
| 適合 | 複雜應用、多環境 | 簡單修改 |
建議: 兩者可以搭配使用。用 Helm 管理外部應用,用 Kustomize 做環境差異化。
插圖:VS Code 編輯器畫面
場景描述: VS Code 編輯器畫面,左側檔案樹顯示 Helm Chart 的目錄結構包含 Chart.yaml、values.yaml、templates 資料夾,右側顯示 values.yaml 的內容,使用深色主題。需要顯示的中文字:無
視覺重點:
- 主要內容清晰呈現
必須出現的元素:
- 依據描述中的關鍵元素
需要顯示的中文字: 無
顏色調性: 專業、清晰
避免元素: 抽象圖形、齒輪、發光特效
Slug:
helm-chart-structure
CI/CD 工具
把程式碼變成運行中的應用,需要 CI/CD 流程。
GitOps 概念
GitOps 是一種部署方式:
- Git 是唯一的真實來源
- 所有變更都透過 Git
- 自動同步到叢集
傳統 CI/CD vs GitOps:
| 項目 | 傳統 CI/CD | GitOps |
|---|---|---|
| 觸發 | CI 推送到叢集 | 叢集拉取 Git |
| 安全 | CI 需要叢集存取權 | 叢集只需要 Git 存取權 |
| 審計 | 散落各處 | Git 完整記錄 |
| 回滾 | 重跑 pipeline | git revert |
Argo CD
Argo CD 是最受歡迎的 GitOps 工具。
核心功能:
| 功能 | 說明 |
|---|---|
| Git 同步 | 自動把 Git 狀態同步到叢集 |
| 視覺化 | 漂亮的 Web UI |
| 多叢集 | 管理多個 K8s 叢集 |
| 回滾 | 一鍵回到任何版本 |
安裝 Argo CD:
# 建立 namespace
kubectl create namespace argocd
# 安裝
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
# 取得初始密碼
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
# 存取 UI
kubectl port-forward svc/argocd-server -n argocd 8080:443
建立 Application:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: my-app
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/myorg/my-app.git
targetRevision: HEAD
path: k8s
destination:
server: https://kubernetes.default.svc
namespace: production
syncPolicy:
automated:
prune: true
selfHeal: true
Flux
Flux 是另一個 GitOps 工具,由 CNCF 維護。
與 Argo CD 比較:
| 項目 | Argo CD | Flux |
|---|---|---|
| UI | 內建,功能完整 | 需要另外安裝 |
| 多叢集 | 較簡單 | 需要額外設定 |
| Helm 支援 | 好 | 原生支援 |
| 社群 | 較大 | 較小但活躍 |
選擇建議: 初學者或需要 UI 選 Argo CD,深度整合 Helm 選 Flux。
Tekton
Tekton 是 Kubernetes 原生的 CI/CD 框架。
特點:
- 完全運行在 K8s 上
- 用 CRD 定義 Pipeline
- 高度可擴展
適合: 需要在 K8s 內完成整個 CI/CD 流程的場景。
🏗️ 需要 CI/CD 架構設計?
正確的 CI/CD 流程可以大幅提升開發效率。讓專家幫你規劃。
👉 預約架構諮詢
監控工具
沒有監控的系統是盲飛。Kubernetes 需要完整的可觀測性。
Prometheus
Prometheus 是 Kubernetes 監控的標準選擇。
特點:
| 特點 | 說明 |
|---|---|
| 拉取模式 | 主動去抓取指標 |
| 時序資料庫 | 內建儲存 |
| PromQL | 強大的查詢語言 |
| 告警 | 內建 Alertmanager |
安裝(用 Helm):
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm install prometheus prometheus-community/kube-prometheus-stack
這會安裝完整的監控套件:
- Prometheus Server
- Alertmanager
- Grafana
- Node Exporter
- 各種預設 Dashboard
PromQL 範例:
# CPU 使用率
rate(container_cpu_usage_seconds_total{container!=""}[5m])
# 記憶體使用量
container_memory_usage_bytes{container!=""}
# Pod 重啟次數
kube_pod_container_status_restarts_total
Grafana
Grafana 是視覺化工具,把 Prometheus 的資料變成漂亮的圖表。
功能:
| 功能 | 說明 |
|---|---|
| Dashboard | 自訂監控面板 |
| 告警 | 設定告警規則 |
| 多資料源 | 整合各種資料來源 |
推薦 Dashboard:
| ID | 名稱 | 用途 |
|---|---|---|
| 315 | Kubernetes Cluster Monitoring | 叢集總覽 |
| 6417 | Kubernetes Pods | Pod 詳細資訊 |
| 1860 | Node Exporter Full | 節點詳細資訊 |
匯入方式:Grafana UI → Dashboards → Import → 輸入 ID
日誌收集
方案比較:
| 方案 | 組成 | 特點 |
|---|---|---|
| ELK | Elasticsearch + Logstash + Kibana | 功能最完整,資源需求高 |
| EFK | Elasticsearch + Fluentd + Kibana | 輕量版 ELK |
| PLG | Promtail + Loki + Grafana | 最輕量,與 Prometheus 整合好 |
Loki 安裝(推薦):
helm repo add grafana https://grafana.github.io/helm-charts
helm install loki grafana/loki-stack --set grafana.enabled=true
Loki 的優點:
- 不索引日誌內容,成本低
- 與 Grafana 整合好
- 類似 PromQL 的查詢語言
插圖:Grafana 監控儀表板畫面
場景描述: Grafana 監控儀表板畫面,顯示 Kubernetes 叢集的即時監控指標,包含 CPU 使用率折線圖、記憶體用量圖表、Pod 數量統計、節點狀態列表,右上角顯示時間範圍選擇器,整體使用深色主題。需要顯示的中文字:無
視覺重點:
- 主要內容清晰呈現
必須出現的元素:
- 依據描述中的關鍵元素
需要顯示的中文字: 無
顏色調性: 專業、清晰
避免元素: 抽象圖形、齒輪、發光特效
Slug:
prometheus-grafana-dashboard
服務網格
當微服務越來越多,服務之間的通訊變得複雜。服務網格解決這個問題。
什麼是服務網格
服務網格(Service Mesh) 是處理服務間通訊的基礎設施層。
解決的問題:
| 問題 | 服務網格的解法 |
|---|---|
| 服務發現 | 自動發現和路由 |
| 負載均衡 | 智能流量分配 |
| 故障處理 | 重試、熔斷、超時 |
| 安全通訊 | 自動 mTLS |
| 可觀測性 | 自動追蹤和指標 |
Istio
Istio 是最知名的服務網格。
架構:
┌─────────────┐
│ istiod │ ← Control Plane
└─────────────┘
│
┌─────────────────┼─────────────────┐
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│ Envoy │ │ Envoy │ │ Envoy │
│ Sidecar │ │ Sidecar │ │ Sidecar │
├─────────┤ ├─────────┤ ├─────────┤
│ App A │ ←───→ │ App B │ ←───→ │ App C │
└─────────┘ └─────────┘ └─────────┘
每個 Pod 旁邊都有一個 Envoy Sidecar,處理所有進出的流量。
安裝 Istio:
# 下載 istioctl
curl -L https://istio.io/downloadIstio | sh -
cd istio-*
export PATH=$PWD/bin:$PATH
# 安裝
istioctl install --set profile=demo
# 啟用自動注入
kubectl label namespace default istio-injection=enabled
流量管理範例:
# 金絲雀部署:90% 到 v1,10% 到 v2
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: my-app
spec:
hosts:
- my-app
http:
- route:
- destination:
host: my-app
subset: v1
weight: 90
- destination:
host: my-app
subset: v2
weight: 10
Linkerd
Linkerd 是比 Istio 更輕量的選擇。
比較:
| 項目 | Istio | Linkerd |
|---|---|---|
| 功能 | 最完整 | 夠用 |
| 資源消耗 | 較高 | 較低 |
| 學習曲線 | 陡峭 | 較平緩 |
| 效能 | 好 | 更好 |
選擇建議:
- 需要完整功能:Istio
- 想要簡單輕量:Linkerd
- 用 Cilium 做 CNI:考慮 Cilium Service Mesh
💡 微服務架構規劃?
服務網格不是必須的,但正確使用可以大幅簡化維運。讓我們幫你評估。
👉 預約免費諮詢
安全工具
Kubernetes 安全需要多層防護。
映像檔掃描
工具選擇:
| 工具 | 特點 |
|---|---|
| Trivy | 開源、快速、簡單 |
| Snyk | 商業方案,整合好 |
| Clair | 開源、可自架 |
Trivy 使用:
# 安裝
brew install aquasecurity/trivy/trivy
# 掃描映像檔
trivy image nginx:1.25
# 掃描 K8s 叢集
trivy k8s --report summary
運行時安全
Falco 是運行時威脅偵測工具。
功能:
| 功能 | 說明 |
|---|---|
| 系統呼叫監控 | 偵測異常行為 |
| 規則引擎 | 自訂偵測規則 |
| 告警整合 | 整合各種告警管道 |
安裝:
helm repo add falcosecurity https://falcosecurity.github.io/charts
helm install falco falcosecurity/falco
規則範例:
# 偵測 shell 在容器中執行
- rule: Terminal shell in container
desc: A shell was spawned in a container
condition: >
spawned_process and container and shell_procs
output: >
Shell spawned in container (user=%user.name container=%container.name)
priority: WARNING
政策管理
OPA(Open Policy Agent) 是通用的政策引擎。
Gatekeeper 是 OPA 的 Kubernetes 版本。
使用場景:
| 政策 | 說明 |
|---|---|
| 禁止 latest tag | 映像檔必須指定版本 |
| 資源限制 | 必須設定 requests/limits |
| 安全設定 | 禁止 privileged 容器 |
範例:禁止 latest tag
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sDisallowedTags
metadata:
name: no-latest-tag
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
parameters:
tags: ["latest"]
工具選擇建議
工具太多,該怎麼選?
入門建議
剛開始學 Kubernetes,先掌握這些:
| 類別 | 工具 | 優先級 |
|---|---|---|
| 套件管理 | Helm | ⭐⭐⭐ |
| 監控 | Prometheus + Grafana | ⭐⭐⭐ |
| 日誌 | Loki | ⭐⭐ |
| CI/CD | Argo CD | ⭐⭐ |
進階建議
穩定運行後,考慮加入:
| 類別 | 工具 | 使用時機 |
|---|---|---|
| 服務網格 | Istio/Linkerd | 微服務多、需要流量管理 |
| 安全 | Falco + Trivy | 生產環境必備 |
| 政策 | OPA Gatekeeper | 多團隊、需要治理 |
| 成本 | Kubecost | 需要成本可視化 |
不要過度工程
常見錯誤:
| 錯誤 | 建議 |
|---|---|
| 一開始就上服務網格 | 先用基本的 Service |
| 每個工具都要用 | 解決真實問題才加 |
| 自己架所有東西 | 考慮雲端託管方案 |
原則: 從簡單開始,遇到問題再加工具。
FAQ:常見問題
Q1: Helm 2 還是 Helm 3?
Helm 3。
Helm 2 已經不再維護。Helm 3 移除了 Tiller,更安全也更簡單。
Q2: Argo CD 和 Jenkins 可以一起用嗎?
可以。
常見組合:
- Jenkins 做 CI(建構、測試、打包)
- Argo CD 做 CD(部署到 K8s)
Q3: Prometheus 資料要保留多久?
看需求和成本。
建議:
- 詳細資料:15-30 天
- 長期趨勢:用 Thanos 或 Cortex 做遠端儲存
Q4: 一定要用服務網格嗎?
不一定。
使用時機:
- 微服務數量多(>10 個)
- 需要進階流量管理
- 需要 mTLS
不需要的情況:
- 單體或少量服務
- 資源有限
- 團隊不熟悉
Q5: 這些工具都要學嗎?
不用一次學完。
優先順序:
- kubectl(必須)
- Helm(很常用)
- 監控(生產環境必備)
- CI/CD(團隊協作必備)
- 其他(看需求)
下一步
了解工具生態系後,你可以:
| 目標 | 行動 |
|---|---|
| 深入網路 | 閱讀 Kubernetes 網路架構指南 |
| 動手實作 | 閱讀 Kubernetes 入門教學 |
| 選擇雲端 | 閱讀 Kubernetes 雲端服務比較 |
| 準備認證 | 閱讀 Kubernetes 認證指南 |
🚀 需要 Kubernetes 工具鏈規劃?
正確的工具選擇可以大幅提升團隊效率。CloudInsight 提供完整的技術諮詢。
👉 立即預約諮詢
延伸閱讀
- Kubernetes 完整指南 - K8s 入門總覽
- Kubernetes 入門教學 - 從零開始實作
- Kubernetes 網路架構指南 - CNI、Service、Ingress
- Kubernetes 雲端服務比較 - EKS、GKE、AKS
- Kubernetes 認證指南 - CKA、CKAD、CKS
參考資料
相關文章
DevOps 監控指南:Observability 與監控工具實作【2025】
DevOps 監控完整指南!深入解析 Observability 三大支柱(Metrics、Logs、Traces),實作 Prometheus + Grafana 監控系統,掌握 DORA Metrics 與告警設計最佳實踐。
KubernetesKubernetes 台灣社群完整指南:CNTUG、KCD Taiwan 與學習資源總整理
深入介紹 Kubernetes 台灣社群生態,包含 CNTUG 雲端原生使用者社群、KCD Taiwan 年度大會、技術 Meetup、線上社群與學習資源,幫助您融入台灣 K8s 技術圈。
KubernetesKubernetes 架構完整解析:Control Plane、Node、元件一次搞懂
深入解析 Kubernetes 架構。從 Control Plane 四大元件到 Worker Node 運作原理,包含 API Server、etcd、Scheduler、kubelet 完整說明。