当前位置:网站首页>devops学习(三) K8环境部署jenkins
devops学习(三) K8环境部署jenkins
2022-07-29 23:05:00 【默子昂】
我们gitlab上的代码通常是经过大量的测试,确认版本后才发布到生产环境
一、Jenkins CI/CD 概念

1、CI 的过程就是通过jenkins将代码拉取过来,完成代码编译、测试、打包后构建成镜像交给测试人员
持续集成: 让软件代码可以持续的集成到主干(master) ,并完成自动构建和测试
2、CD 过程即是通过jenkins将打好的标签的发行版本拉取、构建、制作镜像交给运维人员部署
持续交付: 让经过持续集成的代码可以进行手动部署
持续部署: 让可以持续交付的代码随时随地的自动化部署通俗的来说
1、ci持续"集成" 就是开发每次发代码时都会触发一个任务
这个任务会自动去拉取最新上传的代码做(编译、测试、打包、构建镜像的操作)
也就是我们说的:latest版本,最新但不一定稳定
2、cd持续"交付" 就是开发每次上传新代码都打个标签
代码上传了N次后,发现最新的几个版本不太稳定,就挑前面正常版本的标签 手动部署
3、cd持续"部署" 我们持续交付只能指定代码的版本标签,还是要手动部署的,每次都整很麻烦
持续部署就是实现一套自动化流程,只要指定好要部署的版本,就能自动跑二、部署jenkins
//jenkin官方地址
https://www.jenkins.io/
//jenkins插件下载地址
https://plugins.jenkins.io/部署
cd /apps/devops_setup/vi jenkins-dev.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: jenkins
namespace: devops
spec:
selector:
matchLabels:
app: jenkins-init
template:
metadata:
labels:
app: jenkins-init
spec:
containers:
- name: jenkins
image: jenkins/jenkins
ports:
- name: http
containerPort: 8080
volumeMounts:
- name: jenkins-home
mountPath: /var/jenkins_home
volumes:
- name: jenkins-home
hostPath:
path: /apps/devops_setup/data/jenkins/data
type: Directory
---
apiVersion: v1
kind: Service
metadata:
name: jenkins-svc
namespace: devops
spec:
ports:
- port: 8080
targetPort: http
nodePort: 30004
selector:
app: jenkins-init
type: NodePort
部署
//创建数据挂载目录,yaml中默认创建的权限不够,需要手动赋予权限
mkdir /apps/devops_setup/data/jenkins/data -p
chmod 777 -R /apps/devops_setup/data/jenkins/data
//部署
kubectl apply -f jenkins-dev.yaml添加jenkins 阿里云加速
cd /apps/devops_setup/data/jenkins/data/vi hudson.model.UpdateCenter.xml
<?xml version='1.1' encoding='UTF-8'?>
<sites>
<site>
<id>default</id>
<url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>
</site>
</sites>
重启下pod
kubectl -n devops delete pod jenkins-59f4db64ff-vcl6c 查容器日志
kubectl -n devops logs jenkins-59f4db64ff-kwjmn大致意思是mirrors.tuna.tsinghua.edu.cn 访问不了,登陆容器查看是否能解析

无法解析域名,我们集群默认部署的都是只去集群内部的dns获取解析,无法解析外部域名
查看容器内部域名解析配置
cat /etc/resolv.conf返回
nameserver 10.96.0.10
search devops.svc.cluster.local svc.cluster.local cluster.local default.svc.cluster.local
options ndots:5
我们需要让容器去使用我们宿主机上dns解析才能够访问外部域名
修改jenkins配置
vi jenkins-dev.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: jenkins
namespace: devops
spec:
selector:
matchLabels:
app: jenkins-init
template:
metadata:
labels:
app: jenkins-init
spec:
dnsPolicy: Default //添加配置
containers:
- name: jenkins
image: jenkins/jenkins
ports:
- name: http
containerPort: 8080
volumeMounts:
- name: jenkins-home
mountPath: /var/jenkins_home
volumes:
- name: jenkins-home
hostPath:
path: /apps/devops_setup/data/jenkins/data
type: Directory
---
apiVersion: v1
kind: Service
metadata:
name: jenkins-svc
namespace: devops
spec:
ports:
- port: 8080
targetPort: http
nodePort: 30004
selector:
app: jenkins-init
type: NodePort
重新部署
kubectl delete -f jenkins-dev.yaml
kubectl apply -f jenkins-dev.yaml登陆容器查看解析

解析配置说明
1、上面添加的dns策略是让我们容器在启动时去挂载宿主机上的/etc/resolv.conf解析配置
2、如果不添加,默认则是只使用集群内部的coredns的配置,不提供外部域名解析
3、如果你容器内部无法链接配置好的加速地址,那么一会访问jenkins会直接显示离线
4、宿主机上的/etc/resolv.conf配置中需要添加上容器内部的解析配置,防止能解析外部域名了,但是无法解析集群域名的问题
5、宿主机上/etc/resolv.conf的配置中nameserver必须要放在前两行,不然会失效,具体看图例访问jenkins页面
http://101.43.4.210:30004
图中有查看密码的路径,需要登陆容器,我们直接去挂载的宿主机去拿
cat /apps/devops_setup/data/jenkins/data/secrets/initialAdminPassword
返回
d02c82da64f844be8d08b9a378c3a6d6选择安装模式
这里选择自定义插件安装,后面我们用什么装什么

等待一会全部装完,如果网络不好等等原因即使安装失败了也没关系后续再下载


用户 root
密码 123456
密码 123456
全名 test
电子邮件地址 [email protected]
如何离线安装插件
我这边试验了很多次插件都可以正常安装的,但我早期的时候安装插件就很崩溃( ̄﹃ ̄)
这里万一有小伙伴前面插件没装上,我们这里就去演示一下
案例 安装中文插件
如果你装完打开和我页面一样就不用动,如果是一片英文选项就操作一下吧

卸载中文插件
删除中文插件需要重启jenkins服务后生效 http://101.43.4.210:30004/restart

登陆jenkins插件官网
https://plugins.jenkins.io/搜索中文插件chinese

这样我们就得到了一个中文插件的链接地址,我们可以通过其他的方法下载到
//切换jenkins插件目录
cd /apps/devops_setup/data/jenkins/data/plugins/
//拉取插件
wget https://updates.jenkins.io/download/plugins/localization-zh-cn/1.0.24/localization-zh-cn.hpi
//重启jenkins服务
http://101.43.4.210:30004/restart 
服务重启后,插件安装完毕

jenkins安装功能性插件
1、git parameter //为jenkins 提供 git 项目拉取
2、Publish Over SSH //为jenkins 提供远程链接主机操作
整合maven、jdk、jenkins组件
//之前我的maven 和jdk都是放在/root下的
mv /root/maven/ /apps/devops_setup/data/jenkins/data/
mv /root/jdk /apps/devops_setup/data/jenkins/data/我们jenkins对应宿主机的挂载目录是/var/jenkins_home/
所以说,我们实际上是放在了/var/jenkins_home/maven 和/var/jenkins_home/jdk目录
jenkins全局配置 (指定maven和jdk路径)
//新增jdk全局配置
名称 jdk
路径 /var/jenkins_home/jdk
//新增maven全局配置
名称 maven
路径 /var/jenkins_home/maven
jenkins定义远程主机
我们刚才安装过一个Publish Over SSH插件,这个插件就是用于指定远程服务器的
当我们maven打好了jar包后,我们要将jar包发送到远程的服务器上做测试部署
创建远程用户目录
//登陆jenkins主机创建
mkdir /usr/local/test定义主机操作演示

主机名称 test
hostname 101.43.4.210
username root
RemoteDirectory /usr/local/test //这个是jenkins链接到这个服务器时的登陆目录
//如果没有该目录测试会报错
这里给Use password authentication, or use a different ke 打勾
然后下面是密码和密钥的配置,我们添加上密码
添加认证密码信息 "宿主机root用户的密码"以上,我们jenkins的基础环境就准备好了( ̄︶ ̄)
边栏推荐
- 乐理&吉他技巧
- 50. Leetcode 】 【 Pow (x, n) (medium) (power) quickly
- 2022年最新甘肃建筑八大员(材料员)模拟考试试题及答案
- [2023 School Recruitment Questions] Summary of knowledge points and hand-tear code in the written test and interview
- cached_network_image 多个图片卡顿崩溃
- Any to Any 实时变声的实现与落地丨RTC Dev Meetup
- J9数字论:为什么我们需要Web3?
- 信用卡又一新规来袭!菊风用科技助推金融行业提升服务质效
- BGP Federal Comprehensive Experiment
- Topics in Dynamic Programming
猜你喜欢

Guidelines for the Release of New WeChat Mini Programs
![Embedded system driver primary [1] - kernel module _ compilation method](/img/72/d3e46a820796a48b458cd2d0a18f8f.png)
Embedded system driver primary [1] - kernel module _ compilation method

DNA脱氧核糖核酸修饰石墨粉末|DNA修饰还原石墨烯功能材料|保存温度

【面试:并发篇34:Unsafe】

浅析即时通讯移动端开发DNS域名劫持等杂症

我们上线了一个「开发者实验室」

「大厂必备」系列之Redis主从、持久化、哨兵

Qt uses QSortFilterProxyModel for sorting and filtering in QML

Design for failure 12 common design ideas

2022年最新甘肃建筑八大员(材料员)模拟考试试题及答案
随机推荐
分支语句那些事儿(上)~~~~看完少走两月弯路!!
消失的两个月......
Win7x64中使用PowerDesigner连接Oralce数据库报“[Oracle][ODBC][Ora]ORA-12154:TNS:无法解析指定的连接标识符”错误解决方法
MySQL面试题:用户金额充值面试题详解
[2023 School Recruitment Questions] Summary of knowledge points and hand-tear code in the written test and interview
y81.第四章 Prometheus大厂监控体系及实战 -- 监控扩展(十二)
Raspberry pie wiringPi 2.6 installed on solving gpio readall command mistakes
canvas 中如何实现物体的点选(五)
仿牛客论坛项目部署总结
How to make labview an application (labview program recognizes shapes)
【openlayers】地图【一】
设计消息队列存储消息的MySQL表格
[leetcode] The sword refers to Offer II 006. The sum of two numbers in a sorted array (binary search, double pointer)
【leetcode】剑指 Offer II 006. 排序数组中两个数字之和(二分查找、双指针)
云计算1+X之openstack篇
Farmers on the assembly line: I grow vegetables in a factory
JetsonNano学习(六)Jetson踩过的大坑及解决方法___持续更新
BGP Federal Comprehensive Experiment
devops学习(六)Jenkins 持续部署-版本选择
子无序测试
