持续集成环境给自动化测试以及敏捷实施提供了很大的支持。而主流的持续集成方案有两种:

1、svn+jenkins+docker

svn负责代码版本维护,而jenkins负责构建,而docker则负责镜像管理以及运行容器跑应用。

2、gitlab+jenkins+k8s

大致工作流程:

  手动/自动构建

-> Jenkins 调度 K8S API

->动态生成 Jenkins Slave pod

-> Slave pod 拉取 Git 代码/编译/打包镜像

->推送到镜像仓库 Harbor

-> Slave 工作完成,Pod 自动销毁

->部署到测试或生产 Kubernetes平台。(完全自动化,无需人工干预)

优点:

服务高可用:
当 Jenkins Master 出现故障时,Kubernetes 会自动创建一个新的 Jenkins Master
容器,并且将 Volume 分配给新创建的容器,保证数据不丢失,从而达到集群服务高可用。

动态伸缩,合理使用资源:
每次运行 Job 时,会自动创建一个 Jenkins Slave,Job 完成后,Slave 自动注销并删除容器,资源自动释放,而且 Kubernetes 会根据每个资源的使用情况,动态分配Slave 到空闲的节点上创建,降低出现因某节点资源利用率高,还排队等待在该节点的情况。

扩展性好:
当 Kubernetes 集群的资源严重不足而导致 Job 排队等待时,可以很容易的添加一个 Kubernetes Node 到集群中,从而实现扩展。
 

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐