返回首頁Kubernetes

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

17 min 分鐘閱讀
#Kubernetes#Helm#Argo CD#Prometheus#Grafana#Istio#GitOps#監控

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

項目HelmKustomize
方式模板化疊加修改
學習曲線中等較低
生態系大量現成 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/CDGitOps
觸發CI 推送到叢集叢集拉取 Git
安全CI 需要叢集存取權叢集只需要 Git 存取權
審計散落各處Git 完整記錄
回滾重跑 pipelinegit 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 CDFlux
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名稱用途
315Kubernetes Cluster Monitoring叢集總覽
6417Kubernetes PodsPod 詳細資訊
1860Node Exporter Full節點詳細資訊

匯入方式:Grafana UI → Dashboards → Import → 輸入 ID

日誌收集

方案比較:

方案組成特點
ELKElasticsearch + Logstash + Kibana功能最完整,資源需求高
EFKElasticsearch + Fluentd + Kibana輕量版 ELK
PLGPromtail + 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 更輕量的選擇。

比較:

項目IstioLinkerd
功能最完整夠用
資源消耗較高較低
學習曲線陡峭較平緩
效能更好

選擇建議:

  • 需要完整功能: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/CDArgo 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: 這些工具都要學嗎?

不用一次學完。

優先順序:

  1. kubectl(必須)
  2. Helm(很常用)
  3. 監控(生產環境必備)
  4. CI/CD(團隊協作必備)
  5. 其他(看需求)

下一步

了解工具生態系後,你可以:

目標行動
深入網路閱讀 Kubernetes 網路架構指南
動手實作閱讀 Kubernetes 入門教學
選擇雲端閱讀 Kubernetes 雲端服務比較
準備認證閱讀 Kubernetes 認證指南

🚀 需要 Kubernetes 工具鏈規劃?

正確的工具選擇可以大幅提升團隊效率。CloudInsight 提供完整的技術諮詢。

👉 立即預約諮詢


延伸閱讀


參考資料

需要專業的雲端建議?

無論您正在評估雲平台、優化現有架構,或尋找節費方案,我們都能提供協助

預約免費諮詢

相關文章