1987WEB视界-分享互联网热门产品和行业

您现在的位置是:首页 > WEB开发 > 正文

WEB开发

Jenkins+K8S搭建CI—CD集群

1987web2023-10-06WEB开发153
我们使用Jenkins+K8S搭建一个可以容量可以弹性伸缩的CI/CD集群。这个集群包括一个JenkinsMaster,JenkinsMaster链接K8S集群,根据CI/CD工作数量动

我们使用Jenkins + K8S 搭建一个可以容量可以弹性伸缩的CI/CD集群。这个集群包括一个Jenkins Master,Jenkins Master 链接 K8S集群,根据CI/CD工作数量动态在K8S集群里面创建Jenkins Salve Pod,由Jenkins Salve 完成CI/CD工作。

我们的CI/CD集群包括1个Jenkins Master、部署在K8S集群上的可动态伸缩的 Jenkins Salve集群,为实现统一代码源、统一制品源和代码质量扫描,后续加上GitLab、Nexus OSS 3和SonarQube.我们设计的Jenkins CI/CD集群部署图如下:

Jenkins CI/CD 集群部署步骤如下:

使用Docker安装Jenkins Master

Docker 安装命令如下:

1
dockerrun-d--namejenkins-p8080:8080-p50000:50000-vjenkins_data:/var/jenkins_homejenkins/jenkins:lts

-p 8080:8080 Jenkins端口映射到主机的8080-P 50000:50000 Jenkins Slave 通过50000与Jenkins Master连接-v -v jenkins_data:/var/jenkins_home Jenkins Master的数据目录挂载到主机的Jenkins_data下面

启动Jenkins Master 后在控制日志中可以看到Jenkins Master的管理员Admin 初始密码。

输入控制台(terminal)上显示的初始密码。

点击【continue】安装默认插件

配置访问Jenkins URL

Jenkins Maste 初始安装完成,即可开始使用Jenkins!

安装连接kubernets集群和Kunbernets持续集成和部署的插件

进入 Manage Jenkins -> Manage Plugin 页面

进入 Mange Plugin -> Available页面查找安装 Kubernets 插件和kubernets continiu Deployment插件。

安装安装 Kubernets 插件和kubernets continiu Deployment插件,完成安装后重启Jenkins Master

配置 Kubernets 集群连接

重启Jenkins Master以后,重新登录Jenkins Maser,在Dashboard页面点击 【Config a Cloud】选项。

进入后点击【Kubernets Detail】,在 Credentials属性中上传访问kubernetes集群的config文件。

配置完Credentials后可以测试Jenkins Master是否可以成功连接Kubernetes集群。

配置Jenkins Master的访问页面和Jenkins Master 连接 Jenkins Salve的地址和端口

配置Jenkins Salve Pod模板,模板名称为kube.

Pod 模板中 jenkins pod 的Label 为 kubepod,Jenkins master 可以设置job只允许在Label为kubpod的Pod中,另外设置Container Template, Name 为 jnlp-slave ,Docker images 为 jenkins/jnlp-slave:latest

最后设置Container 的环境变量,Kye :JENKINS_URL value:http:192.168.46.170:8080

验证Jenkins Master 在K8S集群中动态生成 Jenkins Salve 节点部署应用

创建一个Freestyle Jenkins项目,选择Label满足 kubepod

运行job查看kubernets中Jenkins Salve 的动态创建和销毁

pipeline支持的指令

基本结构满足不了现实多变的需求。所以,Jenkins pipeline通过各种指令(directive)来丰富自己。指令可以被理解为对Jenkins pipeline基本结构的补充。

Jenkins pipeline支持的指令有:

• environment:用于设置环境变量,可定义在stage或pipeline部分。• tools:可定义在pipeline或stage部分。它会自动下载并安装我们指定的工具,并将其加入PATH变量中。• input:定义在stage部分,会暂停pipeline,提示你输入内容。• options:用于配置Jenkins pipeline本身的选项,比如options {retry(3)}指当pipeline失败时再重试2次。options指令可定义在stage或pipeline部分。• parallel:并行执行多个step。在pipeline插件1.2版本后,parallel开始支持对多个阶段进行并行执行。• parameters:与input不同,parameters是执行pipeline前传入的一些参数。• triggers:用于定义执行pipeline的触发器。• when:当满足when定义的条件时,阶段才执行。

在使用指令时,需要注意的是每个指令都有自己的作用域。如果指令使用的位置不正确,Jenkins将会报错。

配置pipeline本身(option指令)(用到的时候可以来参考这块)

options指令用于配置整个Jenkins pipeline本身的选项。根据具体的选项不同,可以将其放在pipeline块或stage块中。以下例子若没有特别说明,options被放在pipeline块中。

• buildDiscarder:保存最近历史构建记录的数量。当pipeline执行完成后,会在硬盘上保存制品和构建执行日志,如果长时间不清理会占用大量空间,设置此选项后会自动清理。

参考这个文档:https://weread.qq.com/web/reader/12f320007184556612f32b6k1ff325f02181ff1de7742fc

这节比较有用,可以参考下

在声明式pipeline中使用脚本

Jenkins pipeline专门提供了一个script步骤,你能在script步骤中像写代码一样写pipeline逻辑。

pipeline{agentanystages{stage(Hello){steps{script{defs = "Hello World"printlns}echoHello World
                                

Jenkins学习笔记

本学习笔记参考《Jenkins2.x实践指南》。

  • 下一篇Jenkins的安装和部署(jenkins教程)

    Jenkins的安装和部署(jenkins教程)

    一、jenkins的下载、安装以及环境的搭建部署。