news 2026/4/21 10:28:42

【架构实战】GitOps持续交付架构(ArgoCD/Flux)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【架构实战】GitOps持续交付架构(ArgoCD/Flux)

一、GitOps概述

GitOps是以Git为单一事实来源的运维模式:

核心原则:

  • 声明式配置
  • Git为唯一真理
  • 自动同步
  • 可追溯

二、ArgoCD架构

1. 架构图

┌─────────────────────────────────────────────────────────────┐ │ Git Repository │ │ ┌─────────────────┐ ┌─────────────────┐ ┌───────────────┐ │ │ │ deployments/ │ │ services/ │ │ configmaps/ │ │ │ │ deployment.yaml│ │ service.yaml │ │ config.yaml │ │ │ └─────────────────┘ └─────────────────┘ └───────────────┘ │ └─────────────────────────────────────────────────────────────┘ │ │ Pull ▼ ┌─────────────────────────────────────────────────────────────┐ │ ArgoCD Server │ │ ┌──────────────┐ ┌──────────────┐ ┌───────────────┐ │ │ │ Web UI │ │ API │ │ Controller │ │ │ └──────────────┘ └──────────────┘ └───────┬───────┘ │ └───────────────────────────────────────────────┼─────────────┘ │ │ Sync ▼ ┌─────────────────────────────────────────────────────────────┐ │ Kubernetes Cluster │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────┐ │ │ │ Deploy │ │ Service │ │ ConfigMap │ │ │ └─────────────┘ └─────────────┘ └─────────────────┘ │ └─────────────────────────────────────────────────────────────┘

2. 安装ArgoCD

# 安装ArgoCDkubectl create namespace argocd kubectl apply-nargocd-fhttps://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml# 获取密码kubectl-nargocd get secret argocd-initial-admin-secret-ojsonpath="{data.password}"|base64-d# 访问UIkubectl port-forward svc/argocd-server-nargocd8080:443

3. 应用配置

apiVersion:argoproj.io/v1alpha1kind:Applicationmetadata:name:myappnamespace:argocdspec:project:defaultsource:repoURL:https://github.com/myorg/myapp-manifeststargetRevision:HEADpath:overlays/proddestination:server:https://kubernetes.default.svcnamespace:productionsyncPolicy:automated:prune:trueselfHeal:true

三、Flux架构

1. 架构

Git Repository │ │ reconcile ▼ ┌──────────────┐ │ Flux CLI │ └──────┬───────┘ │ │ watch ▼ ┌────────────────────────────────────────────┐ │ Source Controller │ │ ┌──────────────┐ ┌──────────────────┐ │ │ │ GitRepository│ │ HelmRepository │ │ │ └──────────────┘ └──────────────────┘ │ └──────────────────────┬───────────────────┘ │ │ reconcile ▼ ┌────────────────────────────────────────────┐ │ Kustomize Controller │ │ ┌──────────────────────────────────────┐ │ │ │ Kustomization │ │ │ └──────────────────────────────────────┘ │ └──────────────────────┬─────────────────────┘ │ │ apply ▼ ┌────────────────────────────────────────────┐ │ Helm Controller │ │ ┌──────────────────────────────────────┐ │ │ │ HelmRelease │ │ │ └──────────────────────────────────────┘ │ └────────────────────────────────────────────┘

2. 安装Flux

# 安装Flux CLIcurl-shttps://fluxcd.io/install.sh|bash# 初始化flux bootstrapgit\--owner=myorg\--repository=flux-system\--branch=main\--path=clusters/prod

3. 配置示例

apiVersion:source.toolkit.fluxcd.io/v1beta1kind:GitRepositorymetadata:name:myappnamespace:flux-systemspec:interval:1murl:https://github.com/myorg/myappref:branch:main---apiVersion:kustomize.toolkit.fluxcd.io/v1beta1kind:Kustomizationmetadata:name:myappnamespace:flux-systemspec:interval:10msourceRef:kind:GitRepositoryname:myapppath:./deploy/prodprune:truevalidation:client

四、ArgoCD vs Flux对比

特性ArgoCDFlux
架构Controller + API多Controller
UI丰富简单
社区活跃活跃
Helm支持原生原生
Kustomize原生原生

五、GitOps工作流

1. 开发流程

1. 代码提交 ↓ 2. CI构建镜像 ↓ 3. 更新Git仓库镜像Tag ↓ 4. ArgoCD/Flux检测变更 ↓ 5. 自动同步到集群 ↓ 6. 验证部署状态

2. 多环境管理

# base/kustomization.yamlapiVersion:kustomize.config.k8s.io/v1beta1kind:Kustomizationresources:-deployment.yaml-service.yamlcommonLabels:app:myapp---# overlays/dev/kustomization.yamlapiVersion:kustomize.config.k8s.io/v1beta1kind:Kustomizationbases:-../../basepatches:-patch.yamlimages:-name:myappnewTag:dev-latest---# overlays/prod/kustomization.yamlapiVersion:kustomize.config.k8s.io/v1beta1kind:Kustomizationbases:-../../basepatches:-patch.yamlimages:-name:myappnewTag:v1.2.3

六、最佳实践

1. 仓库结构

├── apps/ │ ├── myapp/ │ │ ├── base/ │ │ │ ├── deployment.yaml │ │ │ └── service.yaml │ │ ├── overlays/ │ │ │ ├── dev/ │ │ │ └── prod/ │ │ └── kustomization.yaml │ └── other-app/ └── infrastructure/ ├── argo-cd/ ├── sealed-secrets/ └── monitoring/

2. 访问控制

# RBAC配置apiVersion:rbac.authorization.k8s.io/v1kind:Rolemetadata:name:argocd-adminnamespace:argocdrules:-apiGroups:["*"]resources:["*"]verbs:["*"]

七、总结

GitOps核心要点:

  • 单一事实来源:Git仓库
  • 自动同步:声明式配置
  • ArgoCD:功能丰富,有UI
  • Flux:轻量,CLI友好

个人观点,仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/21 10:27:15

跨账号配置阿里云OSS+CDN实战:手把手教你用B账户域名给A账户Bucket加速(附SSL证书避坑指南)

跨账号配置阿里云OSSCDN实战:B账户域名加速A账户Bucket全流程解析 当企业存在多团队协作或业务隔离需求时,常会遇到资源分散在不同云账号的情况。比如市场部持有的域名需要为技术团队维护的对象存储资源提供访问入口,这种跨账号资源整合往往让…

作者头像 李华
网站建设 2026/4/21 10:23:40

魔兽争霸3终极兼容性优化指南:WarcraftHelper完整使用教程

魔兽争霸3终极兼容性优化指南:WarcraftHelper完整使用教程 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸3在现代系统上的…

作者头像 李华
网站建设 2026/4/21 10:19:05

告别官方臃肿版!用Docker一键部署Rust版Bitwarden_rs,内存占用直降80%

轻量级密码管理革命:Docker部署Rust版Bitwarden全指南 密码管理工具已经成为现代数字生活的必需品,但传统解决方案往往伴随着高昂的资源消耗。想象一下,当你发现自己的服务器内存被某个密码管理服务吞噬大半时,那种无奈感——这正…

作者头像 李华