当前位置: 首页 > news >正文

【2】CICD持续集成-k8s集群中安装Jenkins

一、背景:

Jenkins是一款开源 CI&CD 系统,用于自动化各种任务,包括构建、测试和部署。
Jenkins官方提供了镜像:https://hub.docker.com/r/jenkins/jenkins
使用Deployment来部署这个镜像,会暴露两个端口:8080 Web访问端口,50000 Slave通
信端口,容器启动后Jenkins数据存储在/var/jenkins_home目录,所以需要将该目录使用
PV持久化存储。

二、配置PV持久化存储

1、部署NFS共享服务器
在所有节点安装NFS软件包:

yum install nfs-utils -y

2、找一个节点作为NFS共享存储服务器

# 选一个集群节点,创建pv目录
mkdir -p /ifs/kubernetes/jenkins-data
#修改配置
vi /etc/exports
/ifs/kubernetes 192.168.1.0/24(rw,no_root_squash)# 启动并设置开机自启
systemctl start nfs
systemctl enable nfs

三、部署Jenkins

3.1 Jenkins部署yaml文件(jenkins.yaml)

apiVersion: apps/v1
kind: Deployment 
metadata:name: jenkinslabels:name: jenkins
spec:replicas: 1selector:matchLabels:name: jenkins template:metadata:name: jenkinslabels:name: jenkinsspec:terminationGracePeriodSeconds: 10serviceAccountName: jenkinscontainers:- name: jenkinsimage: jenkins/jenkins:ltsimagePullPolicy: Alwaysports:- containerPort: 8080- containerPort: 50000resources:limits:cpu: 1memory: 1Girequests:cpu: 0.2memory: 200Mienv:- name: JAVA_OPTSvalue: -Xmx1g volumeMounts:- name: jenkins-homemountPath: /var/jenkins_homesecurityContext:fsGroup: 1000runAsUser: 0volumes:- name: jenkins-homepersistentVolumeClaim:claimName: jenkins-home
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: jenkins-home
spec:accessModes: ["ReadWriteOnce"]resources:requests:storage: 5Gi
---
apiVersion: v1
kind: Service
metadata:name: jenkins
spec:selector:name: jenkinstype: NodePortports:- name: httpport: 80targetPort: 8080protocol: TCPnodePort: 30006- name: agentport: 50000protocol: TCP
---
apiVersion: v1
kind: ServiceAccount
metadata:name: jenkins---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: jenkins
rules:
- apiGroups: [""]resources: ["pods","events"]verbs: ["create","delete","get","list","patch","update","watch"]
- apiGroups: [""]resources: ["pods/exec"]verbs: ["create","delete","get","list","patch","update","watch"]
- apiGroups: [""]resources: ["pods/log"]verbs: ["get","list","watch"]
- apiGroups: [""]resources: ["secrets","events"]verbs: ["get","list","watch"]---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:name: jenkins
roleRef:apiGroup: rbac.authorization.k8s.iokind: Rolename: jenkins
subjects:
- kind: ServiceAccountname: jenkins---
apiVersion: v1
kind: PersistentVolume
metadata:name: pv0001
spec:capacity:storage: 5GiaccessModes: ["ReadWriteOnce"]nfs:path: /ifs/kubernetes/jenkins-data # 前面步骤选择的pv存储节点目录server: 192.168.1.20 # 前面步骤选择的pv存储节点ip

3.2 执行部署Jenkins

kubectl apply -f jenkins.yaml

3.3 验证部署效果

. 查看pod创建情况

kubectl get pods

状态为Running则表示成功
在这里插入图片描述
登录地址:
http://nodeIp:30006

. 从日志中找到初始登录token

# podId 通过 kubectl get pods 命令查询
kubectl logs -f <podId>

在这里插入图片描述

四、在Jenkins安装cicd相关插件

管理Jenkins->系统配置–>管理插件–>分别搜索Git Parameter/Git/Pipeline/kubernetes/Config File Provider,
选中点击安装。
• Git:拉取代码
• Git Parameter:Git参数化构建
• Pipeline:流水线
• kubernetes:连接Kubernetes动态创建Slave代理
• Config File Provider:存储配置文件
• Extended Choice Parameter:扩展选择框参数,支持多选

相关文章:

  • 小红书爬虫,小红书api,小红书数据挖掘
  • 在windows上交叉编译opencv供RK3588使用
  • 超导体的应用价值:超导磁探测技术开启科技与生活的新变革
  • 树莓派5+Vosk+python实现语音识别
  • 基于spring boot 集成 deepseek 流式输出 的vue3使用指南
  • 「数据可视化 D3系列」入门第十章:饼图绘制详解与实现
  • 03、GPIO外设(三):标准库代码示例
  • Spring Boot 核心注解全解:@SpringBootApplication背后的三剑客
  • JAVA Web_定义Servlet_处理POST请求【练习】
  • 部署路线Ubuntu_MySQL_Django_绑定域名
  • 如何构建跨平台可复用的业务逻辑层(Web、App、小程序)
  • edge browser for linux debian
  • 基于Django实现农业生产可视化系统
  • MyBatis如何配置数据库连接并实现交互?
  • 为您的照片提供本地 AI 视觉:使用 Llama Vision 和 ChromaDB 构建 AI 图像标记器
  • 第三阶段面试题
  • SpringBoot学习(properties、yml(主流)、yaml格式配置文件)(读取yml配置文件的3种方式)(详解)
  • 使用Lean 4和C#进行数学定理证明与逻辑推理
  • 【前沿】成像“跨界”测量——扫焦光场成像
  • JVM之经典垃圾回收器
  • 山西10岁男孩遭生母和继父殴打遇害,案件庭审延期
  • 84%白化!全球珊瑚正经历最严重最大范围白化现象
  • 最高法:侵犯著作权罪中的“复制发行”不包括单纯发行行为
  • 集合多家“最美书店”,松江成立书店联盟“书香满云间”
  • 杨靖︱“一笔糊涂账”:博马舍与美国革命
  • 主动权益基金一季度重仓股出炉:腾讯跃升至第一,阿里、比亚迪、中芯国际新进前十