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 ];thendocker  build  -t  192.168.111.11:5000/xiaoniao:v$BUILD_ID  .docker  push 192.168.111.11:5000/xiaoniao:v$BUILD_IDkubectl -s 192.168.111.11:8080 set image  -n xiaoniao deploy xiaoniao xiaoniao=192.168.111.11:5000/xiaoniao:v$BUILD_IDecho "更新成功"
elsedocker  build  -t  192.168.111.11:5000/xiaoniao:v$BUILD_ID  .docker  push 192.168.111.11:5000/xiaoniao:v$BUILD_IDkubectl  -s 192.168.111.11:8080  create  namespace  xiaoniaokubectl  -s 192.168.111.11:8080  run   xiaoniao  -n xiaoniao  --image=192.168.111.11:5000/xiaoniao:v$BUILD_ID --replicas=3 --recordkubectl  -s 192.168.111.11:8080   expose -n xiaoniao deployment xiaoniao --port=80 --type=NodePortport=`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项目中构建一个新版本
在这里插入图片描述

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

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

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

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

相关文章

简单的小波自编码器降噪(Python)

代码很简单&#xff0c;很容易读懂。 import kerasfrom keras import layersfrom keras.datasets import mnistimport numpy as npimport matplotlib.pyplot as pltimport pywtimport tensorflow as tfimport torch#加载经典的mnist手写数字图像(x_train, _), (x_test, _) mn…

基于Chisel的FPGA流水灯设计

Chisel流水灯 一、Chisel&#xff08;一&#xff09;什么是Chisel&#xff08;二&#xff09;Chisel能做什么&#xff08;三&#xff09;Chisel的使用&#xff08;四&#xff09;Chisel的优缺点1.优点2.缺点 二、流水灯设计 一、Chisel &#xff08;一&#xff09;什么是Chise…

uniapp 怎么设置凸起的底部tabbar

1. uniapp 怎么设置凸起的底部tabbar 1.1. 方案一系统提供 1.1.1. 使用uniapp官方提供的属性midButton 使用时&#xff0c;list数组须为偶数 &#xff08;1&#xff09;pages.json "tabBar": {"custom": true,"color": "#8F8F94",&q…

HTML的标签(标题、段落、文本、图片、列表)

HTML的标签1 标题标签&#xff1a;段落标签&#xff1a;文本标签&#xff1a;图片标签:列表标签&#xff1a;有序列表&#xff1a;无序列表&#xff1a;定义列表&#xff1a;列表案例&#xff1a; 标题标签&#xff1a; 标签&#xff1a;h1~h6 注意&#xff1a;如果使用无效标…

【安规介绍】

文章目录 一、基础知识安规上的六类危险的防护&#xff1a;安全电压漏电流接触电流能量问题&#xff1a;火灾问题&#xff1a;热问题结构问题阻燃等级绝缘等级&#xff1a;对接地系统的要求&#xff1a;结构要求:电气要求&#xff1a; 二、设计的关键电气绝缘距离电气爬电距离:…

Python知识点14---被规定的资源

提前说一点&#xff1a;如果你是专注于Python开发&#xff0c;那么本系列知识点只是带你入个门再详细的开发点就要去看其他资料了&#xff0c;而如果你和作者一样只是操作其他技术的Python API那就足够了。 在Python中被规定的东西不止有常识中的那些关键字、构造器等编程语言…

乡村振兴与农村环境整治:加强农村环境治理,改善农村人居环境,打造干净整洁、生态宜居的美丽乡村

目录 一、引言 二、农村环境整治的重要性 1、提升农民生活质量 2、促进农村经济发展 3、保护农村生态环境 三、当前农村环境面临的问题 1、垃圾处理不当 2、污水处理设施缺乏 3、农业面源污染严重 四、加强农村环境治理的措施 1、完善农村垃圾处理体系 2、加强农村…

14.Ollydbg的基本使用

上一个内容&#xff1a;13.优化界面化的游戏辅助 Ollydbg是一个调试工具&#xff0c;它可以一步一步的运行一个程序并且还能很直观的看到被调试程序的寄存器状态、栈状态。Ollydbg需要以管理员方式运行&#xff01; 下图附加程序是调试一个正在运行的进程&#xff1a; 点击了…

文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《考虑动态定价的新能源汽车能源站优化运行》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

Nacos-SpringBoot-配置中心

Nacos配置中心 前情回顾 上一章呢 了解并且学习了Nacos服务注册与发现 在一系列破防中走了出来Nacos服务注册完成https://blog.csdn.net/m0_68711597/article/details/139265244?spm1001.2014.3001.5502 本以为接下来会一帆风顺 一马平川 没想刚出坑 又入坑 Nacos的配置…

Prime1 - 信息收集和分析能力的试炼

主机发现 nmap扫描与分析 端口22、80 详细扫描&#xff1b;linux、ubuntu、 udp扫描 端口都是关闭的 脚本扫描 web渗透 打开只有一张图片&#xff1b;源码有图片和一个alt&#xff1a;hnp security不知道有啥用&#xff0c;先记录下来吧 继续web渗透思路走吧&#xff0c;目录…

[Python]用Qt6和Pillow实现截图小工具

本文章主要讲述的内容是&#xff0c;使用python语言借助PyQt6和Pillow库进行简单截图工具的开发&#xff0c;含义一个简单的范围裁剪和软件界面。 主要解决的问题是&#xff0c;在高DPI显示屏下&#xff0c;坐标点的偏差导致QWidget显示图片不全、剪裁范围偏差问题。 适合有一点…

vivado BD_ADDR_SEG

按字母顺序排列的一类对象列表 BD_ADDR_SEG 描述 地址段或bd_addr_seg对象描述一个范围的位置和大小记忆力它们有一个范围&#xff08;大小&#xff09;和一个可选的起始偏移。对于各种内存映射的主接口和从接口&#xff0c;IP集成商遵循行业用于捕获存储器要求和能力的标准IP-…

数据库与缓存⼀致性⽅案

数据库与缓存⼀致性⽅案 1、背景2、数据⼀致性⽅案设计3、数据⼀致性⽅案流程图4、关键代码4.1、 处理数据⼀致性的消息队列⼊⼝4.2、数据⼀致性配置的常量信息 1、背景 现有的业务场景下&#xff0c;都会涉及到数据库以及缓存双写的问题&#xff0c;⽆论是先删除缓存&#xf…

【移动端】商场项目路由设计

1&#xff1a;路由设计配置&#xff1a; 一级路由配置 分析项目&#xff0c;设计路由&#xff0c;配置一级路由 一级路由&#xff1a;单个页面独立展示的&#xff0c;都是一级路由&#xff0c;例如&#xff1a;登录页面&#xff0c;首页架子&#xff0c;报错页面 二级路由&…

美业SaaS收银系统源码-已过期卡项需要延期怎么操作?美业系统实操

美业SaaS系统 连锁多门店美业收银系统源码 多门店管理 / 会员管理 / 预约管理 / 排班管理 / 商品管理 / 促销活动 PC管理后台、手机APP、iPad APP、微信小程序 1.询问会员手机号和需要延期的卡项 2.PC运营后端-数据导入-修改已售卡项&#xff0c;搜索手机号 3.把需要卡项选…

深入分析 Android BroadcastReceiver (一)

文章目录 深入分析 Android BroadcastReceiver (一)1. Android BroadcastReceiver 设计说明1.1 BroadcastReceiver 的主要用途 2. BroadcastReceiver 的工作机制2.1 注册 BroadcastReceiver2.1.1 静态注册2.1.2 动态注册 3. BroadcastReceiver 的生命周期4. 实现和使用 Broadca…

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

题目&#xff1a; 题解&#xff1a; class Solution { public:bool isPalindrome(string s) {int n s.size();int left 0, right n - 1;while (left < right) {while (left < right && !isalnum(s[left])) {left;}while (left < right && !isalnu…

三方语言中调用, Go Energy GUI编译的dll动态链接库CEF

如何在其它编程语言中调用energy编译的dll动态链接库&#xff0c;以使用CEF 或 LCL库 Energy是Go语言基于LCL CEF开发的跨平台GUI框架, 具有很容易使用CEF 和 LCL控件库 interface 便利 示例链接 正文 为方便起见使用 python 调用 go energy 编译的dll 准备 系统&#x…

【定时任务知多少, 横跨10余项目,6种实践方式】

工作多年&#xff0c;随着项目的不断研发落地&#xff0c;大大小小做了有10个项目&#xff0c;其中不少涉及到定时任务。今天来盘一下&#xff0c;这些项目中&#xff0c;定时任务的实现方式 。 通过项目的需求场景&#xff0c;可以看出定时任务需要有什么样的功能。 需求 1 …