centos7搭建gitlab+jenkins+k8s的服务环境,含gitlab-runner配置

1.安装虚拟机软件并创建CentOS 7的虚拟机点击查看安装说明(在install centos7的过程中,network设置中需要开启网络连接,才能联网,不让后期设置nat或者桥接等等都很麻烦,还没法联网,导致yum的各种failed)

2.测试centos7能连通外网

连接外网.jpg

虚拟机上的centOS安装个VMware Tools便于电脑和虚拟机间的文件传输和粘贴复制等等。
无桌面版的centOs 7 参考这个安装VMware Tools

CentOS 7 安装JAVA环境说明(JDK1.8)

或者将主机某个文件夹作为共享文件夹,将下载好的jdk文件放入主机共享文件夹中,在虚拟机的 /mnt/hgfs 下可以查看共享文件夹,从这里导入主机文件到虚拟机上进行解压安装。解压安装方式可参考安装说明

CentOS 7 安装Docker说明

或者如下方式:

1、更新一下系统
    yum update -y
2、安装docker
   yum install docker -y
3、加入docker镜像源(如果不更新源,docker将会去docker官网获取镜像源,不科学上网,可能导致docker拉取不到镜像源)
   vi /etc/docker/daemon.json
   #加入如下配置
    {
    "registry-mirrors": [ "https://registry.docker-cn.com"]
   }
   # 保存退出
CentOS 7 安装Jenkins说明

若提示-bash: wget: command not found
使用下面命令安装wget

yum -y install wget

也可以参照下面的方法:
1、去jenkins官网获取下载地址:https://jenkins.io/

jenkins官网.jpg

进入文档说明.jpg

环境说明与获取下载链接.jpg
下载jenkins.jpg

jenkins下载完成.jpg

下载完成后,可使用命令启动jenkins,这里以7368端口为例,首次启动会生成访问密码,记得复制好密码,先设置主机可访问虚拟机服务后,再执行下面的启动命令。

java -jar jenkins.war --httpPort=7368

启动jenkins.jpg

虚拟机查看当前已开启的端口列表

netstat -ntlp

设置主机可访问虚拟机上的jenkins,先使用命令查看虚拟机的IP

ifconfig

查看ip地址.jpg

打开编辑-虚拟网络编辑器,设置NAT网络


设置NAT.jpg
添加端口转发.jpg
添加虚拟机IP和端口.jpg

执行启动命令,可在主机浏览器访问192.168.164.129:7368。


主机浏览器访问.jpg
CentOS 7 安装kubernetes:https://github.com/liuyi01/kubernetes-starter

1、预先环境准备
2、基础集群部署-kubernetes-simple
3、完整集群部署-kubernetes-with-ca
4、在kubernetes上部署微服务

CentOS 7 安装harbor
CentOS 7 安装git、gitlab Docker搭建自己的GitLab或者尝试来自github的安装gitlab教程或者尝试
1、安装git
  yum install git -y
2、查看是否安装成功
  git --version
3、配置基本信息
  git config --global user.name="testname"
  git config --global user.email hs1150@qq.com
4、查看配置信息
  git config --list

使用docker安装gitlab服务

1.拉取官方gitlab镜像
  docker pull gitlab/gitlab-ce:latest
2.新建一个文件夹,利用docker开启gitlab容器
  mkdir gitlab
  cd gitlab
  vi Dockerfile
在Dockerfile中加入内容
  FROM gitlab/gitlab-ce     #镜像名称
  RUN echo "This is a test about docker-gitlab"
3.保存Dockerfile后,构建容器并启动容器(这里的容器没有定义hostname,会让仓库地址的域名变成一个随机字符串,为了便于后期更改配置,用第4步的方式启动容器)
  docker build -t gitlab .
  docker run -d -p 8086:80 gitlab
4.将服务器的444/8087/23端口分别映射容器内部的443/80/22端口,容器名称为gitlab
  docker run --detach --hostname gitlab.ynpay.cc --publish 444:443 --publish 8087:80 --publish 23:22 --name gitlab --restart always --volume /srv/gitlab/config:/etc/gitlab --volume /srv/gitlab/logs:/var/log/gitlab --volume /srv/gitlab/data:/var/opt/gitlab gitlab
最后这里的gitlab是镜像的名字,也可以用镜像id代替。

按照上面的方式,让gitlab容器运行起来是没有问题的,但是当在gitlab上创建项目的时候,生成项目的URL访问地址是按容器的hostname来生成的,域名默认访问80端口,可能出现新建一个仓库,但地址中不带端口号,会让gitlab-ci.yml的脚本无法clone这个项目,所以需要在gitlab.rb中配置指定的仓库地址url。

#宿主机上的路径是 srv/gitlab/config/gitlab.rb
1. 配置http协议所使用的访问地址
  external_url 'http://gitlab.ynpay.cc:8087'
2.配置ssh协议所使用的访问地址和端口
  gitlab_rails['gitlab_ssh_host'] = 'gitlab.ynpay.cc'
  gitlab_rails['gitlab_shell_ssh_port'] = 23
#上述位置的域名也可以使用ip代替
3.添加nginx设置,避免设置external_url后无法访问
  nginx['listen_port'] = 80
#默认情况下,nginx监听的端口为external_url中定义的,或者默认的80/443。所以刚nginx是监听的8087端口。而docker run的时候是暴露的80端口,所以根本就访问不了。 

安装gitlab Runner可以参考安装Runner文档

1.安装gitlab-ci-multi-runner
  curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash
2.安装
  yum install gitlab-ci-multi-runner
3.注册并启动runner
  gitlab-ci-multi-runner register
或者使用
  gitlab-runner register
  #根据提示输入url和token,还有tag和executor,完成注册后,可以在gitlab服务管理端看到一个共享的runner
  #注册后记得启动runner
  gitlab-ci-multi-runner start
4.查看runner的配置信息
  gitlab-runner list
  #也可以直接打开配置文件进行查看 
  vim /etc/gitlab-runner/config.toml
5.删除注册信息
  gitlab-runner unregister --url http://192.168.1.2/ci --token 387ed6c05fef248d2183f9f45b9cda 
#这个操作是不可逆的,为了防止出错可以先备份一下/etc/gitlab-runner/config.toml配置文件
#gitlab-runner默认将项目clone到/home/gitlab-runner/builds中

修改runner配置时,进入修改/etc/gitlab-runner/config.toml文件

使用CICD(持续构建与持续部署)

配置好了runner,想要开始自动构建还需要在项目根目录添加一个.gitlab-ci.yaml文件。 关于.gitlab-ci.yaml文件的配置说明可参考官方文档

1.使用shell让程序自动部署,可新建一个文件夹专门存放可执行的脚本
  mkdir shell
  cd shell
  vi test.sh
#进入test.sh中编辑内容
2.让脚本具有可执行权限
  chmod -x test.sh
3.执行命令
  sh test.sh

注意:

1.如果是存在共享Runner 则默认使用共享Runner去编译构建等等,但如果有指定的Runner,那么在gitlab-ci的文件中的job中加入tags的标签。可参考学习Gitlab-CI持续集成之Runner配置和CI脚本
2.不建议什么服务都依赖于docker来操作,当docker容器太多时,如果网络出现问题,导致服务器无法访问时,不易排查原因,部分重要或基础的服务可使用注册为本地服务的方式来开启,当服务器恢复正常时,这些基础服务即可使用。

推荐阅读更多精彩内容