告别 GitOps 翻车!7 招让 ArgoCD 稳如老狗
希望能给正在或即将上 GitOps 的兄弟们一些参考。七步法让 ArgoCD 更稳、更隔离、更可控之前的文章介绍了 ArgoCD 的基本用法但生产环境光会配还不够还得配得好。这次我们不讲概念直接上实战要点看看怎么让 ArgoCD 这个“GitOps 内核”跑得更稳。第一步别让它“饿死”也别让它“暴走”——资源限制要设好ArgoCD 本身也是个 Pod会消耗集群的 CPU 和内存。如果不设资源限制它可能会吃掉一个节点的所有资源影响集群上其他的业务 Pod。特别是在大规模集群或多集群模式下ArgoCD 的application-controller和repo-server的负载会比较高(我的 application-controller 一个 pod 16G 内存)资源限制和请求一定要配。我自己的经验是# argocd-cm.yaml 或者 Operator 的 spec server: resources: requests: cpu: 250m memory: 512Mi limits: cpu: 500m memory: 1Gi controller: resources: requests: cpu: 500m memory: 1Gi limits: cpu: 1 memory: 2Gi repoServer: resources: requests: cpu: 250m memory: 512Mi limits: cpu: 500m memory: 1Gi这个配置要根据你的集群规模和应用数量来调整但记住一个原则请求给足限制给够。第二步别跟原始 YAML 死磕——Helm 或 Kustomize 任选其一ArgoCD 本身不强制你用 Helm 还是 Kustomize但强烈建议不要直接管理原始的 YAML。直接维护原始 YAML 的缺点重复代码多特别是对于多环境dev/staging/prod的情况。容易出错一个环境改漏了DR 的时候就抓瞎了。更新维护困难版本管理复杂。推荐策略首选 Helm如果你是标准的应用发布有 Chart 仓库团队熟悉 Helm那就用 Helm。ArgoCD 对 Helm 的支持非常原生可以自动渲染 Chart。次选 Kustomize如果你更习惯 Kubernetes 原生的方式或者项目结构比较复杂比如有大量 overlayKustomize 也是个好选择。我个人更倾向于 Helm因为它的模板化能力更强而且生态更丰富比如 ArtifactHub 上有一堆现成的 Chart。但如果你做的是平台层面的配置如 CRD、OperatorKustomize 会更合适一些。第三步源代码和清单分开——权责分明安全第一这是一个很容易被忽略的点。很多人直接把应用代码和 ArgoCD 的Application清单放在同一个 Git 仓库里。这样做有什么问题生命周期不同应用代码每天都在变但 ArgoCD 的清单可能几周才改一次。把它们混在一起版本管理会很混乱。权限不清开发同学有代码仓库的写权限但他们不应该有修改Application资源的权限这可能会导致他们跳过审批直接上线。安全风险如果开发同学的仓库被黑攻击者可以借机修改 ArgoCD 的配置比如指向一个恶意的镜像仓库。最佳实践源代码Source Repo应用本身的代码仓库如 Java、Go 项目开发团队维护。清单库Manifest Repo存放 ArgoCD 的Application、AppProject、以及 Helm Chart 或 Kustomize 的 overlay 文件。由平台/SRE 团队维护严格控制写权限。第四步最大程度隔离——应用实例和平台实例分开这是 Red Hat 官方推荐的一个实践我认为是多租户场景下的核心要点。想象一下一个团队的应用Application资源被误删了导致整个 ArgoCD 的application-controller需要重新同步这个过程可能会影响到其他所有团队的应用部署。解决方案为不同的团队创建独立的 ArgoCD 实例。(当然, 也可以根据实际情况, 一个共享 ArgoCD 实例, 但是进行严格的 RBAC 权限限制.)apiVersion: v1 kind: Namespace metadata: name: team-a-gitops --- apiVersion: argoproj.io/v1alpha1 kind: ArgoCD metadata: name: team-a namespace: team-a-gitops spec: # 为 team-a 配置独立的 repo server, controller, dex server 等 server: route: enabled: true hostname: argocd-team-a.example.com repo: # 限制 team-a 只能访问哪些仓库 ...上面是 openshift 下基于 argocd operator 的yaml. 通常我们要创建多个实例, 直接使用 helm chart 来部署多个实例即可.注意这听起来有些重但在企业级场景下非常值得。每个实例都是自治的一个团队的“瞎搞”不会影响集群的配置或别人的应用。第五步警惕声明式配置的“隐形陷阱”ArgoCD 靠声明式配置Application、AppProjectCRD来管理。但这里有个坑期望状态 ≠ 实际状态。比如你配了一个Application希望它创建三个Deployment。但如果你在 Git 仓库里删了一个Deployment的 YAML 段ArgoCD 会把它删掉。但如果有人在集群里手动kubectl edit改了某个字段ArgoCD 会把它拉回 Git 里的状态。那问题在哪配置漂移的源头不止一个除了 Git 仓库还有 ArgoCD 本身的 Web UI 和 CLI 可以直接修改。如果有人比如我自己有手误用 UI 手动改了syncPolicy而忘记提交 Git那这个期望状态和 Git 仓库就不一致了。Application本身也会漂移想象一下你通过 Web UI 修改了Application的某个参数比如targetRevision指向不同的分支这个修改是不会自动同步回 Git 的。我的建议All-in Git所有对 ArgoCD 配置的修改必须从 Git 仓库发起。Web UI 只用来查看状态和手动触发同步。用argocd app diff检查在 CI/CD 流程中可以加一步脚本来运行argocd app diff跟 Git 仓库对比确保没有意外的配置漂移。监控 ArgoCD 自身用 Prometheus 监控 ArgoCD 的指标比如argocd_app_info如果某个Application的状态变成了OutOfSync就触发告警。或者用 ArgoCD 的 notifications-controller 来发送告警通知。第六步多人协作时AppProject 是黄金搭档权限管理在多团队场景下是必选项。AppProject就是干这个的。apiVersion: argoproj.io/v1alpha1 kind: AppProject metadata: name: team-b-project namespace: argocd spec: sourceRepos: - https://gitlab.example.com/team-b/* # 只能从 team-b 的仓库拉 destinations: - namespace: team-b-* # 只能部署到 team-b 相关的命名空间 server: https://kubernetes.default.svc clusterResourceWhitelist: - group: * kind: * namespaceResourceWhitelist: - group: * kind: *AppProject可以严格控制谁sourceRepos能拉什么代码哪里destinations能部署能创建什么资源clusterResourceWhitelist/namespaceResourceWhitelist说实话这是 GitOps 多租户的基石少了它后面的隔离全是空谈。第七步不要迷信“最佳实践”最后想吐槽一句。网上有很多现成的“ArgoCD 最佳实践”模板但这玩意儿不能直接套用。Red Hat 的专家也说了要根据你的组织结构和 YAML 管理工具来调整。如果你们团队结构扁平项目简单一个 ArgoCD 实例 Helm/Kustomize 就够用了。如果你们是平台团队服务多个业务单元那必须上多实例 AppProject 严格的权限控制。如果你们还在用原始 YAML别急着上 Kustomize先评估一下切换成本。声明本文所有实践建议都来自我个人的生产实践和 Red Hat 官方推荐不要无脑抄要理解背后的原理。总结ArgoCD 是一个很牛的工具但用好它不光是要会配更是要对 GitOps 的设计原则有深入理解。资源限制防止一台机器被吃掉。工具选择Helm 或 Kustomize别自己手写 YAML。仓库分离源代码和清单库分开。

相关新闻

Claude-Code源码解读--自主运行模式ProActive篇 --持续更新中...

Claude-Code源码解读--自主运行模式ProActive篇 --持续更新中...

这是 Claude Code 的一种自主运行模式&#xff1a;没人发消息时&#xff0c;Claude 也会自己找事做。没人说话时 Claude 自己找活干核心行为&#xff1a;自己驱动对话 — 不等用户下指令&#xff0c;会主动探索、执行、推进任务周期性唤醒 — 系统会发 <tick> 提示&#…

2026/7/3 5:55:31 阅读更多 →
SkillBridge:如何用Python无缝对接Cadence Virtuoso实现EDA自动化?

SkillBridge:如何用Python无缝对接Cadence Virtuoso实现EDA自动化?

SkillBridge&#xff1a;如何用Python无缝对接Cadence Virtuoso实现EDA自动化&#xff1f; 【免费下载链接】skillbridge A seamless python to Cadence Virtuoso Skill interface 项目地址: https://gitcode.com/gh_mirrors/sk/skillbridge 在电子设计自动化&#xff0…

2026/7/3 5:51:30 阅读更多 →
通透菠萝_Fantasyland是什么意思

通透菠萝_Fantasyland是什么意思

引言:大菠萝里那个让人上头的词——Fantasyland 玩 OFC(Open Face Chinese,中文常叫"大菠萝扑克")稍微久一点,你一定会反复听到一个词:Fantasyland(有人直接叫"梦幻岛")。老玩家一提到它就两眼放光,新手却常常一头雾水:它到底是什么?为什么大家都想进?这…

2026/7/3 5:51:30 阅读更多 →

最新新闻

Gopeed下载器:你的全平台多协议下载终极解决方案

Gopeed下载器:你的全平台多协议下载终极解决方案

Gopeed下载器&#xff1a;你的全平台多协议下载终极解决方案 【免费下载链接】gopeed A fast, modern download manager for HTTP, BitTorrent, Magnet, and ed2k. Cross-platform, built with Golang and Flutter. 项目地址: https://gitcode.com/GitHub_Trending/go/gopee…

2026/7/3 7:03:53 阅读更多 →
企业级开源安全利器,整合漏洞管理、基线检查,威胁狩猎、情报联动,适配政企服务器安全运维

企业级开源安全利器,整合漏洞管理、基线检查,威胁狩猎、情报联动,适配政企服务器安全运维

0x01 工具介绍 MxCwpp是一款企业级开源安全利器&#xff0c;聚焦政企服务器安全运维场景。平台深度整合漏洞管理、合规基线检查、威胁狩猎、威胁情报联动核心能力&#xff0c;支持主机与容器全维度安全防护&#xff0c;内置丰富合规规则与检测策略&#xff0c;可实现风险发现、…

2026/7/3 7:01:53 阅读更多 →
ChatGPT批量任务处理全链路优化(从Prompt批量化到结果结构化校验)

ChatGPT批量任务处理全链路优化(从Prompt批量化到结果结构化校验)

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;ChatGPT批量任务处理的范式演进与核心挑战 从早期单次API调用的手动编排&#xff0c;到如今基于异步队列、批处理中间件与智能重试策略的工程化流水线&#xff0c;ChatGPT批量任务处理正经历从“脚本式运维”向…

2026/7/3 6:59:52 阅读更多 →
ModernFlyouts终极指南:5分钟打造现代化Windows控制面板

ModernFlyouts终极指南:5分钟打造现代化Windows控制面板

ModernFlyouts终极指南&#xff1a;5分钟打造现代化Windows控制面板 【免费下载链接】ModernFlyouts A modern Fluent Design replacement for the old Metro themed flyouts present in Windows. 项目地址: https://gitcode.com/gh_mirrors/mo/ModernFlyouts 厌倦了Win…

2026/7/3 6:59:52 阅读更多 →
2024年VTubeStudio插件开发生态全景:WebSocket API架构与多语言集成技术栈深度解析

2024年VTubeStudio插件开发生态全景:WebSocket API架构与多语言集成技术栈深度解析

2024年VTubeStudio插件开发生态全景&#xff1a;WebSocket API架构与多语言集成技术栈深度解析 【免费下载链接】VTubeStudio VTube Studio API Development Page 项目地址: https://gitcode.com/gh_mirrors/vt/VTubeStudio 技术生态演化&#xff1a;从实时交互到插件化…

2026/7/3 6:57:51 阅读更多 →
AI Coding 的底层框架:一切优化都是在对抗熵增

AI Coding 的底层框架:一切优化都是在对抗熵增

导读 为什么 Prompt 写得再细&#xff0c;AI 还是会输出奇怪的结果&#xff1f;为什么新项目 AI 很好用&#xff0c;历史业务却总是翻车&#xff1f;本文作者从信息论出发&#xff0c;用一个简单的框架帮你拆解 AI Coding 里的种种困惑——当你不再跟着新概念焦虑&#xff0c;而…

2026/7/3 6:55:51 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述&#xff1a;为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473&#xff0c;一个关于TLS/SSL协议重协商机制的漏洞&#xff0c;现在提起来还有必要吗&#xff1f;很多运维和开发朋友可能会觉得&#xff0c;这都老掉牙了&#xff0c;现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述&#xff1a;为什么需要双通道远程管理防火墙&#xff1f;在任何一个稍具规模的企业网络里&#xff0c;防火墙都是那个默默守护在边界的关键角色。作为网络工程师&#xff0c;我们不可能每次都跑到机房&#xff0c;插上console线去配置它。远程管理能力&#xff0c;…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述&#xff1a;AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域&#xff0c;同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件&#xff0c;与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻