DevOps中Jenkins的使用

学习参考资源:

https://www.jenkins.io/doc/book/getting-started/

https://www.bilibili.com/video/BV1fnwhe2EWe/?spm_id_from=333.1391.0.0&p=9&vd_source=0372d3f32c3f19a6a2676a7529d6698a

https://www.bilibili.com/video/BV18z421i7oB/?spm_id_from=333.1391.0.0&vd_source=0372d3f32c3f19a6a2676a7529d6698a

DevOps中Jenkins的使用

Jenkins 是DevOps 中常用的pipeline 工具,想通过此贴来记录和收集一些 Jenkins 在实际项目里的架构和使用方式。

抛砖引玉,先介绍一下我接触过项目的Jenkins的使用方式。

云迁移项目,部分APP在云平台上自建的k8s中,部分APP在云平台VM中,还有部分APP无法迁移的在本地数据中心

项目中环境也比较多,有 dev, sit, uat, stg, pre-prod, prod. 每个环境不完全相同,但都包含上面的各种APP。

问题一:这里就会有一个问题,如何部署Jenkins 才能更好的为以上这些环境服务?可以有下面这些部署方式,

a. 为每个环境部署一个Jenkins

b. 部署一个Jenkins给所有环境使用。(其实部署一个多节点的Jenkins cluster为所有环境使用,也是可行的。)

c. 部署一个Jenkins master节点,然后为每个环境部署一个slave节点。

可以看到方式 c 会更好一些,同时兼顾统一性和独立性。考虑到安全性,在实际项目里,可能还会把生产和非生产环境分开在两个Jenkins master里操作。

 

问题二:这里会有另一个问题,那就是master节点要部署在什么地方?slave节点要怎么选?

1. 可以看到master节点的部署有这几个选择,云平台VM,云平台k8s,  本地数据中心。

只要网络能通,其实上面3种方式都可以,可以使用容器运行master,另外如果是第二种云平台k8s的话,应使用区别于环境的,独立的k8s来部署会比较好。

2. Slave节点同样有几种选择,环境中的某一台VM作为slave,环境中的k8s里启动slave。

VM方式更简单通用,k8s启动也可以尝试。VM 可以选单独的 VM,也可以选 master, slave 节点, 可自行考虑利弊。

 

问题三:第三个问题是用什么方式到k8s里做部署?

其实取决于项目需求,有的项目属于非完全性迁移项目,它只是把运行环境迁移到云平台了,但是项目的开发架构还是传统架构,不是微服务架构,这种的话就可以继续使用传统的部署方式

另外就是即转了微服务架构,又迁移到了云平台,这就可以考虑使用云原生的部署工具,Helm,ArgoCD等

Helm的方式我接触多些,这里会涉及到一个粒度的问题,是否把每个微服务做成一个APP,还是按功能模块多个微服务做一个APP,还是所有放一起做成一个APP配合template来部署使用,这些也都是需要考虑的。

 

以上是我基于自己不多的经验的一些相关思考,希望能启发到大家,也想抛砖引玉,看大家是怎么做的,有没有更好的方式,更好的工具,可以分享讨论。thanks

 

posted @ 2025-04-23 11:08  呆瓜小贼66  阅读(57)  评论(1)    收藏  举报