运维开发网
广告位招商联系QQ:123077622
 
广告位招商联系QQ:123077622

Jenkins+GitLba针对k8s集群持续集成(下)

运维开发网 https://www.qedev.com 2020-08-30 13:09 出处:51CTO 作者:wx5e13d64478a4f
根据提示查看密码并输入[[email protected]][email protected]d3e31d22f889f左边是自动安装,右边是自定义安装,如果不是这个画面则说明网络很卡或者没有网,网速可以的就选择左边的由于网络问题,下载插件会非常慢,这里我就不下载,回到上一步,断网之后再点继续,跳过插件安装

Jenkins+GitLba针对k8s集群持续集成(下)

根据提示查看密码并输入

[[email protected] bin]# cat /data/jenkins/secrets/initialAdminPassword
7ea904846c9c4cfbb19d3e31d22f889f

Jenkins+GitLba针对k8s集群持续集成(下)

左边是自动安装, 右边是自定义安装,如果不是这个画面则说明网络很卡或者没有网,网速可以的就选择左边的

由于网络问题,下载插件会非常慢,这里我就不下载,回到上一步,断网之后再点继续,跳过插件安装

断网之后,它会等待网络连接,过程有点慢,但是比自动下载插件快多了

Jenkins+GitLba针对k8s集群持续集成(下)

在创建用户名密码的时候就可以联网了

Jenkins+GitLba针对k8s集群持续集成(下)

然后一路默认就行

Jenkins+GitLba针对k8s集群持续集成(下)

因为没有安装,所以就导入插件

插件存放目录:/data/jenkins/plugins

#将原来的插件目录删除
[[email protected] jenkins]# rm  -rf  plugins/
#导入下载好的插件,并解压
[[email protected] jenkins]# tar zxf  plugins.tar.gz
#重新运行jenkins,让它自动识别新导入的插件
[[email protected] bin]# ./catalina.sh  stop
[[email protected] bin]# ./catalina.sh  start

使用浏览器重新访问

Jenkins+GitLba针对k8s集群持续集成(下)

因为很多插件需要***才可以继续下载,Jenkins还提供了代理的设置

设置插件的国内下载地址

在Jenkins插件管理-高级设置界面,定位到页面最底部中的【升级站点】模块,将对应URL输入框中的url的https修改为http,即http://updates.jenkins.io/update-center.json,然后点击【提交】保存修改项

Jenkins+GitLba针对k8s集群持续集成(下)

往下拉,找到插件管理

Jenkins+GitLba针对k8s集群持续集成(下)

点击高级

Jenkins+GitLba针对k8s集群持续集成(下)

还需要安装三个插件

Jenkins+GitLba针对k8s集群持续集成(下)

因为在我导入的插件里就有这三个,所以不需要安装,如果选择推荐安装的可以搜索并安装这三个插件

点击可选插件,搜索GitLab就能找到,然后直接安装即可(搜索的时候注意大小写区分)

Jenkins+GitLba针对k8s集群持续集成(下)

jenkis安装完成以后,再去安装gitlab

[[email protected] ~]# yum -y install curl policycoreutils openssh-server openssh-clients postfix git
[[email protected] ~]# systemctl  enable  sshd
[[email protected] ~]# systemctl  start  sshd
[[email protected] ~]# systemctl  enable  postfix
[[email protected] ~]# systemctl  start  postfix

安装gitlab-ce

[[email protected] ~]# curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash

因为网络问题,就不使用这种方式,国内的用户,使用清华大学的镜像进行安装

#编写yum源
[[email protected] ~]# vim  /etc/yum.repos.d/gitlab-ce.repo
[gitlab-ce]
name=gitlab-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key
#将gitlab源加入yum
[[email protected] ~]# yum  makecache  
#下载安装gitlab,这个软件包有点大,需要点时间
[[email protected] ~]# yum -y install gitlab-ce

修改端口防止端口冲突,默认是80端口,unicorn默认是8080 也是tomcat的端口

[[email protected] ~]# vim  /etc/gitlab/gitlab.rb
#在29行左右的地方进行修改和追加
external_url 'http://192.168.1.30:90'
unicorn['listen'] = '127.0.0.1'
unicorn['port'] = 3000

启动gitlab,这个过程可能会有点慢

[[email protected] ~]# gitlab-ctl  reconfigure

浏览器访问:192.168.1.130:90

设置密码

Jenkins+GitLba针对k8s集群持续集成(下)

登录gitlab

默认用户名是root

Jenkins+GitLba针对k8s集群持续集成(下)

Jenkins+GitLba针对k8s集群持续集成(下)

jenkins:工具集成平台

gitlab:软件托管平台

部署这两个服务的联动,需要经过ssh验证

首先我们需要在gitlab上绑定jenkins服务器的ssh公钥,因为是在同一台服务器上,所以就自己给自己绑定,这里我们使用的是root用户的公私钥,切记生产环境是不允许随便用root的

[[email protected] ~]# ssh-keygen  -t  rsa  #一路回车即可
#复制公钥
[[email protected] ~]# cat /root/.ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC0PGtK/uFWejdLYfEqEGiimWrpndlkMZMNyvMisdCvWYU2E2UKxpr/h/QCZQpgpe7uAPZpivnsu3XZ4pE4qe7WG4iKEqF6oVmJL9JjmNh86vOUDGttOU3aZJnLp95yoYczBUSObNsSAzkHIMR2u0Zk5nFW2Roe2FHNUyj0e2qM/Zm5+M5EVgpHd9UG5A4Z/Loid/got6Xaufoen1hSFY+S18QPuheN1auaTfnyA0wwf+rlWjqwCLJeUBl0PgOgNNyZ27++U6QBUPNwgC3SVdhbJMCFE9/H2+0aMnjVqnakfJmt95UI/QOJAmnrusps/XPbqdnxZ5u89i97QxuogAgL [email protected]

在gitlab上导入公钥

Jenkins+GitLba针对k8s集群持续集成(下)

Jenkins+GitLba针对k8s集群持续集成(下)

Jenkins+GitLba针对k8s集群持续集成(下)

新建一个代码仓库

Jenkins+GitLba针对k8s集群持续集成(下)

Jenkins+GitLba针对k8s集群持续集成(下)

输入一个仓库的名字 权限选择公共的(public)然后直接点击创建

Jenkins+GitLba针对k8s集群持续集成(下)

点击新建一个new.file

Jenkins+GitLba针对k8s集群持续集成(下)

写入代码,起一个名字然后保存

Jenkins+GitLba针对k8s集群持续集成(下)

将项目克隆到本地测试是否可用

[[email protected] ~]# git clone [email protected]:root/test.git
[[email protected] ~]# cd  test/
[[email protected] test]# ls
index.html
[[email protected] test]# cat index.html 
print: "hello world!!!"

测试没有问题

打开jenkins,新建任务

Jenkins+GitLba针对k8s集群持续集成(下)

Jenkins+GitLba针对k8s集群持续集成(下)

地址粘贴进去后没有报错则没错

Jenkins+GitLba针对k8s集群持续集成(下)

下面的这个插件很重要,就是他实现自动化更新的webhook插件,安装过了就会有这条,然后点击这条下面出来的这些东西保持默认就行。同时注意复制

这个里面写的是jenkins构建时候会执行的shell脚本,这个是最重要的,就是他实现了下端kubernetes自动更新容器的操作

Jenkins+GitLba针对k8s集群持续集成(下)

Jenkins+GitLba针对k8s集群持续集成(下)

代码内容

#!/bin/bash
backupcode="/data/backcode/$JOB_NAME/$BUILD_NUMBER"
mkdir -p $backupcode
chmod 644 "$JENKINS_HOME"/workspace/"$JOB_NAME"/*
rsync -acP   "$JENKINS_HOME"/workspace/"$JOB_NAME"/*  $backupcode
echo From  192.168.1.70:5000/nginx:v1 > "$JENKINS_HOME"/workspace/Dockerfile
echo COPY ./"$JOB_NAME"/* /usr/share/nginx/html/ >> "$JENKINS_HOME"/workspace/Dockerfile
docker rmi 192.168.1.70:5000/nginx:v1
docker build -t 192.168.1.70:5000/nginx:v1 /"$JENKINS_HOME"/workspace/.
docker push 192.168.1.70:5000/nginx:v1
ssh [email protected] kubectl delete deployment nginx
ssh [email protected] kubectl apply -f /root/nginx.yaml

Jenkins+GitLba针对k8s集群持续集成(下)

复制地址去gitlab上绑定webhook

保存,登录gitlab,点击下图这个设置

Jenkins+GitLba针对k8s集群持续集成(下)

将复制的地址粘贴

Jenkins+GitLba针对k8s集群持续集成(下)

往下拉,去掉ssh验证,添加webhook

Jenkins+GitLba针对k8s集群持续集成(下)

出现报错,提示本地连接不了,因为gitlab默认设置不允许想自己发送web hook

Jenkins+GitLba针对k8s集群持续集成(下)

解决办法

Jenkins+GitLba针对k8s集群持续集成(下)

Jenkins+GitLba针对k8s集群持续集成(下)

Jenkins+GitLba针对k8s集群持续集成(下)

保存之后重试,成功的如下图所示

Jenkins+GitLba针对k8s集群持续集成(下)

测试jenkins与gitlab连通

Jenkins+GitLba针对k8s集群持续集成(下)

Jenkins+GitLba针对k8s集群持续集成(下)

403报错的,解决办法

回到Jenkins开启匿名访问权限

Jenkins+GitLba针对k8s集群持续集成(下)

点击全局安全配置

Jenkins+GitLba针对k8s集群持续集成(下)

Jenkins+GitLba针对k8s集群持续集成(下)

保存之后再点击系统设置

Jenkins+GitLba针对k8s集群持续集成(下)

去掉勾选

Jenkins+GitLba针对k8s集群持续集成(下)

保存之后,回到gitlab上再次测试

出现蓝条说明jenkins已经连通gitlab

Jenkins+GitLba针对k8s集群持续集成(下)

jenkins和gitlab 都已经互相的ssh通过了,然后我们最后需要做的一个ssh是关于jenkins

这里是从autoweb向master节点做免密登录

[[email protected] ~]# ssh-copy-id  [email protected]

环境全部部署完毕!!!开始测试

立即构建

Jenkins+GitLba针对k8s集群持续集成(下)

Jenkins+GitLba针对k8s集群持续集成(下)

构建完成之后查看网页的变化

Jenkins+GitLba针对k8s集群持续集成(下)

回到Gitlab更新代码测试

Jenkins+GitLba针对k8s集群持续集成(下)

通过web hook这个插件会自动识别代码的更新,然后自动构建保证实时同步,持续集成

Jenkins+GitLba针对k8s集群持续集成(下)

再次查看网页的变化

Jenkins+GitLba针对k8s集群持续集成(下)

构建的历史版本的存放目录:/data/backcode/test

[[email protected] test]# pwd
/data/backcode/test
[[email protected] test]# ls
1  2  3  4  5
#还有一个关键的目录,这个目录下是将新代码构建成镜像的关键,他和上个目录实时同步
[[email protected] workspace]# pwd
/data/jenkins/workspace
[[email protected] workspace]# ls
Dockerfile  test

测试完成

关于 kubernetes 还有好几种集群管理方法,我们这次用的 deployment模板 就是其中之一, 其他的还有pod 模板 和 rc 模板, 这些都是功能很强大的集群调度模板。 还有更多功能待开发

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号