当前位置: 首页 > 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:扩展选择框参数,支持多选

http://www.xdnf.cn/news/8173.html

相关文章:

  • 8.观察者模式:思考与解读
  • 【SAP ME 44】在 HANA DB中报废SFC时的SHOP_ORDER表记录锁定
  • 设计模式从入门到精通之(五)观察者模式
  • LIB-ZC, 一个跨平台(Linux)平台通用C/C++扩展库, stream 流操作
  • conversation_template | conversation_actors | conversation_line_template
  • 网安加·百家讲坛 | 刘志诚:AI安全风险与未来展望
  • MCP的推出将给未来的开发带来哪些变革?
  • 解决jupyter notebook修改路径下没有c.NotebookApp.notebook_dir【建议收藏】
  • 第五章 SQLite数据库:4、SQLite 进阶用法:常见的约束、PRAGMA 配置、数据操作
  • 2025年03月中国电子学会青少年软件编程(Python)等级考试试卷(二级)真题
  • 《软件设计师》复习笔记(4.2)——关系代数、函数依赖、范式
  • 下载HBuilder X,使用uniapp编写微信小程序
  • Linux简介
  • 下拉框select标签类型
  • PLOS ONE:VR 游戏扫描揭示了 ADHD 儿童独特的大脑活动
  • 基础数学知识-概率论
  • 机器学习05-CNN
  • 守护进程及gdb调试(新手简略版)
  • 工作总结(十二)——迁移svn单项目到gitlab上,保留历史提交记录
  • 02.Spring_IOC详解
  • Evidential Deep Learning和证据理论教材的区别(主要是概念)
  • test ssl java
  • 【C++指南】哈希驱动的封装:如何让unordered_map/set飞得更快更稳?【上】
  • 数据结构学习笔记 :二叉搜索树与高效查找算法详解
  • React 列表渲染基础示例
  • DFS/BFS专练-搞定图论基础!(从海岛问题过渡至图论基础应用C++/C)
  • 无刷电机槽数相同、转子极数不同的核心区别
  • Nacos安装及数据持久化
  • ESP32之本地HTTP服务器OTA固件升级流程,基于VSCode环境下的ESP-IDF开发(附源码)
  • 【Spring Boot】MyBatis入门:连接Mysql数据库、测试单元、连接的常见错误