实战案例——基于Kubernetes构建持续集成
1.1.1 案例目标
(1)了解Jenkins的离线安装步骤。
(2)掌握Gitlab的使用和管理。
(3)了解CICD的配置步骤和方法。
1.1.2 案例分析
1.规划节点
ZooKeeper集群系统的节点规划,见表1-1-1。
表1-1-1节点规划
IP |
主机名 |
节点 |
10.24.2.156 |
master |
master节点 |
10.24.2.157 |
node |
node节点 |
10.24.2.156 |
master |
harbor节点 |
10.24.2.156 |
master |
cicd节点 |
2.基础准备
登录OpenStack平台,使用提供的CentOS_7.5_x86_64_XD.qcow2镜像创建两台云主机,并使用提供的软件包部署好双节点Kubernetes集群。
1.1.3 案例实施
1.安装Jenkins环境
(1)基础环境准备
查看Kubernetes集群状态和节点信息:
[root@master ~]# kubectl get cs
NAME STATUS MESSAGE ERROR
controller-manager Healthy ok
scheduler Healthy ok
etcd-0 Healthy {"health":"true"}
[root@master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready master 37m v1.18.1
node Ready <none> 3m59s v1.18.1
将提供的离线包CICD_Offline.tar上传至master节点/root目录下,解压文件:
# tar -zxvf CICD_Offline.tar -C /opt/
导入镜像:
# cd /opt/
# docker load -i jenkins.tar
(2)安装Jenkins
编写Jenkins编排文件:
[root@master ~]# mkdir jenkins
[root@master ~]# cd jenkins
[root@master jenkins]# vi 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/local/bin/kubectl
- /root/.kube:/root/.kube
ports:
- "8080:8080"
expose:
- "8080"
- "50000"
privileged: true
user: root
restart: always
container_name: jenkins
启动Jenkins:
[root@master jenkins]# docker-compose -f docker-compose.yaml up -d
Creating network "root_default" with the default driver
Creating jenkins ... done
[root@master jenkins]# docker-compose up -d
Creating network "jenkins_default" with the default driver
Creating jenkins ... done
[root@master jenkins]# docker-compose ps
Name Command State Ports
----------------------------------------------------------------------------------------------------------
jenkins /sbin/tini -- /usr/local/b ... Up 50000/tcp, 0.0.0.0:8080->8080/tcp
安装插件:
[root@master jenkins]# cp -rfv /opt/plugins/* /home/jenkins_home/plugins/
[root@master jenkins]# docker restart jenkins
jenkins
在web端通过http://IP:8080访问Jenkins,如图所示:
查看密码:
[root@master ~]# docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
54670064056e42a2a47485a5e3356e57
输入密码并点击“继续”,如图所示:
依次点击“系统管理”、“管理用户”按钮进入用户列表界面,如图所示:
点击“新建用户”,输入用户信息,如图所示:
点击“创建用户”如图所示:
退出admin用户登录,使用新创建的用户登录Jenkins。
依次点击 “系统配置”按钮进入系统配置界面,在“Resource root URL”处配置Jenkins URL,如图所示:
完成后点击“保存”。
2.部署Gitlab
GitLab是利用Ruby on Rails一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。与Github类似,GitLab能够浏览源代码,管理缺陷和注释,可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库,团队成员可以利用内置的简单聊天程序(Wall)进行交流。Gitlab还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。
本项目Gitlab与Harbor共用一台服务器。
(1)启动Gitlab
编写Gitlab编排文件: