商店现已上线

我们打造用于网站、AI 智能体和 LLM 训练的 Workstation AI 机器——在线配置并购买。

获取同行价格
AI 产品
AI 实验室OpenAI 智能体Claude 代理Grok BotWorkstation AI 原生 CRM营销所有产品
AI 解决方案
应用型 AIAI 智能体生成式 AIAI 自动化AI 技能提升中小企业 AI 套餐企业 AI 实验室AI 工作站NVIDIA 硬件与软件NVIDIA 加速计算私有 AIGPU 集群边缘 AI行业 AI
AI 服务
平台现代化数字工程数据基础与 AI自主运营AI 咨询DevOps 自动化网络安全软件开发智能体构建MLOps 搭建GPU 租赁
关于我们
公司我们的故事合作伙伴客户案例
AI 数据中心
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

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

隐私数据删除Cookie服务条款网站地图

NVIDIA, the NVIDIA logo, RTX, RTX PRO, Blackwell, CUDA, NVLink, MGX, Omniverse, Spectrum-X, Quantum, BlueField, DGX and HGX are trademarks and/or registered trademarks of NVIDIA Corporation in the US and other countries. AMD, the AMD Arrow logo, EPYC, Instinct, Ryzen and Threadripper are trademarks of Advanced Micro Devices, Inc. Dell and PowerEdge are trademarks of Dell Inc. or its subsidiaries. Intel and Xeon are trademarks of Intel Corporation or its subsidiaries. AMAX, AceleMax and LiquidMax are trademarks of AMAX Engineering Corporation. All other product names, logos and brands are the property of their respective owners. We use them only to identify the products we describe, supply or support; their use does not mean their owners endorse us.

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 基础设施的投资通过提高可靠性、更快的事件响应、完整的审计跟踪以及使部署像合并拉取请求一样简单的开发人员体验而获得回报。