Bootstrap

基于Docker和k8s部署Jenkins+gitlab的CI/CD环境

目录

操作环境

一、 Jenkins安装

二、Gitlab安装

三、配置Jenkins连接Gitlab

四、配置Jenkins连接maven

五、配置CI/CD

六、 上传代码到Gitlab中触发构建

七、验证


操作环境

        整个流程大部分通过容器化的部署来实现,通过Docker分别创建Jenkins、Gitlab容器,配置Jenkins连接maven,在Gitlab容器里面,编写Jenkinsfile流水线脚本,当代码提交到 Gitlab 代码仓库之后,可以通过 Jenkins 自动识别到代码的变化,将代码同步到kubernetes集群中,以缩短新功能开发上线周期,及时满足客户的需求,实现DevOps的部分流程,来减轻部署运维的负担,实现可视化容器生命周期管理、应用发布和版本迭代更新。

节点角色

主机名

VCPUS

内存

硬盘

Master、Harbor、CICD

master

16

64G

500G

Worker Node

node

8

32G

500G

程序

IP地址

用途

k8s 集群

192.168.200.10:30000

K8s 集群的 Master 节点

Harbor

192.168.200.10:80

本地镜像仓库

Jenkins

192.168.200.10:8080

以 docker 方式运行的 jenkins

GitLab

192.168.200.10:81

以 docker 方式运行的 gitlab

一、 Jenkins安装

1.1、安装Jenkins

在master节点上编写docker-compose.yaml文件编排部署Jenkins服务

[root@master jenkins]# cat docker-compose.yaml 
version: '3.1'
services:
  jenkins:
    image: 'jenkins/jenkins:2.262-centos'
    volumes:
      - /home/jenkins_home:/var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock
      - /usr/bin/docker:/usr/bin/docker
      - /usr/bin/kubectl:/usr/bin/kubectl
      - /root/.kube:/root/.kube
    ports:
      - "8080:8080"
    expose:
      - "8080"            
      - "50000"
    privileged: true
    user: root            #用root身份生成容器
    restart: always        #容器重启策略为always
container_name: jenkins

Jenkins 的web访问验证:http://IP:8080
使用命令docker-composc ps 查看 Jcnkins 容器是否正常启动

52a3467fda6048b0a7ad7632b5ff1b13.png

Jenkins状态

进入 Jenkins 容器查看容器版本是否正确

[root@master jenkins]# docker exec -it jenkins bash
[root@6e70688698be /]# cat /etc/issue
\S
Kernel \r on an \m

1.2、Jenkins初始化

浏览器访问:http://192.168.200.10:8080 ,可以看到 jenkins 正在启动 中的提示,等待启动完成,进入解锁 jenkins 页面,可执行如下命令找到管理员密码

[root@master ~]# docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword
4a122b28d97b4ebd9ff604d9422c68c3
123caada970b4e9194f93a3a38814249.png

访问Jenkins的web界面

1.3 安装默认插件

;