Rancher、Docker、K8s、Jenkins、ArgoCD:五个工具,一条流水线
云原生后端的技术栈很长但真正串起从代码到上线这条主线的就五个工具Docker、Jenkins、K8s、ArgoCD、Rancher。每个工具解决一个特定问题环环相扣。这篇文章不讲怎么安装只讲清楚两件事每个工具是什么、解决什么问题以及它们怎么串成一条完整的交付流水线。一、五个工具各自是什么先逐个搞清楚定位再看怎么协作。Docker解决环境一致性一句话把应用和它的所有依赖打包成一个不可变的镜像到哪里都能跑。没有 Docker 之前在我机器上能跑是后端开发最常见的甩锅。开发用 Java 11测试环境 Java 8生产环境某个依赖库版本不同——环境不一致导致的 bug 极难排查。Docker 的解法是把代码、运行时、依赖库、配置文件全部打到一个镜像里。镜像是一个不可变的制品开发、测试、生产用的是同一个镜像环境差异从源头消除。产出物一个带版本号的 Docker 镜像如user-service:v1.2.3。Jenkins解决自动化构建一句话代码 push 之后自动触发编译、测试、打包、推镜像全程不需要人干预。Docker 解决了怎么打包但谁来打包还是问题。总不能每次合代码都手动跑mvn package、docker build、docker push。Jenkins 就是那个自动化的流水线引擎。Jenkins 的核心是 Pipeline——一段声明式脚本定义了从代码拉取到镜像推送的完整步骤pipeline{agent any stages{stage(编译){steps{shmvn clean package -DskipTests}}stage(测试){steps{shmvn test}}stage(打镜像){steps{shdocker build -t user-service:v1.2.3 .}}stage(推镜像){steps{shdocker push registry.example.com/user-service:v1.2.3}}}}代码合并到主分支 → Jenkins 自动触发 → 编译 → 测试 → 打镜像 → 推到镜像仓库。CI持续集成到这一步结束。产出物一个已推送到镜像仓库的 Docker 镜像。K8s解决容器编排和调度一句话管理一堆机器上的容器负责自动部署、弹性伸缩、故障自愈、滚动更新。镜像推到仓库了但在哪些机器上跑几个副本、挂了怎么办、流量怎么分过去这些问题 Docker 自己解决不了。K8s 就是那个调度中枢。K8s 里的几个核心概念Pod最小调度单位里面跑一个或多个容器。Deployment定义要跑几个副本、用什么镜像、怎么更新。Service给一组 Pod 提供固定的访问入口IP 和域名Pod 挂了重建换 IPService 不变。Ingress把集群内的 Service 暴露给公网支持域名路由和 HTTPS。ConfigMap/Secret配置和敏感信息管理跟镜像解耦。一份 K8s 部署文件大概长这样apiVersion:apps/v1kind:Deploymentmetadata:name:user-servicespec:replicas:3# 跑 3 个副本selector:matchLabels:app:user-servicetemplate:metadata:labels:app:user-servicespec:containers:-name:user-serviceimage:registry.example.com/user-service:v1.2.3ports:-containerPort:8080K8s 拿着这份 YAML在集群里拉起 3 个 Pod自动负载均衡某个 Pod 挂了会自动重启。产出物一个在集群中稳定运行的应用实例。ArgoCD解决持续部署的配置漂移一句话监听 Git 仓库里的 K8s YAML 变化自动同步到集群保证集群状态和 Git 声明永远一致。CD持续部署有两种模式Push 模式Pull 模式代表Jenkins 做 CDArgoCD方式主动kubectl apply推到集群监听 Git 变化自动拉取并同步配置漂移有人手动改集群Jenkins 不知道集群与 Git 不一致时自动修正回来Push 模式的问题有人在集群里手动改了配置比如改了副本数Jenkins 下次部署会覆盖掉但中间这段时间集群状态和 Git 是不一致的——这叫配置漂移。ArgoCD 用 Pull 模式 GitOps 解决这个问题所有 K8s YAML 存在 Git 仓库里。ArgoCD 持续监听这个仓库。有人改了 Git 里的 YAMLArgoCD 自动同步到集群。有人手动改了集群ArgoCD 发现不一致会强制同步回 Git 的声明。Git 仓库成为唯一真实来源Single Source of Truth。不在集群里敲命令在 Git 里改文件。产出物集群状态与 Git 声明始终一致的持续部署机制。Rancher解决多集群管理一句话统一纳管多个 K8s 集群提供可视化界面、项目隔离、应用商店。一个团队可能有多个 K8s 集群开发集群、测试集群、生产集群甚至多云多地域。每个集群都要kubectl连上去管理切来切去很烦。Rancher 把这些集群统一纳管到一个界面里多集群管理一个页面看到所有集群的状态。可视化操作不用敲kubectl点按钮就能部署、扩缩容、看日志。项目隔离按项目/团队划分权限和资源。应用商店一键安装常用组件监控、日志等。Rancher 不是 K8s 的替代品是 K8s 的管理平台。底下跑的还是 K8sRancher 是上面那层管理面板。产出物一个统一的多集群管理入口。二、五个工具怎么串成一条流水线概念清楚了下面看它们怎么协作。以一个 Spring Boot 服务的完整交付流程为例。完整流程图开发写代码 ↓ Git push 到 GitLab/GitHub ↓ Jenkins 自动触发 CI 流水线 ├→ mvn clean package 编译 ├→ mvn test 单元测试 ├→ docker build 打镜像 └→ docker push 推到 Harbor/ACR ↓ 开发者修改 K8s YAML 仓库 把镜像版本号改成 v1.2.3 ↓ ArgoCD 监听到 Git 仓库变化 ├→ 拉取最新 YAML └→ kubectl apply 到 K8s 集群自动同步 ↓ K8s 拉起新版本 Pod ├→ 滚动更新逐个替换旧 Pod ├→ Service 流量自动切换 └─ 故障自愈Pod 挂了自动重启 ↓ Rancher 界面查看部署状态 ├→ 看 Pod 日志 ├→ 看资源使用率 └→ 排障、扩缩容逐环节拆解环节 1开发提交代码开发者写完 Spring Boot 代码本地用 Docker Compose 跑起 MySQL Redis 依赖自测通过后推到 Git 仓库的功能分支发起 MR/PR。代码审查通过后合并到主分支。环节 2Jenkins 做 CIJenkins 监听到主分支有新代码自动触发流水线编译 Java 代码 → 跑单元测试 →docker build打镜像 →docker push推到镜像仓库。到这一步CI 结束。产出物是registry.example.com/user-service:v1.2.3这个镜像。关键点Jenkins 只负责把代码变成镜像不负责部署。很多团队让 Jenkins 直接kubectl apply做 CD这其实混了职责。现代实践是 Jenkins 只管 CI。环节 3改 Git 里的 K8s YAML有一个独立的 Git 仓库存放 K8s 部署文件YAML。CI 完成后开发者或自动化脚本修改这个仓库里的镜像版本号# 从image:registry.example.com/user-service:v1.2.2# 改成image:registry.example.com/user-service:v1.2.3提交这个改动到 Git。环节 4ArgoCD 做 CDArgoCD 持续监听 YAML 仓库。发现 Git 里的镜像版本号变了自动拉取最新 YAML通过kubectl apply同步到 K8s 集群。如果有运维手动在集群里改了配置ArgoCD 会发现集群状态和 Git 不一致强制同步回 Git 的声明。Git 是唯一真实来源。环节 5K8s 执行部署K8s 收到新的 Deployment 声明开始滚动更新逐个创建新版本 Pod就绪后替换旧 Pod旧 Pod 优雅下线。Service 的流量自动切换到新 Pod。如果新版本有问题比如启动失败K8s 的健康检查会阻止新 Pod 接入流量旧版本继续服务给排查争取时间。环节 6Rancher 监控和排障部署完成后开发或运维通过 Rancher 界面查看新版本 Pod 是否全部 RunningPod 日志有没有异常CPU/内存使用率是否正常需要扩容时直接在 Rancher 界面改副本数不用敲kubectl不用切集群上下文一个界面搞定。三、职责边界谁干什么五个工具的职责很容易混淆尤其 Jenkins 和 ArgoCD、K8s 和 Rancher。画个线工具职责不干什么Docker打包应用为镜像不管部署、不管调度JenkinsCI编译→测试→打镜像→推仓库不直接部署到 K8s交给 ArgoCDArgoCDCD监听 Git→同步到 K8s不管编译、不管打镜像K8s容器调度部署、伸缩、自愈不管多集群统一界面交给 RancherRancher多集群管理可视化、纳管不替代 K8s底下还是 K8s最容易踩的坑是让 Jenkins 同时做 CI 和 CD。Jenkins 做 CDPush 模式的问题是没有配置漂移修正能力回滚也不优雅。让 Jenkins 和 ArgoCD 各干各的职责清晰问题好排查。四、一个实际场景串一遍假设要上线用户服务 v2.0增加了新功能手机号登录。开发本地写代码用 Docker Compose 跑依赖自测通过。提交代码推到 Git 功能分支发起 MR审查通过合并到主分支。CIJenkins 自动触发——编译 Java、跑测试、docker build打镜像user-service:v2.0.0、推到 Harbor。改 YAML修改部署仓库的 Deployment YAML镜像版本改成v2.0.0提交到 Git。CDArgoCD 监听到 YAML 变化自动同步到 K8s 测试集群。先在测试集群验证。K8s 部署滚动更新3 个新 Pod 逐个替换旧 PodService 流量自动切换。Rancher 查看在 Rancher 界面看测试集群的 Pod 状态和日志验证没问题。推生产把同一个 YAML 的目标集群改成生产集群ArgoCD 自动同步到生产 K8s。同样的滚动更新流程。监控通过 Rancher 界面看生产集群的 CPU、内存、Pod 状态确认服务稳定。整个过程代码到镜像是 Jenkins 的事镜像到集群是 ArgoCD 的事集群内调度是 K8s 的事多集群看是 Rancher 的事。Docker 贯穿始终提供不可变制品。五、为什么是这五个这五个工具不是随便选的它们刚好覆盖了交付流水线的五个关键环节打包Docker代码怎么变成可部署的制品。构建Jenkins怎么自动化地把代码变成镜像。调度K8s镜像怎么在集群里跑起来、跑得稳。部署ArgoCD怎么把镜像安全、可追溯地推到集群。管理Rancher多个集群怎么统一看、统一管。少一个就有缺口没有 Docker环境一致性没法保证没有 Jenkins手动打包效率低没有 K8s容器调度靠手动没有 ArgoCD部署配置容易漂移没有 Rancher多集群管理靠切命令行。

相关新闻

Java实习生面试:从八股文背诵到技术思维与工程能力的展现

Java实习生面试:从八股文背诵到技术思维与工程能力的展现

1. 从“面试鸭”到“面试官”:一次Java实习面试的深度复盘与拆解最近在带新人,也参与了几场实习生面试,发现很多同学对“面试”这件事的理解还停留在“背八股文”的阶段。一上来就是“HashMap的底层原理”、“Spring Bean的生命周期”&#x…

2026/9/15 13:12:17 阅读更多 →
Vivado启动自动化:Tcl脚本实现FPGA开发环境一键配置

Vivado启动自动化:Tcl脚本实现FPGA开发环境一键配置

1. 项目概述:为什么需要让 Vivado 启动时自动执行脚本?如果你和我一样,常年泡在 FPGA 开发里,每天和 Vivado 打交道的时间可能比和家人还多,那你一定遇到过这些烦人的重复劳动:每次打开 Vivado,…

2026/9/17 12:41:49 阅读更多 →
Frida实战:从原理到代码,彻底破解移动应用SSL Pinning证书绑定

Frida实战:从原理到代码,彻底破解移动应用SSL Pinning证书绑定

1. 项目概述:为什么SSL Pinning是移动安全分析的“拦路虎”?在移动应用安全测试和逆向工程领域,SSL Pinning(证书绑定)是一个我们几乎每天都会遇到的“老朋友”,也是一个让人又爱又恨的技术。爱它&#xff…

2026/9/19 18:16:23 阅读更多 →

最新新闻

ABAP源码解析实战:SCAN ABAP-SOURCE自动化技巧

ABAP源码解析实战:SCAN ABAP-SOURCE自动化技巧

1. 从重复劳动到自动化:ABAP源码解析的实战技巧在SAP项目实施过程中,我们经常会遇到需要从大量ABAP代码中提取特定信息的场景。以我最近处理的CRM工单流程代码为例,include程序LCRM_ORDER_OWF03包含了608行状态判断逻辑,其中分布着…

2026/9/22 1:05:20 阅读更多 →
优酷账号避坑指南:从源码看鉴权逻辑与薪资背后的技术真相

优酷账号避坑指南:从源码看鉴权逻辑与薪资背后的技术真相

优酷账号避坑指南:从源码看鉴权逻辑与薪资背后的技术真相 刚转行搞开发的朋友,是不是经常陷入一种尴尬:Python语法背得滚瓜烂熟,Java的面向对象也懂了,但一让你搭个完整项目,脑子就一片空白?尤其是面对像【优酷账号】这种高并发、强安全的业…

2026/9/22 1:05:20 阅读更多 →
idpan源码深度剖析:3步讲透原理,实战项目避坑指南

idpan源码深度剖析:3步讲透原理,实战项目避坑指南

idpan源码深度剖析:3步讲透原理,实战项目避坑指南 面试被问原理答不上来?这是无数开发者的噩梦。特别是当面试官抛出 idpan 这个看似冷门实则关键的组件时,背八股文的人瞬间卡壳,而做过 实战项目 的人却能结合业务场景流畅作答。…

2026/9/22 1:05:20 阅读更多 →
搞定马克思主义原理考试代码实现最佳实践

搞定马克思主义原理考试代码实现最佳实践

搞定马克思主义原理考试代码实现最佳实践 刚考完市政公用工程监理工程师,或者正准备啃《马克思主义基本原理概论》的朋友,是不是发现了一个尴尬现象:网上所谓的“备考神器”或者“知识点梳理工具”,版本一升级,API…

2026/9/22 1:05:20 阅读更多 →
Leaflet框架:轻量级WebGIS开发的核心优势与实践

Leaflet框架:轻量级WebGIS开发的核心优势与实践

1. Leaflet框架概述与核心优势Leaflet作为当前最流行的轻量级WebGIS开发框架,已经成为前端地图开发领域的标配工具。我在多个实际项目中深度使用Leaflet后,发现其核心价值在于极致的轻量化设计和高度灵活的扩展性。压缩后仅约40KB的体积,却能…

2026/9/22 1:04:20 阅读更多 →
3个配置坑让财付通首页调试卡死图解原理救场

3个配置坑让财付通首页调试卡死图解原理救场

3个配置坑让财付通首页调试卡死图解原理救场 配置环境就卡半天,这种崩溃感谁懂?我上周接手一个旧项目,集成财付通支付接口,光是在 财付通首页…

2026/9/22 1:04:20 阅读更多 →

日新闻

3台商务办公笔记本实测:手写实现环境配置,告别卡半天

3台商务办公笔记本实测:手写实现环境配置,告别卡半天

3台商务办公笔记本实测:手写实现环境配置,告别卡半天 配置环境就卡半天?别怪机器慢,多半是你没选对工具链。在Java、Go或Python的项目现场, 手写实现…

2026/9/22 0:00:41 阅读更多 →
剑帝加点速查手册:3分钟搞懂核心逻辑

剑帝加点速查手册:3分钟搞懂核心逻辑

剑帝加点速查手册:3分钟搞懂核心逻辑 面试被问原理答不上来,是不是常态?别慌。很多开发者对着 GitHub 开源仓库里的代码发呆,看似简单实则暗藏玄机。今天这份【剑帝加点】速查手册,直接带你拆解核心实现,把面试必考的原理讲透。…

2026/9/22 0:00:41 阅读更多 →
手写实现图片压缩网站核心:搞定WebP转换与质量调优

手写实现图片压缩网站核心:搞定WebP转换与质量调优

手写实现图片压缩网站核心:搞定WebP转换与质量调优 复制来的代码跑不通不知道怎么调?别慌,这种“复制粘贴地狱”在开发圈太常见了。尤其是做 图片压缩网站…

2026/9/22 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/21 3:13:20 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/21 2:19:36 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/21 4:51:05 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/21 15:36:51 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/21 15:36:51 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →