首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >从 0 到企业级私有云 | Jenkins 在 CI/CD 中到底算老几?可能 90% 的人都把它的职责搞混了

从 0 到企业级私有云 | Jenkins 在 CI/CD 中到底算老几?可能 90% 的人都把它的职责搞混了

作者头像
用户12454170
发布2026-05-06 20:51:37
发布2026-05-06 20:51:37
330
举报

很多同学在跟着教程搭完 Jenkins + Kubernetes + 镜像构建 + 自动部署这套流水线后,普遍有个感觉:

“步骤我都背下来了,点哪里我也知道,但这玩意儿到底是怎么连起来的?为什么 Jenkins 挂了,K8s 还在跑?为什么镜像推送不是 Jenkins 干的?”

脑子里一团乱,只知其然,不知其所以然。

别慌,今天我们一起来“洗脑”——把 Jenkins 在整个流程中的前后关系职责边界彻底焊死在自己的认知里。


一、先说个得罪人的结论:Jenkins 不是干活的,是喊口号的

很多人有个致命误区:

  • Jenkins = 构建工具 ❌
  • Jenkins = 部署工具 ❌
  • Jenkins = 万能背锅侠 ❌

更精确的定义是:

👉 Jenkins = CI/CD 流程的“编排器 + 调度总司令”

它老人家本身不负责“搬砖”,它只负责三件事:

  1. 喊一嗓子(触发流程)
  2. 指挥排队(编排步骤)
  3. 派谁去干(调度执行节点)

二、结合实战架构,看这张“权力分布图”

结合之前的实验,整个权力架构是这样的:

代码语言:javascript
复制
开发小哥提交代码
        ↓
 Git仓库(敲了敲门:Webhook)
        ↓
 【Jenkins 总指挥中心】
        ↓
K8s 工地(临时搭建一个 Agent Pod 工棚)
        ↓
  Kaniko 工头(在工棚里干活:构建镜像)
        ↓
  Harbor 仓库(存成品镜像)
        ↓
 kubectl 传令兵(喊一句:更新 Deployment!)
        ↓
K8s 集群(真正执行滚动更新、拉镜像、起 Pod)

接下来,我们一层层扒开看,到底谁在指挥谁。


三、第一阶段:发令枪响(Trigger)

1. 代码一推,风云涌动

开发小哥刚敲完 git push,GitLab/GitHub 立刻通过 Webhook给 Jenkins 打了个电话:

“喂?老 Jenkins,代码变了,起来干活!”

2. Jenkins 开始“念剧本”

Jenkins 拿起剧本(Jenkinsfile)一看:

代码语言:javascript
复制
pipeline {
    stages {
        stage("Build") { ... }
        stage("Push") { ... }
        stage("Deploy") { ... }
    }
}

关键点来了:Jenkins 读完剧本,自己不去演,而是拿起对讲机开始叫人。


四、第二阶段:就地扎营(Agent 调度——最容易忽视的关键)

1. 为什么 Jenkins 自己不干?
  • 怕弄脏自己的手(环境污染)
  • 一个人干不过来(不可扩展)
  • 活太多会累死(无法高并发)
2. 真正的执行者:K8s 动态 Agent

流程其实是这样:

代码语言:javascript
复制
Jenkins Master(指挥官)
        ↓ 调用 K8s API
K8s 集群(包工头)
        ↓ 创建资源
一个崭新的 Pod(临时工棚)
        ↓
所有 Pipeline 步骤在这个临时工棚里执行

记住这句话:

👉 Jenkins 只是画大饼的,K8s Pod 才是真正和面的。


五、第三阶段:闷声发大财的构建(Build)

为什么用 Kaniko 而不是 Docker?

因为在 K8s 这个现代化工地里,不允许你搞特权模式(DinD 安全问题太多)。所以换了个不需要特权的狠角色——Kaniko

流程还原:
代码语言:javascript
复制
Pod 里的 Kaniko 读取代码
        ↓
   看 Dockerfile 图纸
        ↓
    吭哧吭哧生成镜像层

Jenkins 在这里干嘛? 👉 只在旁边看着表喊:“Kaniko,赶紧的,下一个环节要开始了!”


六、第四阶段:送货入库(Push)

构建完的镜像还在工棚里,得送到仓库(Harbor)存起来。

代码语言:javascript
复制
本地临时镜像(Pod内)  →  推送到 Harbor

这里涉及两个细节:

  • 认证(得刷门禁卡:Secret)
  • 标签(得贴快递单:v1.0.0 还是 latest)

Jenkins 的角色依然是那个监工

  • 确保 PushBuild之后执行。
  • 如果 Push 失败了,马上拉闸断电,不让这个坏包上线。

七、第五阶段:鸣金收兵(Deploy)

最后一步,执行:

代码语言:javascript
复制
kubectl set image deployment/app app=xxx:v2

这行命令背后发生了什么?

代码语言:javascript
复制
新镜像地址  →  修改 Deployment 定义
                    ↓
              创建新的 ReplicaSet
                    ↓
              一个一个替换旧 Pod(滚动更新)
                    ↓
              业务零中断

Jenkins 的终极职责: 👉 它就是喊出那句 kubectl apply命令的嘴替。真正的排兵布阵、滚动更新、负载均衡,全是 Kubernetes 自己干的。


八、一张表格看懂“数据流”(高手看这,新手记结论)

别光看步骤,要看数据是怎么流动的

数据流类型

流动路径

核心含义

代码流

Git→ Jenkins→ Pod

Jenkins 只负责把代码搬到工棚

镜像流

Pod→ Harbor

Jenkins 管不着,是 Kaniko 和 Harbor 的事

指令流

Jenkins→ K8s API

Jenkins 唯一的实权:调用 API

状态流

K8s→ Jenkins

K8s 告诉 Jenkins 干没干完


九、为什么一定要这么设计?(架构的底层逻辑)

这套架构牛逼在哪?三个字:高内聚,低耦合。

  1. 解耦
    • Jenkins 坏了,K8s 服务照跑。
    • 构建工具换了,Jenkins 剧本改一行就行。
  2. 可扩展
    • 并发构建?来一百个 Pod 工棚同时开工。
  3. 云原生化
    • 用完即焚,Pod 跑完就销毁,绝不残留垃圾文件。

十、这三个坑,踩过的评论区扣 1

  1. ❌ 误区一:Jenkins 负责部署。
    • 正解:Jenkins 只负责下发“部署指令”,具体部署动作是 Kubernetes Controller Manager 做的。
  2. ❌ 误区二:Pipeline 就是 CI/CD。
    • 正解:Pipeline 是剧本,Jenkins 是导演,K8s 是剧组,缺一不可。
  3. ❌ 误区三:构建必须用 Docker。
    • 正解:在 K8s 里用 Docker 就像穿着西装下泥塘,Kaniko/BuildKit 才是正道的光。

十一、写在最后:下一步该怎么卷?

如果你已经搞懂了上面这套逻辑,恭喜你,你已经超越了 80% 的“只会搭环境”的运维。

接下来别做重复实验了,往这三个方向升级:

  1. 引入 GitOps(ArgoCD):让 Jenkins 别喊 kubectl了,改为直接改 Git 仓库,让 ArgoCD 自动同步。更安全,可审计。
  2. 增加质量门禁:在 Build 之后加一步 SonarQube 扫描,代码太烂直接打回去。
  3. 多环境流水线devtestprod,中间加个手动审批按钮。

最后送大家一句话带走:

👉 Jenkins 是大脑,K8s 是躯干,工具是四肢。大脑负责想,四肢负责干。别指望大脑去搬砖。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-04-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一根头发丝的宽度 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、先说个得罪人的结论:Jenkins 不是干活的,是喊口号的
  • 二、结合实战架构,看这张“权力分布图”
  • 三、第一阶段:发令枪响(Trigger)
    • 1. 代码一推,风云涌动
    • 2. Jenkins 开始“念剧本”
  • 四、第二阶段:就地扎营(Agent 调度——最容易忽视的关键)
    • 1. 为什么 Jenkins 自己不干?
    • 2. 真正的执行者:K8s 动态 Agent
  • 五、第三阶段:闷声发大财的构建(Build)
    • 为什么用 Kaniko 而不是 Docker?
    • 流程还原:
  • 六、第四阶段:送货入库(Push)
  • 七、第五阶段:鸣金收兵(Deploy)
  • 八、一张表格看懂“数据流”(高手看这,新手记结论)
  • 九、为什么一定要这么设计?(架构的底层逻辑)
  • 十、这三个坑,踩过的评论区扣 1
  • 十一、写在最后:下一步该怎么卷?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档