基于K8S构建Jenkins持续集成平台

文章目录

  • 安装和配置NFS
    • NFS简介
    • NFS安装
  • 在Kubernetes安装Jenkins-Master
    • 创建NFS client provisioner
    • 安装Jenkins-Master
  • Jenkins与Kubernetes整合
    • 实现Jenkins与Kubernetes整合
    • 构建Jenkins-Slave自定义镜像
  • Jenkins+Kubernetes+Docker完成微服务持续集成
    • 拉取代码,构建镜像

安装和配置NFS

NFS简介

NFS(Network File System),它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。我们可以利用NFS共享Jenkins运行的配置文件、Maven的仓库依赖文件等

NFS安装

我们把NFS服务器安装在192.168.56.111机器上

1)安装NFS服务(在所有K8S的节点都需要安装)

yum install -y nfs-utils

2)创建共享目录

mkdir -p /opt/nfs/jenkins
vi /etc/exports
/opt/nfs/jenkins *(rw,no_root_squash) *代表对所有IP都开放此目录,rw是读写

3)启动服务

systemctl enable nfs 开机启动 
systemctl start nfs 启动

4)查看NFS共享目录

showmount -e 192.168.56.111

在这里插入图片描述

在Kubernetes安装Jenkins-Master

创建NFS client provisioner

nfs-client-provisioner 是一个Kubernetes的简易NFS的外部provisioner,本身不提供NFS,需要现有的NFS服务器提供存储。

1)上传nfs-client-provisioner构建文件
在这里插入图片描述
其中注意修改deployment.yaml,使用之前配置NFS服务器和目录
在这里插入图片描述

2)构建nfs-client-provisioner的pod资源

cd nfs-client
kubectl create -f .

在这里插入图片描述

安装Jenkins-Master

1)上传Jenkins-Master构建文件

在这里插入图片描述

其中有两点注意:
第一、在StatefulSet.yaml文件,声明了利用nfs-client-provisioner进行Jenkins-Master文件存储

在这里插入图片描述

第二、Service发布方法采用NodePort,会随机产生节点访问端口

在这里插入图片描述
2)创建kube-ops的namespace

因为我们把Jenkins-Master的pod放到kube-ops下

kubectl create namespace kube-ops

3)构建Jenkins-Master的pod资源

cd jenkins-master 
kubectl create -f .

4)查看pod是否创建成功

kubectl get pods -n kube-ops

在这里插入图片描述

5)查看信息,并访问

查看Pod运行在那个Node上

kubectl describe pods -n kube-ops

查看分配的端口

	kubectl get service -n kube-ops

在这里插入图片描述

在这里插入图片描述

先安装基本的插件

  • Localization:Chinese
  • Git
  • Pipeline
  • Extended Choice Parameter

在这里插入图片描述

Jenkins与Kubernetes整合

实现Jenkins与Kubernetes整合

在这里插入图片描述

  • Kubernetes 地址 https://kubernetes.default.svc.cluster.local/
  • Kubernetes 命名空间 kube-ops

测试连接成功
在这里插入图片描述

  • Jenkins 地址 http://jenkins.kube-ops.svc.cluster.local:8080/

构建Jenkins-Slave自定义镜像

Jenkins-Master在构建Job的时候,Kubernetes会创建Jenkins-Slave的Pod来完成Job的构建。我们选择运行Jenkins-Slave的镜像为官方推荐镜像:jenkins/inbound-agent:4.13.3-1

pipeline 文件内容如下:

def git_address = "https://gitee.com/qfxcoffee/shield.git"
def git_auth = "gitee"//创建一个Pod的模板,label为jenkins-slave
podTemplate(label: 'jenkins-slave', cloud: 'my-kube', containers: [containerTemplate(name: 'jnlp',image: "jenkins/inbound-agent:4.13.3-1")]
)
{//引用jenkins-slave的pod模块来构建Jenkins-Slave的podnode("jenkins-slave"){// 第一步stage('拉取代码'){checkout([$class: 'GitSCM', branches: [[name: 'master']], userRemoteConfigs: [[credentialsId: "${git_auth}", url: "${git_address}"]]])}}
}

在这里插入图片描述
在这里插入图片描述

  • podTemplate 就是k8s的pod模板
  • label 是模板名字
  • cloud 是云名字 在全局配置里的Cloud里自己填写的
  • containerTemplate 指定在pod里运行的容器

Jenkins+Kubernetes+Docker完成微服务持续集成

拉取代码,构建镜像

1)创建NFS共享目录

让所有Jenkins-Slave构建指向NFS的Maven的共享仓库目录

mkdir -p /opt/nfs/maven
vi /etc/exports 添加内容: 
/opt/nfs/jenkins *(rw,no_root_squash) 
/opt/nfs/maven *(rw,no_root_squash) 
systemctl restart nfs 重启NFS
showmount -e 192.168.56.111

在这里插入图片描述

  1. jenkins/inbound-agent:4.13.3-1镜像里面并没有Maven环境,为了方便使用,我们需要自定义一个新的镜像
docker build -t jenkins-slave-maven:latest .

在这里插入图片描述

2)创建项目,编写构建Pipeline

chmod -R 777 /opt/nfs/maven
chmod 777 /var/run/docker.sock
chown .1000 /var/run/docker.sock
chown .1000 /usr/bin/docker
groupadd -g 1000 jenkins     && useradd -u 1000 -g jenkins -m jenkins
vim /etc/sudoers

在这里插入图片描述

  • 编写流水线脚本

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/6991.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全栈低代码:前后端业务需求实现100%覆盖!

工具背景: 织信低代码平台“组件设计器”功能专为对个性化定制页面需求较为强烈的用户准备的,该功能组件十分丰富和强大,还融合了AI智能,能够帮助用户0成本起步,平均花1-2个小时就能快速构建一套网站、APP、小程序。 …

期权如何开户的流程是什么样的?

今天期权懂带你了解期权如何开户的流程是什么样的?期权账户开户是指投资者向期权经纪商或金融机构提交申请,以便可以在期权市场上进行交易并持有期权合约的账户开设过程。 期权如何开户的流程是什么样的? 1. 投资者参与营业部提供的股票期权…

Windows环境下VSCode C环境配置

前言: 本文记录了自己在配置 Windows环境下 VSCode C开发环境的遇到的问题和解决方法。 参考: vscode c语言没有代码提示_clangd提示不生效-CSDN博客 VSCODE无法跳转_vscode 不能跳转-CSDN博客 vscode c/c环境配置(MinGW)调用第三官方库…

​​【收录 Hello 算法】3.2 基本数据类型

目录 3.2 基本数据类型 3.2 基本数据类型 当谈及计算机中的数据时,我们会想到文本、图片、视频、语音、3D 模型等各种形式。尽管这些数据的组织形式各异,但它们都由各种基本数据类型构成。 基本数据类型是 CPU 可以直接进行运算的类型&#xff0c…

【软件工程】测试

目录 前言软件测试的目标测试准则测试方法测试方案(重点)白盒测试(重点)逻辑覆盖测试语句覆盖判定覆盖(分支覆盖)条件覆盖判定/条件覆盖条件组合覆盖总结 基本路径覆盖法 黑盒测试等价类法边界值分析法 软件…

从自定义一个作用域开始来了解SpringBean的作用域

你好,这里是codetrend专栏“Spring6全攻略”。 在 Spring 框架中,Bean 的作用域(Scope)定义了 Bean 实例在容器中如何创建、管理和销毁的策略。 Spring 提供了多种 Bean 作用域,每种作用域都有其特定的生命周期和适用…

spi 驱动-数据发送流程分析

总结 核心函数是spi_sync, 设备驱动->核心函数-> 控制器驱动 实例分析 (gdb) c Continuing.Thread 115 hit Breakpoint 1, bcm2835_spi_transfer_one (master0xffffffc07b8e6000, spi0xffffffc07b911800, tfr0xffffff8009f53c40) at drivers/spi/spi-bcm2835…

Day45代码随想录动态规划part07:70. 爬楼梯(进阶版)、322. 零钱兑换、279.完全平方数、139.单词拆分

Day45 动态规划part07 完全背包 70. 爬楼梯&#xff08;进阶版&#xff09; 卡码网链接&#xff1a;57. 爬楼梯&#xff08;第八期模拟笔试&#xff09; (kamacoder.com) 题意&#xff1a;假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬至多m (1 < m < n)个…

导数和偏导数练习

导数题目列表 偏导数题目列表 这里是上述50个导数和偏导数练习题的答案&#xff1a; 导数答案列表 偏导数答案列表 更多问题咨询 Cos机器人

Linux之命令行参数与环境变量

命令行参数&环境变量 命令行参数 main函数也是一个函数&#xff0c;其实也可以携带参数的 int main( int argc, char *argv[ ], char *envp[ ] ) {program-statements } 那这里是有三个参数的: 第一个参数&#xff1a; argc 是个整型变量&#xff0c;表示命令行参数的个数…

ABAP 第二代增强-采购申请子屏幕增强

文章目录 第二代增强-采购申请子屏幕增强需求实现过程创建项目运行效果客户屏幕的PBO全局变量获取数据更新数据运行效果查询底表修改数据 第二代增强-采购申请子屏幕增强 需求 实现过程 创建项目 运行效果 客户屏幕的PBO 全局变量 *&------------------------------------…

关于Docker的数据管理

文章目录 一、Docker的数据管理1、数据卷1.1 数据卷定义1.2 数据卷配置 2、数据卷容器2.1 创建数据卷容器2.2 使用--volume-from来挂载luck02 二、端口映射三、容器互联1、创建容器互联2、进入luck02测试&#xff08;ping 容器名/别名&#xff09; 四、Docker镜像的创建1、基于…

Java类文件.class详解

一、编译型语言和解释型语言的区别 1、编译型语言&#xff1a; 在编译型语言中&#xff0c;源代码会被整个编译成机器码或者中间代码&#xff08;比如Java的字节码&#xff09;&#xff0c;生成可执行文件。 运行程序时&#xff0c;不需要再对源代码进行解释&#xff0c;而是…

vue3怎么使用i18n

在 Vue 3 中使用国际化&#xff08;i18n&#xff09;通常涉及到使用 Vue I18n Next&#xff0c;这是 Vue 3 的官方国际化插件。以下是如何设置和使用 Vue I18n Next 的步骤&#xff1a; 1. 安装 Vue I18n Next 使用 npm 或 yarn 安装 Vue I18n Next&#xff1a; npm install …

Yarn的安装及使用

YARN的安装及使用主要分为以下几个步骤&#xff1a; 一、安装YARN YARN的安装依赖于Node.js的运行环境&#xff0c;因此需要先安装Node.js。 下载并安装Node.js&#xff1a;可以从Node.js官网下载并安装适合你操作系统的Node.js安装包。安装YARN&#xff1a; 在Windows系统…

RockChip Android13 NFC SL6320移植

环境:RK3568 Android13 一:驱动移植 1、驱动 将SL6320驱动代码拷贝至kernel-5.10/drivers/misc/sl6320/ 特殊说明:勿将驱动代码放置于kernel-5.10/drivers/nfc/目录下,会导致sl6320驱动生成设备节点时因/dev/nfc节点以创建而加载失败。 2、DTS 本次硬件设计电路走I2C协…

服务器数据恢复—多块磁盘离线导致阵列瘫痪,上层lun不可用的数据恢复案例

服务器存储数据恢复环境&#xff1a; 某品牌MSA2000存储&#xff0c;该存储中有一组由8块SAS硬盘&#xff08;其中有一块热备盘&#xff09;组建的RAID5阵列&#xff0c;raid5阵列上层划分了6个lun&#xff0c;均分配给HP-Unix小型机使用&#xff0c;主要数据为oracle数据库和O…

【LeetCode刷题】34. 在排序数组中查找元素的第一个和最后一个位置

1. 题目链接 34. 在排序数组中查找元素的第一个和最后一个位置 2. 题目描述 3. 解题方法 找到元素的第一个位置&#xff0c;也就是找大于等于目标的最小值找到元素的最后一个位置&#xff0c;也就是找小于等于目标的最大值可以利用2次二分查找来解决 3.1. 第一次查找 3.2. …

今日详解,教你如何不直播在视频号卖货

大家好&#xff0c;我是电商笨笨熊 视频号作为背靠微信的平台&#xff0c;从不需要考虑自身的流量问题&#xff0c; 因此在视频号推出之后就有大批的主播从其他平台转入视频号&#xff1b; 而这时候很多普通人应该也发现了新的机会&#xff0c;不再去内卷抖音、快手直播&…

【Git】Github创建远程仓库并与本地互联

创建仓库 点击生成新的仓库 创建成功后会生成一个这样的文件 拉取到本地 首先先确保本地安装了git 可以通过终端使用 git --version来查看是否安装好了git 如果显示了版本信息&#xff0c;说明已经安装好了git&#xff0c;这时候我们就可以进入我们想要clone到问目标文件夹 …