商店現已上線

我們打造用於網站、AI 智慧體和 LLM 訓練的 Workstation AI 機器——線上配置併購買。

獲取同行價格
AI 產品
AI 實驗室OpenAI 智慧體Claude 代理Grok BotWorkstation AI 原生 CRM營銷所有產品
AI 解決方案
應用型 AIAI 智慧體生成式 AIAI 自動化AI 技能提升中小企業 AI 套餐企業 AI 實驗室AI 工作站NVIDIA 硬體與軟體NVIDIA 加速計算私有 AIGPU 私有云GPU 叢集邊緣 AI行業 AI
AI 服務
平臺現代化數字工程資料基礎與 AI自主運營AI 諮詢DevOps 自動化網路安全軟體開發智慧體構建MLOps 搭建GPU 租賃GPU 私有云
關於我們
公司我們的故事合作伙伴客戶案例
AI 資料中心
AI 資料中心GPU 私有云GPU 叢集GPU 租賃
AI 洞察Jev 系列基準測試實驗室模型選擇
技術說明
文件
Linux 作業系統UbuntuRed Hat Enterprise LinuxSUSE LinuxAlpine LinuxDebian、Rocky 與 AlmaLinux
AI 雲平臺AWS 與 Amazon BedrockGoogle Cloud 與 Vertex AIMicrosoft Azure 與 AI FoundryGPU 雲與算力市場
私有 AI 資料中心面向律師事務所面向會計師事務所本地部署平臺全面安全的雲
工具Ring PromoterJobshout
新聞
部落格
聯絡我們登入

面向現代企業的 AI 工作站、AI 多智慧體軟體、GPU 基礎設施和智慧代理解決方案。

聯絡我們

AI 解決方案

應用型 AIAI 智慧體生成式 AIAI 自動化AI 技能提升中小企業 AI 套餐企業 AI 實驗室行業 AI

產品

所有產品Workstation AI native CRM 與 ERP營銷OpenAI 智慧體Ring PromoterJobshout

公司

關於我們公司AI 資料中心為什麼選擇Workstation合作伙伴客戶案例定價聯絡TenthMatrix

資源

AI 洞察技術說明文件Linux 作業系統AI 雲平臺私有 AI 資料中心部落格搜尋網站地圖
英國總部
77-79 Marlowes, Hemel Hempstead HP1 1LF路線指引 — 從 M25 外環倫敦 20 號出口駛出公司編號: 11641870週一至週五:上午 9:00 - 下午 6:00 GMT
+44 7515 356 146
比利時辦公室
Workstation SRL, Rue Vanderkindere 34, 1180 Uccle, BrusselsBE 0751.518.683週一至週五:上午 9:00 - 下午 6:00 CET
+32 492 45 67 46
印度辦公室
#159 Sector 9, Pocket 1, DDA Flats, 110077 Dwarka, New Delhi
+91 98881 98841
台灣辦公室
3F, No. 2-4, Aisi Rd., Ren'ai Dist., Keelung City 200, Taiwan基隆市仁愛區愛四路2之4號3樓週一至週五:上午 9:00 - 下午 6:00 臺灣時間(GMT+8)
+886 926 892 701+32 492 45 67 46

© 2026 Workstation AI。保留所有權利。

隱私資料刪除Cookie服務條款網站地圖

NVIDIA、NVIDIA 標誌、RTX、RTX PRO、Blackwell、CUDA、NVLink、MGX、Omniverse、Spectrum-X、Quantum、BlueField、DGX 與 HGX 為 NVIDIA Corporation 在美國及其他國家的商標及/或註冊商標。AMD、AMD Arrow 標誌、EPYC、Instinct、Ryzen 與 Threadripper 為 Advanced Micro Devices, Inc. 的商標。Dell 與 PowerEdge 為 Dell Inc. 或其子公司的商標。Intel 與 Xeon 為 Intel Corporation 或其子公司的商標。AMAX、AceleMax 與 LiquidMax 為 AMAX Engineering Corporation 的商標。所有其他產品名稱、標誌與品牌均為其各自所有者之財產。我們使用它們僅為識別我們所描述、供應或支援的產品;使用這些名稱並不表示其所有者為我們背書。

Loading blog...

首頁 / 部落格
DevOpsKubernetesRke2

Kubernetes 持續交付:使用 ArgoCD 和 Flux 的 GitOps 管道

使用 GitOps 與 ArgoCD 和 Flux 為 Kubernetes 構建可靠、自動化的部署管道

Balinder Walia2025年5月27日4 min read
34

Kubernetes 上的持續交付已經遠遠超出了簡單的 kubectl apply 命令。現代團隊正在採用 GitOps,這是一種使用 Git 作為宣告性基礎設施和應用程式配置的單一事實來源的範例。透過將 GitOps 原則與 ArgoCD 和 Flux CD 等工具相結合,組織可以實現跨叢集和環境擴充套件的可靠、可稽核和自動化的部署管道。

本指南涵蓋了使用 GitOps 方法在 Kubernetes 上構建生產級持續交付管道的架構、設定和最佳實踐。

GitOps 原則

GitOps 基於四個核心原則,從根本上改變了團隊管理部署的方式:

使用 GitOps 的 CI/CD 管道git 推送原始碼構建編譯和檢查測試單元與積分登記處圖片推送部署到K8sArgoCD / 通量阿爾戈CD同步與協調助焊劑CDGit 協調器Git 儲存庫 = 單一事實來源
  • 宣告式配置 - 以宣告方式描述系統的整個所需狀態。對於 Kubernetes,這意味著儲存在 Git 中的 YAML 清單、Helm 圖表或 Kustomize 覆蓋。
  • 版本控制 - Git 是唯一的事實來源。每個更改都會透過拉取請求,提供完整的審計跟蹤並透過恢復提交來實現輕鬆回滾。
  • 自動對賬 - 叢集中執行的代理不斷將 Git 中的所需狀態與叢集中的實際狀態進行比較,並自動協調任何偏差。
  • 持續觀察 - 系統持續監控 Git 儲存庫和叢集狀態,對差異發出警報並確保叢集始終與宣告的配置匹配。

這些原則消除了手動部署步驟,減少了人為錯誤,並提供一致的工作流程,無論叢集複雜程度如何。

ArgoCD 架構和設定

ArgoCD 是 Kubernetes 採用最廣泛的 GitOps 工具。它提供了強大的 Web UI、CLI 和 API,用於管理跨叢集的應用程式部署。

GitOps 工作流程開發商推送/公關合並Git 儲存庫期望狀態阿爾戈CD手錶回購檢測漂移K8s叢集實時狀態自動同步回滾 = Git 恢復審計跟蹤:每次部署都是一次 Git 提交

核心元件

ArgoCD 由幾個協同工作的關鍵元件組成:

  • API伺服器 - 公開 gRPC/REST API 並提供 Web UI。處理身份驗證、RBAC 和外部整合。
  • 儲存庫伺服器 - 克隆 Git 儲存庫並從 Helm 圖表、Kustomize 或純 YAML 生成 Kubernetes 清單。
  • 應用控制器 - 持續監控正在執行的應用程式並將實時狀態與 Git 中的所需狀態進行比較。
  • 雷迪斯 - 為儲存庫伺服器和應用程式控制器提供快取。

安裝

使用官方清單或 Helm 圖表將 ArgoCD 部署到您的叢集:

# Create namespace and install ArgoCD
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

# Or via Helm
helm repo add argo https://argoproj.github.io/argo-helm
helm install argocd argo/argo-cd \
  --namespace argocd \
  --create-namespace \
  --set server.service.type=LoadBalancer

定義應用程式

ArgoCD 使用 Application 自定義資源來定義要部署的內容和位置。這是一個典型的應用程式定義:

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-web-app
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/myorg/k8s-manifests.git
    targetRevision: main
    path: apps/my-web-app/overlays/production
  destination:
    server: https://kubernetes.default.svc
    namespace: production
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
      - CreateNamespace=true
    retry:
      limit: 5
      backoff:
        duration: 5s
        factor: 2
        maxDuration: 3m

的 syncPolicy.automated 部分啟用自動同步。的 prune 選項刪除 Git 中不再定義的資源,而 selfHeal 恢復直接對叢集進行的手動更改。

Flux CD:另一種方法

Flux CD 採用了與 GitOps 不同的架構方法。 Flux 不是具有 UI 的集中式伺服器,而是作為一組 Kubernetes 控制器執行,每個控制器處理特定的問題。

助焊劑成分

  • 源控制器 - 管理 Git 儲存庫、Helm 儲存庫和 OCI 工件源。
  • 定製控制器 - 應用 Kustomize 覆蓋和普通 YAML 清單。
  • 舵控制器 - 透過以下方式管理 Helm 圖表釋出 HelmRelease 自定義資源。
  • 通知控制器 - 處理入站和出站事件,與 Slack、Teams 和 Webhook 提供商整合。
  • 影象自動化控制器 - 掃描容器登錄檔並在新映像可用時更新清單。

通量自舉

# Bootstrap Flux on a cluster with a GitHub repository
flux bootstrap github \
  --owner=myorg \
  --repository=fleet-infra \
  --branch=main \
  --path=clusters/production \
  --personal

# Define a HelmRelease
apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
  name: nginx-ingress
  namespace: ingress-system
spec:
  interval: 5m
  chart:
    spec:
      chart: ingress-nginx
      version: "4.x"
      sourceRef:
        kind: HelmRepository
        name: ingress-nginx
        namespace: flux-system
  values:
    controller:
      replicaCount: 3
      metrics:
        enabled: true

ArgoCD 與 Flux:何時選擇

當您需要豐富的 Web UI 來實現可見性、具有細粒度 RBAC 的多租戶以及集中式管理平面時,ArgoCD 是理想的選擇。 Flux 在喜歡輕量級、基於控制器的架構、需要影象自動化功能或希望與 Kubernetes API 生態系統進行更深入整合的環境中大放異彩。

GitOps 中的 Helm 圖表管理

Helm 圖表是 Kubernetes 應用程式事實上的打包格式。在 GitOps 工作流程中,跨環境管理 Helm 值需要仔細組織。

# Repository structure for multi-environment Helm management
k8s-manifests/
  base/
    my-app/
      Chart.yaml
      values.yaml          # Default values
      templates/
        deployment.yaml
        service.yaml
        ingress.yaml
  environments/
    dev/
      my-app/
        values.yaml        # Dev overrides
    staging/
      my-app/
        values.yaml        # Staging overrides
    production/
      my-app/
        values.yaml        # Production overrides

ArgoCD 和 Flux 都原生支援 Helm。 ArgoCD 透過其儲存庫伺服器在伺服器端渲染圖表,而 Flux 直接在其 Helm 控制器中使用 Helm SDK。

部署策略

選擇正確的部署策略可以最大限度地降低風險並確保零停機發布。

滾動更新

預設的 Kubernetes 策略。 Pod 逐漸被新版本替換。配置 maxSurge 和 maxUnavailable 來控制推出速度。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 5
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
  template:
    spec:
      containers:
        - name: app
          image: myapp:v2.1.0
          readinessProbe:
            httpGet:
              path: /health
              port: 8080
            initialDelaySeconds: 5
            periodSeconds: 10

藍綠部署

執行兩個相同的環境(藍色和綠色)。將新版本部署到非活動環境,驗證它,然後切換流量。這透過切換回以前的環境來提供即時回滾。使用服務標籤選擇器或 Istio 流量管理來實施。

金絲雀部署

逐漸將一小部分流量路由到新版本,隨著信心的增長而增加百分比。 Flagger 和 Argo Rollouts 等工具透過基於指標的促銷自動化金絲雀分析。

apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
  name: my-app
spec:
  replicas: 5
  strategy:
    canary:
      steps:
        - setWeight: 10
        - pause: { duration: 5m }
        - setWeight: 30
        - pause: { duration: 5m }
        - setWeight: 60
        - pause: { duration: 5m }
      canaryService: my-app-canary
      stableService: my-app-stable
      trafficRouting:
        istio:
          virtualService:
            name: my-app-vsvc
            routes:
              - primary

自動回滾

GitOps 使回滾變得簡單:只需恢復 Git 提交即可。然而,基於健康檢查的自動回滾提供了額外的安全網。

ArgoCD 透過其同步和健康評估系統支援自動回滾。如果應用程式在同步後進入降級狀態,ArgoCD 可以自動回滾到最後一個已知的良好狀態。

對於更復雜的回滾場景,Argo Rollouts 和 Flagger 可以分析 Prometheus 指標、執行自動化測試並中止顯示效能下降的回滾。

秘密管理與密封秘密

在 Git 中儲存機密對於 GitOps 來說是一個嚴峻的挑戰。 Sealed Secrets 透過加密只能由目標叢集中執行的控制器解密的機密來解決此問題。

# Install Sealed Secrets controller
helm repo add sealed-secrets https://bitnami-labs.github.io/sealed-secrets
helm install sealed-secrets sealed-secrets/sealed-secrets \
  --namespace kube-system

# Encrypt a secret
kubectl create secret generic db-credentials \
  --from-literal=username=admin \
  --from-literal=password=s3cure-p@ss \
  --dry-run=client -o yaml | \
  kubeseal --format yaml > db-credentials-sealed.yaml

由此產生的 SealedSecret 資源可以安全地提交給 Git。只有目標叢集中的 Sealed Secrets 控制器持有解密所需的私鑰。替代方法包括外部 Secrets Operator(用於從 AWS Secrets Manager、HashiCorp Vault 等提取)和用於檔案級加密的 SOPS。

監控部署

部署狀態的可見性對於生產 GitOps 管道至關重要。實施多層次監控:

  • ArgoCD指標 - ArgoCD 公開 Prometheus 同步狀態、執行狀況和操作持續時間的指標。建立 Grafana 儀表板來跟蹤部署頻率和故障率。
  • Kubernetes 活動 - 監控 Pod 排程、映象拉取和就緒探測事件以及早發現問題。
  • 應用程式健康檢查 - 使用 Lua 指令碼在 ArgoCD 中配置自定義執行狀況檢查,以定義“健康”對您的特定資源意味著什麼。
  • 警報 - 將 ArgoCD 通知與 Slack、PagerDuty 或電子郵件整合,以針對同步失敗、執行狀況惡化或漂移檢測發出警報。
# ArgoCD Notification ConfigMap
apiVersion: v1
kind: ConfigMap
metadata:
  name: argocd-notifications-cm
  namespace: argocd
data:
  trigger.on-sync-failed: |
    - when: app.status.operationState.phase in ['Error', 'Failed']
      send: [slack-notification]
  template.slack-notification: |
    message: |
      Application {{.app.metadata.name}} sync {{.app.status.operationState.phase}}.
      Revision: {{.app.status.sync.revision}}
  service.slack: |
    token: $slack-token
    channel: deployments

多叢集交付

隨著組織規模的擴大,跨多個叢集部署變得必要。 ArgoCD 透過註冊外部叢集來原生支援多叢集管理。 Flux 透過引導工作負載叢集的管理叢集來實現這一點。

ArgoCD 中的 ApplicationSet 控制器對於多叢集場景特別強大。它可以根據叢集列表、Git 目錄或拉取請求事件動態生成應用程式資源。

apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: my-app-set
  namespace: argocd
spec:
  generators:
    - clusters:
        selector:
          matchLabels:
            env: production
  template:
    metadata:
      name: 'my-app-{{name}}'
    spec:
      project: default
      source:
        repoURL: https://github.com/myorg/k8s-manifests.git
        targetRevision: main
        path: 'apps/my-app/overlays/{{metadata.labels.region}}'
      destination:
        server: '{{server}}'
        namespace: my-app

結論

帶有 ArgoCD 或 Flux CD 的 GitOps 為 Kubernetes 持續交付提供了堅實的基礎。透過將 Git 視為事實來源、自動協調並利用漸進式交付策略,團隊可以充滿信心地進行部署並快速從故障中恢復。從簡單的單叢集設定開始,建立 Git 儲存庫結構,並隨著平臺的成熟逐步採用金絲雀部署、多叢集管理和自動回滾策略等高階模式。

對 GitOps 基礎設施的投資透過提高可靠性、更快的事件響應、完整的審計跟蹤以及使部署像合併拉取請求一樣簡單的開發人員體驗而獲得回報。