[label]技术支持:窦智勇[/label]
该公司决定采用GitLab +Jenkins来构建CICD环境,以缩短新功能开发上线周期,及时满足客户的需求,实现DevOps的部分流程,来减轻部署运维的负担,实现可视化容器生命周期管理、应用发布和版本迭代更新,请完成GitLab + Jenkins + Kubernetes的CICD环境部署(构建持续集成所需要的所有软件包在软件包Jenkins_offline.tar中)。CICD应用系统架构如下:
在master节点上使用镜像jenkins/jenkins:2.262-centos部署Jenkins服务,
具体要求如下:
(1)容器名称:jenkins;
(2)端口映射:8080:8080;
(3)使用root身份生成容器;
(4)离线安装Jenkins插件;
(5)设置Jenkins用户:chinaskill;密码:000000;
(6)在授权策略中配置“任何用户可以做任何事(没有任何限制)”。
[root@master ~]# vim docker-compose.yml
version: "3"
services:
jenkins:
container_name: jenkins
image: jenkins/jenkins
ports:
- "8080:8080"
volumes:
- "/home/jenkins_home:/var/jenkins_home" #如果jenkins起不来就把这行注释
- "/usr/bin/docker:/usr/bin/docker" #docker命令
- "/usr/bin/kubectl:/usr/local/bin/kubectl" #kubectl命令
- "/var/run/docker.sock:/var/run/docker.sock" #docker锁文件
- "/root/.kube:/root/.kube"
###通过docker-compose up -d启动Jenkins
离线安装插件
###找到插件包
[root@master CICD]# ls
apache-maven-3.6.3-bin.tar.gz gitlab jenkins.tar
repository ChinaskillProject jenkins plugins ###插件包
###copy到Jenkins家目录下
[root@master CICD]# docker cp plugins/ 23e29963b96d:/var/jenkins_home/
###重启Jenkins
[root@master jenkins]# docker stop 6070eb42546f
6070eb42546f
[root@master jenkins]# docker start 6070eb42546f
6070eb42546f
浏览器访问IP:8080
###进入容器
[root@master jenkins]# docker exec -it 6070eb42546f /bin/bash
###查看密码
jenkins@6070eb42546f:/$ cat /var/jenkins_home/secrets/initialAdminPassword
9b07aba3086e4b7c811b2881018c5e88
配置安全策略
系统配置——->全局安全配置——->策略授权
安装Gitlab环境
在master节点上使用镜像gitlab/gitlab-ce:12.9.2-ce.0部署Gitlab服务,具体要求如下:
(1)容器名称:mygitlab;
(2)端口映射:1022:22、81:80、443:443;
(3)容器重启策略:always;
(4)设置root用户及密码;
(5)使用root用户登录Gitlab,密码:00000000;
(6)新建项目ChinaskillProject,将/opt/ChinaskillProject中的代码上传到ChinaskillProject项目中。
[root@master ~]# vim docker-compose.yml
version: "3"
services:
gitlab:
container_name: gitlab
image: gitlab/gitlab-ce:12.9.2-ce.0
ports:
- "1022:22"
- "80:80"
- "443:443"
restart: always
浏览器访问IP:80
创建项目
上传项目
[root@master gitlab]# yum install git -y
[root@master gitlab]# git init
[root@master gitlab]# git add .
[root@master gitlab]# git rermote add origin http://IP:30880/root/chinaskillproject.git
[root@master gitlab]# git commit -m "gpmall"
[root@master gitlab]# git push -u origin --all
配置Jenkins连接Gitlab
配置Jenkins连接Gitlab,具体要求如下:
(1)设置Outbound requests;
(2)生成“Access Tokens”并命名为jenkins;
(3)设置Jenkins取消对’/project’ end-point进行身份验证;
(4)测试Jenkins与Gitlab的连通性。
[label]技术支持已难哭在厕所[/label]
配置Jenkins连接maven
配置Jenkins连接maven,具体要求如下:
(1)采用docker in docker的方式在Jenkins内安装maven;
(2)在Jenkins中配置maven信息。
配置docker in docker
###docker命令和锁文件已经挂载到容器内,只需修改权限
[root@master CICD]# ll /var/run/docker.sock
srw-rw---- 1 root docker 0 Feb 26 08:40 /var/run/docker.sock
[root@master CICD]# chmod 666 /var/run/docker.sock
[root@master CICD]# ll /var/run/docker.sock
srw-rw-rw- 1 root docker 0 Feb 26 08:40 /var/run/docker.sock
###在docker容器中可以使用docker命令就算配置成功
[root@master CICD]# docker exec -it 23e29963b96d /bin/bash
bash-4.4$ docker images
在jenkins中安装maven
###Jenkins容器中没有tar命令,需要在本地解压,copy到容器中
[root@master CICD]# tar xvf jdk-8u141-linux-x64.tar.gz -C /usr/local/ ###java环境
[root@master CICD]# tar xvf apache-maven-3.8.5.tar.gz -C /usr/local/
###配置本地maven仓库地址及阿里云镜像加速:
[root@master ~]# vim /usr/local/apache-maven-3.8.5/conf/settings.xml
<!-- 本地仓库地址 -->
<localRepository>/opt/localrepo</localRepository>
<!-- 阿里云maven仓库镜像地址,加速jar包下载速度 -->
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/central</url>
</mirror>
<mirror>
<id>aliyun-maven</id>
<mirrorOf>*</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
[root@master CICD]# docker cp /usr/local/maven/ 23e29963b96d:/usr/local/
[root@master CICD]# docker cp /usr/local/jdk1.8.0_121/ 23e29963b96d:/usr/local/
###在本地编写环境变量copy至容器
[root@master CICD]# vim /etc/profile
###末尾添加
export JAVA_HOME=/usr/local/jdk1.8.0_121/
export PATH=$PATH:/usr/local/apache-maven-3.8.5/bin:$JAVA_HOME/bin
###进入容器启用变量
[root@master CICD]# docker cp /etc/profile 23e29963b96d:/etc/
bash-4.4$ source /etc/profile
bash-4.4$ echo $JAVA_HOME
/usr/local/jdk1.8.0_121/
bash-4.4$ echo $MAVEN_HOME
/usr/local/maven
bash-4.4$ mvn -v
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /usr/local/maven
Java version: 1.8.0_121, vendor: Oracle Corporation, runtime:
/usr/local/jdk1.8.0_121/jre
Default locale: en_US, platform encoding: ANSI_X3.4-1968
OS name: "linux", version: "3.10.0-862.el7.x86_64", arch: "amd64", family: "unix"
在Jenkins中配置maven信息
系统配置——->全局工具配置——->配置Java–配置maven——->保存
配置CI/CD
配置CI/CD,具体要求如下:
(1)新建一个流水线模块ChinaskillProject;
(2)编写流水线脚本,构建ChinaskillProject项目中的gateway和config服务,将构建后的镜像自动上传到Harbor仓库的chinaskillproject项目,并自动发布gateway和config服务到Kubernetes集群的springcloud命名空间下;
(3)配置Webhook;
(4)在Harbor中新建公开项目chinaskillproject。
[label]技术支持哭晕在厕所[/label]
触发CI/CD
将ChinaskillProject项目中的代码上传到Gitlab中触发构建
[label]技术支持已抬走[/label]