logo资料库

Jenkins+Gitlab+K8S 构建自动化CI/CD发布流水线.pdf

第1页 / 共52页
第2页 / 共52页
第3页 / 共52页
第4页 / 共52页
第5页 / 共52页
第6页 / 共52页
第7页 / 共52页
第8页 / 共52页
资料共52页,剩余部分请下载后查看
1 规划
1.1 总体实验流程
1.2 实验环境
1.3 本地程序代码说明
2 基础环境安装
2.1 Docker及K8s集群安装
2.2 Docker Registry安装
2.2.1 【方式一】安装私有镜像仓库(无密码,免登陆)
2.2.1.1 安装镜像仓库服务器端
2.2.1.2 docker客户端将仓库加入不安全镜像仓库列表
2.2.1.3 访问私有镜像仓库
2.2.2 【方式二】安装私有镜像仓库(有密码,需验证)
2.2.2.1 安装镜像仓库服务器端
2.2.2.1 访问私有镜像仓库
2.3 Jenkins安装
2.3.1 执行安装
2.3.2 Jenkins初始化
2.3.2.1 解锁jenkins
2.3.2.2 安装默认插件
2.3.2.2 安装默认插件
2.3.2.3 创建管理员用户
2.3.2.4 确认jenkins的URL
2.3.3 安装插件
2.4 Gitlab安装
2.4.1 执行安装
2.4.2 gitlab初始化
2.4.2.1 更改管理员用户密码
2.4.2.2 注册或登陆
2.4.2.3 获取用户的token
2.4.3 Gitlab中创建项目
2.4.3 Gitlab中创建项目
2.4.3 Gitlab中创建项目
2.4.4 Git客户端配置
2.4.4.1 Git客户端安装
2.4.4.2 克隆远端代码仓库到本地
2.4.4.3 提交本地代码到本地的代码仓库
2.4.4.4 同步本地代码仓库到远端代码仓库
2.4.4.4 同步本地代码仓库到远端代码仓库
2.4.5 确认gitlab代码仓库中的内容
3 Jenkins配置流水线
3.1 方案总览
3.2 全局配置
3.2.1 配置到gitlab代码仓库的连接
3.2.2 配置到k8s-master操作系统的ssh连接
3.2.3 配置webhook
3.2.4 配置到kubernetes集群的连接
3.3 配置代码同步流水线
3.3.1 新建任务
3.3.2 配置gitlab代码仓库
3.3.3 构建触发器
3.3.4 Gitlab中配置webhook
3.3.5 配置构建环境
3.3.6 【方式一】同步代码到k8s集群中
3.3.6.1 代码说明
3.3.6.2 传输代码并删除原有的k8s资源
3.3.6.3 拷贝代码到即将建立pv的目录
3.3.6.4 重新建立k8s资源
3.3.7 【方式二】将代码打包到镜像中
3.3.7.1 代码说明
3.3.7.2 制作镜像并上传到私有镜像仓库
3.3.7.3 建立或更新k8s资源
3.4 触发自动构建任务
4 其他说明
Jenkins+Gitlab+K8S 代码自动集成和发布 北京元鼎时代科技股份有限公司 2018-10-30
目 录 2.4 2.3 2.1 2.2 规划 ............................................................................................... 1 1.1 总体实验流程 ................................................................................. 1 1.2 实验环境 ........................................................................................ 2 1.3 本地程序代码说明 ......................................................................... 3 基础环境安装 ................................................................................ 4 Docker 及 K8s 集群安装 ................................................................ 4 Docker Registry 安装 ..................................................................... 4 2.2.1 【方式一】安装私有镜像仓库(无密码,免登陆) ................. 4 2.2.2 【方式二】安装私有镜像仓库(有密码,需验证) ................. 5 Jenkins 安装 .................................................................................. 9 2.3.1 执行安装 ................................................................................. 9 2.3.2 Jenkins 初始化 ........................................................................ 9 2.3.3 安装插件 ............................................................................... 13 Gitlab 安装 ................................................................................... 14 2.4.1 执行安装 ............................................................................... 14 2.4.2 gitlab 初始化 .......................................................................... 14 2.4.3 Gitlab 中创建项目 .................................................................. 18 2.4.4 Git 客户端配置 ...................................................................... 21 2.4.5 确认 gitlab 代码仓库中的内容 ................................................ 26 3 Jenkins 配置流水线 ................................................................................. 27 3.1 方案总览 ...................................................................................... 27 3.2 全局配置 ...................................................................................... 27 3.2.1 配置到 gitlab 代码仓库的连接 ................................................ 27 3.2.2 配置到 k8s-master 操作系统的 ssh 连接 ............................... 28 3.2.3 配置 webhook ....................................................................... 29 3.3 配置代码同步流水线 .................................................................... 32 3.3.1 新建任务 ............................................................................... 32 3.3.2 配置 gitlab 代码仓库 .............................................................. 32 3.3.3 构建触发器 ............................................................................ 34 3.3.4 Gitlab 中配置 webhook .......................................................... 34 3.3.5 配置构建环境 ........................................................................ 36 3.3.6 【方式一】同步代码到 k8s 集群中 ........................................ 37 1 2
3.3.7 【方式二】将代码打包到镜像中 ............................................ 43 3.4 触发自动构建任务 ....................................................................... 48 其他说明 ...................................................................................... 49 4
1 规划 1.1 总体实验流程 个人电脑作为程序源代码的开发机,开发一个网站程序,当代码提交到 gitl ab 代码库之后,可以通过 jenkins 自动识别到代码的变化,将代码同步到 k8s 集 群中,并利用 nginx 镜像,在一个容器中运行起来。  提交代码  开发人员在开发机上开发代码后提交到 gitlab 代码库;  运维人员运行该代码所需的环境配置文件(镜像配置-Dockerfile、K8S 资源配 置-YAML)提交到 gitlab 代码库;  代码构建  Gitlab 通过 webhook 插件触发 jenkins 进行代码的构建,可以将 gitlab 代码仓 库中的代码同步到 jenkins 的工作目录中; http://www.yuandingit.com 第 1页 /共 49 页 7x24 小时服务热线:400-007-0628
 根据 Dockerfile 配置,将程序代码打包到 docker 镜像中(也有可能这些代码不 需要打包到镜像中,只要容器运行时使用到即可),之后将 docker 镜像传到 d ocker 镜像仓库中;  Jenkins 同时可以将 yaml 文件中使用的镜像等变量替换成本次构建时的实际 值;  代码发布  Jenkins 可以将代码同步到 k8s 集群中的指定目录中;  之后在 k8s 集群中根据 yaml 文件,进行相关的资源的创建,从私有镜像仓库 拉取镜像,启动容器,实现代码的发布运行。 1.2 实验环境 实验环境为 google 云上的一个 k8s 集群 序号 集群节点 IP 地址 用途 1 k8s-master 外部:35.231.203.253 K8s 集群的 Master 节点,同时运 内部:10.142.0.2 行本地镜像仓库、jenkins、gitlab K8s-node1 K8s-node2 10.142.0.3 10.142.0.5 /nfs 目录为 nfs 服务 挂载来自 k8s-master 的/nfs 目录 挂载来自 k8s-master 的/nfs 目录 2 3 序号 程序 IP 地址 用途 1 2 3 k8s 集群 Jenkins 35.231.203.253:6443 K8s 集群的 Master 节点 35.231.203.253:32080 以 docker 方式运行的 jenkins Docker registry 10.142.0.2:5000 以 docker 方式运行的镜像仓库 http://www.yuandingit.com 第 2页 /共 49 页 7x24 小时服务热线:400-007-0628
4 Gitlab 35.231.203.253:32480 以 docker 方式运行的代码仓库 10.142.0.2:32480 1.3 本地程序代码说明 本次实验的本地项目 myweb 是一个简单的网站程序,可以使用 nginx 运行, 具体结构如下: 其中 src 目录中是网站的代码程序,dockerfile 是存放建立镜像的 Dockerfil e,yaml 中是 k8s 资源的文件。具体文件内容后续进行说明。 http://www.yuandingit.com 第 3页 /共 49 页 7x24 小时服务热线:400-007-0628
2 基础环境安装 2.1 Docker 及 K8s 集群安装 Docker 及 K8S 集群安装方式略。 2.2 Docker Registry 安装 私有镜像仓库有两种形式,一种是无密码、免登录的,属于不安全的镜像仓 库,另外一种是有安全验证措施的,属于安全的镜像仓库。下面分别进行介绍。 2.2.1 【方式一】安装私有镜像仓库(无密码,免登陆) 2.2.1.1 安装镜像仓库服务器端 在 k8s-master 上安装私有的 docker 镜像仓库,挂载/nfs/docker_registry 目 录给镜像仓库,该镜像仓库没有设置登录密码,可以直接使用: # mkdir -p /nfs/docker_registry # docker run -d -p 5000:5000 -v /nfs/docker_registry:/var/lib/registry --restart=always --privileged =true --name local_registry registry 2.2.1.2 docker 客户端将仓库加入不安全镜像仓库列表 由于本次实验中没有为镜像仓库设置登录密码及其他安全验证方式,且使用 的是 http 协议,因此在其他服务器使用该私有镜像仓库时,需要调整 docker 的 配置参数,将私有仓库的地址加入到不安全仓库列表中,之后可以直接使用该镜 像仓库中的镜像,具体方法如下: 修改 /etc/docker/daemon.json 文件,加入一行 "insecure-registries": ["10.142.0.2:5000"] 如果该文件中已经有其他的内容,在文件末尾的“}”之前加入这一行,同时上一行的行尾要加上分号“;”。 # cat /etc/docker/daemon.json { "insecure-registries": ["192.168.50.120:5000"] http://www.yuandingit.com 第 4页 /共 49 页 7x24 小时服务热线:400-007-0628
} 重启 docker 进程 # systemctl daemon-reload # systemctl restart docker 2.2.1.3 访问私有镜像仓库 这种无验证的镜像仓库,可以直接访问,采用此方式时,私有镜像仓库的访 问地址为:10.142.0.2:5000 之后将镜像上传到私有镜像仓库的步骤如下: 为镜像打 tag # docker tag image_name:version 10.142.0.2:5000/image_name:version 将镜像上传到私有镜像仓库 # docker push 10.142.0.2:5000/image_name:version 2.2.2 【方式二】安装私有镜像仓库(有密码,需验证) 2.2.2.1 安装镜像仓库服务器端 在 k8s-master 上安装私有的 docker 镜像仓库,挂载/nfs/docker_registry 目 录给镜像仓库,该镜像仓库设置有登录密码: 如果创建了签名证书,且启动 docker registry 时需要用证书验证,那么需 要将镜像仓库的域名 local-registry 进行解析,且要将 registry.crt 证书放到/etc/d ocker/certs.d/local-registry:5000/目录下。且登录时必须使用域名登录。 http://www.yuandingit.com 第 5页 /共 49 页 7x24 小时服务热线:400-007-0628
分享到:
收藏