Jenkins & Kubernetes 如何协同工作

温馨提示:这篇文章已超过777天没有更新,请注意相关的内容是否还可用!

一、总体架构

Jenkins,作为一款开源的持续集成/持续部署工具,是一个基于Java的独立应用程序。Jenkins拥有庞大的社区和丰富的插件库,支持各种软件开发项目的构建、部署和自动化。

得益于其开放性,Jenkins可以轻松实现与容器编排引擎Kubernetes结合。本文将对Jenkins 与 Kubernetes如何协作以实现持续集成作出介绍。

Jenkins & Kubernetes 如何协同工作 第1张

上图显示了以Jenkins为核心,配合Git,Kubernetes等软件或工具组成的持续集成结构图。图中的步骤按序号分别为如下内容:

1. 用户本地创建带有镜像构建文件(Dockerfile)的代码仓库并提交;

2. 将代码仓库推送到远程仓库;

3. 远程代码仓库收到用户提交的代码,再根据设置的触发器(Trigger),触发Jenkins 自动构建;

4. Jenkins 的 CI 流水线自动编译代码,打包成 docker 镜像推送至 Harbor 镜像仓库;

5. Jenkins 的 CI 流水线中包括了自定义脚本,根据已备好的 Kubernetes 的 YAML 模板,将其中的变量替换成用户输入的选项;

6. 生成应用的 Kubernetes YAML 配置文件;

7. 更新 Ingress 的配置,根据新部署的应用的名称,在 ingress 的配置文件中增加一条路由信息;

8. 更新 PowerDNS,向其中插入一条 DNS 记录,IP 地址是边缘节点的 IP 地址;

9. Jenkins 调用 Kubernetes 的 API,部署应用。

以上便是完整的持续集成流程。

二、协作方式

Jenkins 和 Kubernetes 是如何进行协作的?详见下图。

Jenkins & Kubernetes 如何协同工作 第2张

从图中可以看到,每当用户触发一个Jenkins job时,Jenkins 的Kubernetes 插件都会通过调用 API 来创建 Kubernetes 代理 pod。该代理pod会被部署到Kubernetes 中,其中含有一些环境变量,包含Jenkins服务器的详细信息和秘钥。

当代理 pod 出现时,其使用的环境变量中的详细信息将使用 JNLP 方法与 Jenkins 交互。下图为代理 pod 的环境变量。

Jenkins & Kubernetes 如何协同工作 第3张

Jenkinsfile 中的所有构建步骤都在该 pod 上运行。构建完成后,pod 将自动终止。用户可通过一些选项来保留pod的构建。

Jenkins Kubernetes 插件负责从 Jenkins 到 Kubernetes 集群的所有通信。

只要Kubernetes 集群是可扩展的,Jenkins 构建代理便可任意扩展。

参考文献

[1] How to Setup Jenkins Build Agents on Kubernetes

[2] Best 14 CI/CD Tools You Must Know | Updated for 2022

九七分享吧所有文章来源于网络收集整理,如有侵权请联系QQ2387153712删除,如果这篇文章对你有帮助或者还不错的请给小编点个小赞(◠‿◠),小编每天整理文章不容易(ಥ_ಥ)!!!

文章版权声明:除非注明,否则均为九七分享吧原创文章,转载或复制请以超链接形式并注明出处。

相关阅读

苹果 iOS/iPadOS 15.4.1 正式版发布

哎呦,被盗哦!周杰伦无聊猿NFT疑被钓鱼,价值超300万

“蔚小理”一季度成绩单:小鹏理想均跨过三万辆门槛,蔚来垫底

最完整的人类基因组序列,今天凌晨公布了!

手机行业不景气了?国产厂商大砍单:1.7亿订单取消

快手或将受益于互联网监管

我国实现首例V频段低轨卫星测控

北京外卖封签上线首日调查:1个封签约2分钱,已大面积推广

iPhone更换微信图标教程,安卓:不就是换个主题?

豆瓣关闭私密小组,壮士断腕为时未晚

台积电将5nm产量提高到15万片/月

京东增持京东物流 为了挽救股价还是应对激烈竞争?

发表评论

表情:
评论列表 (暂无评论,357人围观)

还没有评论,来说两句吧...

取消
微信二维码
微信二维码
支付宝二维码