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

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项目中构建一个新版本
在这里插入图片描述

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

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

相关文章:

  • 数据中台设计方案(原版word获取)
  • Mongodb安装和简单操作
  • ChatGPT-4o 有何特别之处?
  • 计算机网络工程师需要掌握的知识点
  • 2023 N1CTF Junior pwn 顶级签到
  • 如何从0到设计一个CRM系统
  • Docker - Kafka
  • WEB攻防-JAVAWEB项目常见漏洞
  • Python与Android连接:深入探索与实现
  • (1)svelte 教程:hello world
  • TCP的重传机制
  • Docker 简介和安装
  • WPS部分快捷操作汇总
  • 华为设备配置静态路由和默认路由
  • 2024华为OD机试真题-寻找最优的路测线路-(C++/Java/Python)-C卷D卷-200分
  • 78. Subsets
  • Facebook AccountKit 接入的坑点
  • Git的一些常用操作
  • GraphQL学习过程应该是这样的
  • HTTP--网络协议分层,http历史(二)
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • nodejs:开发并发布一个nodejs包
  • Nodejs和JavaWeb协助开发
  • Redis 中的布隆过滤器
  • session共享问题解决方案
  • vue-cli在webpack的配置文件探究
  • 从0实现一个tiny react(三)生命周期
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 扑朔迷离的属性和特性【彻底弄清】
  • 三分钟教你同步 Visual Studio Code 设置
  • 一个JAVA程序员成长之路分享
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 在Unity中实现一个简单的消息管理器
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • 自动记录MySQL慢查询快照脚本
  • 7行Python代码的人脸识别
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • #100天计划# 2013年9月29日
  • #QT(串口助手-界面)
  • (分类)KNN算法- 参数调优
  • (万字长文)Spring的核心知识尽揽其中
  • (新)网络工程师考点串讲与真题详解
  • (一)Docker基本介绍
  • (转)setTimeout 和 setInterval 的区别
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • (转载)PyTorch代码规范最佳实践和样式指南
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • .gitignore文件使用
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .net core webapi 大文件上传到wwwroot文件夹
  • .NET Core引入性能分析引导优化
  • .Net IE10 _doPostBack 未定义
  • .NET Standard 的管理策略
  • .net wcf memory gates checking failed