07.与jenkins集成实现cicd

7.与jenkins集成实现ci/cd

ip地址服务内存
192.168.111.11kube-apiserver 80801G
192.168.111.13k8s-node22G
192.168.111.14jenkins(tomcat + jdk) 8080 + kubelet + docker1G
192.168.111.15gitlab 8080,80 + docker2G

通过jenkins一键操作实现发布服务,jenkins对接k8s
在这里插入图片描述

7.1: 安装gitlab并上传代码

#a:节点192.168.111.15上安装
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-11.9.11-ce.0.el7.x86_64.rpm
yum localinstall gitlab-ce-11.9.11-ce.0.el7.x86_64.rpm -y
#b:配置
vim /etc/gitlab/gitlab.rb
external_url 'http://192.168.111.15'
prometheus_monitoring['enable'] = false  #该参数会启动prometheus集群,为了节省系统性能,该参数设置关闭
#c:应用并启动服务
gitlab-ctl reconfigure

#使用浏览器访问http://192.168.111.15,修改root用户密码,密码为12345678,创建project
#公共设施:gitlab仓库,存放n套;一个project项目就是一个网站,即一个域名就有一套代码

访问地址http://192.168.111.15创建一个项目
在这里插入图片描述

填写项目名字,设置私有的,创建项目
在这里插入图片描述

创建成功
在这里插入图片描述

#上传代码到git仓库
cd /srv/
rz -E
unzip xiaoniaofeifei.zip 
rm -fr xiaoniaofeifei.zip 

执行设置名称和邮箱的命令,在执行初始化提交内容的命令,因为我这里已经是存在的项目路径
在这里插入图片描述

执行上图给的命令即可

git config --global user.name "Administrator"
git config --global user.email "admin@example.com"
git init
git remote add origin http://192.168.111.15/root/xiaoniao.git

#提交当前路径下所有的内容到gitlab仓库
git add .
git commit -m "Initial commit"
git push -u origin master

输入账号密码:root/12345678
在这里插入图片描述

然后刷新浏览器当前页面,就显示有代码
在这里插入图片描述

在当前系统写dockerfile,需要安装docker

yum install docker -y
#从私有仓库pull镜像,所以配置指向192.168.111.11地址
vim /etc/sysconfig/docker
OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false --registry-mirror=https://registry.docker-cn.com --insecure-registry=192.168.111.11:5000'
#重启docker
systemctl restart docker
#编写dockerfile文件
vim dockerfike
FROM  192.168.111.11:5000/nginx:1.13
ADD .  /usr/share/nginx/html
#测试做构建镜像文件
docker build -t xiaoniao:v1 .

构建成功,生成镜像xiaonao:v1版本
在这里插入图片描述

测试一下构建的版本镜像是否可用

docker run -d -p 88:80 xiaoniao:v1

访问成功
在这里插入图片描述

当前路径下有文件变化,多了dockerfile文件,所有重新提交到gitlab仓库,执行如下命令

git add .
git commit -m "add dockerfile"
git push -u origin master

提交成功
在这里插入图片描述

gitlab仓库显示存在dockerfile文件
在这里插入图片描述

7.2 安装jenkins,并自动构建docker镜像

1:安装jenkins

cd /opt/
rz -E
rpm -ivh jdk-8u102-linux-x64.rpm 
mkdir /app
tar xf apache-tomcat-8.0.27.tar.gz -C /app
rm -fr /app/apache-tomcat-8.0.27/webapps/*
mv jenkins.war /app/apache-tomcat-8.0.27/webapps/ROOT.war
tar xf jenkin-data.tar.gz -C /root
/app/apache-tomcat-8.0.27/bin/startup.sh 
netstat -lntup
安装kubelet服务
yum install kubernetes-client.x86_64 -y

安装docker环境

yum install docker -y 

配置指定的私有仓库地址

vim /etc/sysconfig/docker 
OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false --registry-mirror=https://registry.docker-cn.com --insecure-registry=192.168.111.11:5000'

重启docker服务

systemctl restart docker

2:访问jenkins

访问http://192.168.111.14:8080/,默认账号密码admin:123456
在这里插入图片描述

3:配置jenkins拉取gitlab代码凭据

  • a:在jenkins上生成秘钥对
ssh-keygen -t rsa

在这里插入图片描述

  • b:复制公钥粘贴gitlab上
    jenkins主机上查看公钥值
    在这里插入图片描述

粘贴公钥值和这是一个jenkins名字并添加
在这里插入图片描述

  • c:jenkins上创建全局凭据
    查看私钥值
    在这里插入图片描述

根据步骤点击,黏贴私钥值
在这里插入图片描述

4:拉取代码测试

  • a:创建一个新任务
    在这里插入图片描述

创建一个test任务
在这里插入图片描述

复制gitlab仓库的地址
在这里插入图片描述

选择git,填写gitlab的仓库地址,选择jenkins的凭据,也就是对应gitlab公钥与私钥交互认证
在这里插入图片描述

添加shell命令,保存。构建成功的时候输出成功!!!
在这里插入图片描述

查看已经存在test项目名称,双击test
在这里插入图片描述

点击立即构建,再点击#1查看控制台输出
在这里插入图片描述

构建成功
在这里插入图片描述

查看jenkins主机的构建工作目录内容为gitlab仓库的内容
在这里插入图片描述

5:点击jenkins立即构建,自动构建docker镜像并上传到私有仓库

修改jenkins 工程配置,双击test项目-配置-构建

#构建并打标签然后上传动私有仓库
docker build -t 192.168.111.11:5000/test:v$BUILD_ID .
docker push 192.168.111.11:5000/test:v$BUILD_ID

添加命令
在这里插入图片描述

注释:
BUILD_ID:该参数就是累计添加数量,例如第一次:v1,第二次:v2,一次类推
点击上图的“可用的环境变量列表”查看该参数
在这里插入图片描述

该参数BUILD_ID与下图的#2是对应的,如果在重新生成#3,上传到私有仓库就是test:v3
在这里插入图片描述

回到首页双击test项目-立即构建-点击新生成的#2-控制台输出
上传到私有仓库test:v2版本,成功;
在这里插入图片描述

私有仓库显示在test项目里面存在v2版本
在这里插入图片描述

在11主机测试新发布的版本

docker run -d -p 89:80 192.168.111.11:5000/test:v2

在这里插入图片描述

浏览器访问http://192.168.111.11:89/成功显示发布的服务
在这里插入图片描述

6:jenkins自动部署应用到k8s

测试一下是否可以调用k8s
kubectl -s 192.168.111.11:8080 get nodes

#!/bin/bash
if [ -f /tmp/xiaoniao.lock ];then
    docker  build  -t  192.168.111.11:5000/xiaoniao:v$BUILD_ID  .
    docker  push 192.168.111.11:5000/xiaoniao:v$BUILD_ID
    kubectl -s 192.168.111.11:8080 set image  -n xiaoniao deploy xiaoniao xiaoniao=192.168.111.11:5000/xiaoniao:v$BUILD_ID
    echo "更新成功"
else
    docker  build  -t  192.168.111.11:5000/xiaoniao:v$BUILD_ID  .
    docker  push 192.168.111.11:5000/xiaoniao:v$BUILD_ID
    kubectl  -s 192.168.111.11:8080  create  namespace  xiaoniao
    kubectl  -s 192.168.111.11:8080  run   xiaoniao  -n xiaoniao  --image=192.168.111.11:5000/xiaoniao:v$BUILD_ID --replicas=3 --record
    kubectl  -s 192.168.111.11:8080   expose -n xiaoniao deployment xiaoniao --port=80 --type=NodePort
    port=`kubectl -s 192.168.111.11:8080  get svc -n xiaoniao|grep -oP '(?<=80:)\d+'`
        ip=`kubectl -s 192.168.111.11:8080 get pod  -n xiaoniao -o wide |awk 'NR==2{print $NF}'`
    echo "你的项目地址访问是http://$ip:$port"
    touch /tmp/xiaoniao.lock
fi

jenkins上直接添加命令保存,然后直接点击立即构建
在这里插入图片描述

构建成功
在这里插入图片描述

访问提供得地址192.168.111.12:47723
在这里插入图片描述

jenkins一键回滚

kubectl  -s 192.168.111.11:8080 rollout undo -n xiaoniao  deployment xiaoniao

新建一个test_undo项目,只添加回滚的命令即可
在这里插入图片描述

在gitlab仓库中修改源码
在这里插入图片描述

在test项目中构建一个新版本
在这里插入图片描述

现在进行回滚
在这里插入图片描述

发现名称变回来了
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【前缀和】42. 接雨水

本文涉及知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 LeetCode42. 接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&am…

【PPT】根据字体大小自动缩放文本框大小

【PPT】根据字体大小自动缩放文本框大小 一般我们新建文本框输入文字后&#xff0c;文本框的大小是不会自动缩放的&#xff0c;是根据你一开始拖动的尺寸固定的 你可以设置文本框的长度随着文字的变化而自动调整。这样&#xff0c;无论你输入多少文字&#xff0c;文本框都会自…

FFmpeg开发笔记(三十三)分析ZLMediaKit对H.264流的插帧操作

《FFmpeg开发实战&#xff1a;从零基础到短视频上线》一书的“3.4.3 把原始的H264文件封装为MP4格式”介绍了如何把H.264裸流封装为MP4文件。那么在网络上传输的H.264裸流是怎样被接收端获取视频格式的呢&#xff1f;前文指出H.264流必定以“SPS帧→PPS帧→IDR帧”开头&#x…

深入JVM:全面解析GC调优

文章目录 深入JVM&#xff1a;全面解析GC调优一、序言二、GC调优指标三、GC在线监控1、Jstat工具2、VisualVM工具 四、GC日志分析1、收集GC日志2、GCViewer工具3、GCeasy工具 五、GC问题调优1、调整JVM内存大小&#xff08;1&#xff09;调整堆内存大小及比例&#xff08;2&…

ChatGPT-4o 有何特别之处?

文章目录 多模态输入&#xff0c;多模态输出之前的模型和现在模型对比 大家已经知道&#xff0c;OpenAI 在 GPT-4 发布一年多后终于推出了一个新模型。它仍然是 GPT-4 的一个变体&#xff0c;但具有前所未见的多模态功能。 有趣的是&#xff0c;它包括实时视频处理等强大功能&…

疫情物资捐赠和分配系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;机构管理&#xff0c;用户管理&#xff0c;发放管理&#xff0c;物资管理 前台账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;物资论坛&#xff0c;公告信息…

7.1 Go 错误的概念

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

Python:由b站临时短链接获取到永久链接(去除分享中的杂项)

&#x1f4da;博客主页&#xff1a;knighthood2001 ✨公众号&#xff1a;认知up吧 &#xff08;目前正在带领大家一起提升认知&#xff0c;感兴趣可以来围观一下&#xff09; &#x1f383;知识星球&#xff1a;【认知up吧|成长|副业】介绍 ❤️如遇文章付费&#xff0c;可先看…

LabVIEW在高校电力电子实验中的应用

概述&#xff1a;本文介绍了如何利用LabVIEW优化高校电力电子实验&#xff0c;通过图形化编程实现参数调节、实时数据监控与存储&#xff0c;并与Simulink联动&#xff0c;提高实验效率和数据处理能力。 需求背景高校实验室在进行电机拖动和电力电子实验时&#xff0c;通常使用…

MongoDB CRUD操作:插入文档

MongoDB CRUD操作&#xff1a;插入文档 文章目录 MongoDB CRUD操作&#xff1a;插入文档使用MongoDB Atlas UI插入文档插入单个文档插入多个文档插入行为自动创建集合_id字段原子性写确认 在MongoDB中插入文档的集中方式&#xff1a; 使用编程语言提供的驱动程序&#xff0c;在…

Table表格组件不请求接口,实现表格里某条数据的本地编辑功能(Vue3+ArcoDesign)

【背景】 在 Vue3 ArcoDesign项目中&#xff0c;使用ArcoDesign-Table表格组件不请求接口&#xff0c;实现表格里某条数据的本地编辑功能。最后统一通过接口发送数据。 【步骤】 1. 在表格每条数据列后添加一个“编辑”按钮&#xff0c;点击该按钮弹出一个对话框&#xff0c…

flink 作业报日志类冲突的解决方案

文章目录 背景思考初步解决方案深入思考下终极解决方案总结 背景 实时作业在页面提交任务后&#xff0c;报NoSuchMethodException 方法&#xff0c;看了下是关于log4j的&#xff0c;首先是作业升级了很多依赖的版本&#xff0c;其次flink 也升级 到了1.19版本 思考 打的Jar有…

计算一个3x3矩阵对角线和其它两条线的元素之和

计算一个3x3矩阵对角线和其它两条线的元素之和 #include <stdio.h> int main () { int d0,b0,s,i,j; int a[3][3]{1,2,3,4,5,6,7,8,9}; for(i0,j2;i<3;i,j--) dda[i][i]a[i][j]; for(i0,j0;i<3;) {bba[i][j]a[i][j2]; ii2;} sdb; printf("d%d\nb%d\ns%d\n&qu…

远程继电器模块实现(nodemcu D1 + 继电器)

前言 接下来将实现一个远程继电器&#xff0c;实时远程控制和查询的开关状态。用 5v 直流电控制 220v 交流电。 硬件上&#xff1a; 使用 nodemcu D1 和 JQC-3FF-S-Z 继电器。 软件上&#xff1a; 使用 nodejs 作为服务端&#xff0c;和 html 作为客户端。 在开始之前在电脑…

数模混合芯片设计中的修调技术是什么?

一、修调目的 数模混合芯片需要修调技术主要是因为以下几个原因&#xff1a; 工艺偏差&#xff08;Process Variations&#xff09;&#xff1a; 半导体制造过程中存在不可避免的工艺偏差&#xff0c;如晶体管尺寸、阈值电压、电阻和电容值等&#xff0c;这些参数的实际值与…

2024年海南省三支一扶报名指南,照片要求

2024年海南省三支一扶报名指南&#xff0c;照片要求 一、考试时间安排&#xff1a; 报名时间&#xff1a;6月1日8:00至6月7日18:00 准考证打印时间&#xff1a;6月17日8:00 考试时间&#xff1a;6月22日 二、招聘人数 海南省计划招募390名高校毕业生

Golang | Leetcode Golang题解之第125题验证回文串

题目&#xff1a; 题解&#xff1a; func isPalindrome(s string) bool {s strings.ToLower(s)left, right : 0, len(s) - 1for left < right {for left < right && !isalnum(s[left]) {left}for left < right && !isalnum(s[right]) {right--}if l…

Golang | Leetcode Golang题解之第126题单词接龙II

题目&#xff1a; 题解&#xff1a; //bfsdfs(如果是双向bfs&#xff0c;效果会更好) func findLadders(beginWord string, endWord string, wordList []string) [][]string {//字典表&#xff08;将wordList中的单词放入hash表中&#xff0c;方便查找&#xff09;dict:make(m…

学习笔记——网络参考模型——TCP/IP模型(物理层)

一、TCP/IP模型-物理层 1、数据传输(交换)的形式 (1)电路交换 特点&#xff1a;通信双方独占通信链路。 优点&#xff1a;数据传输时延小&#xff0c;适用于实时通信&#xff1b;数据按序发送&#xff0c;不存在失序问题&#xff1b;适合模拟信号和数字信号传输。 缺点&am…

指纹采集技术

目录 1.概述 1.1 捺印油墨采集 1.2 现场指纹提取 1.3 在线指纹采集 2. 指纹采集器的关键技术指标 2.1 采集面积 2.2 分辨率 2.3 图像质量 2.4 耐用性 1.概述 最早的指纹采集技术是油墨法&#xff0c;至少已经有上百年的历史。1990年代出现了活体指纹采集器&#xff0c…