搭建Jenkins和Gitlab环境
前提条件
- 创建一个新的VPC,本示例中名为vpc-X,所使用网段为192.168.0.0/16。
- 创建一台位于vpc-X(192.168.0.0/16网段)的ECS服务器,推荐规格为4vCPUs 16GiB,系统为Huawei Cloud EulerOS 2.0,并绑定一个弹性公网IP用于拉取公网镜像。
安装指定版本的Docker
- 登录ECS服务器。
- 在Huawei Cloud EulerOS 2.0操作系统下,可以使用如下命令快速安装最新版本的Docker。如以下命令无法自动化安装,请根据操作系统进行手动安装,详细操作请参见Docker Engine installation。
dnf install docker
- 查看Docker是否安装成功。
docker info
Gitlab安装及配置
- 拉取 Gitlab 镜像。
docker pull gitlab/gitlab-ce
- 运行容器。
docker run -d -p 443:443 -p 80:80 -p 222:22 --name gitlab --restart always -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce
- 查询容器状态。
docker ps | grep gitlab
- 在Gitlab上创建项目时,生成项目的URL访问地址是通过容器的hostname进行生成的,即容器的id。作为Gitlab服务器,需要一个固定的 URL访问地址,因此需要配置gitlab.rb(宿主机路径:/home/gitlab/config/gitlab.rb)。
- 在宿主机上通过vi打开文件/home/gitlab/config/gitlab.rb。
vi /home/gitlab/config/gitlab.rb
添加内容如下:external_url 'http://**.**.**.**' //宿主机外部IP,如EIP gitlab_rails['gitlab_ssh_host'] = '**.**.**.**' //宿主机外部IP,如EIP gitlab_rails['gitlab_shell_ssh_port'] = 222 //此端口是启动容器时的端口映射,222->22
- 保存修改内容。
- 在宿主机上通过vi打开文件/home/gitlab/config/gitlab.rb。
- 重启容器。
docker restart gitlab
- 使用浏览器访问“ECS EIP:80”,登录Gitlab服务, 默认用户名为root,初始登录密码存放在gitlab容器的/etc/gitlab/initial_root_password路径下。
您可以通过以下命令获取:
docker exec gitlab cat /etc/gitlab/initial_root_password
Jenkins安装及配置
- 拉取Jenkins镜像。
docker pull jenkins/jenkins:lts
- 运行Jenkins容器。
由于后续需要在Jenkins容器里执行docker build等相关命令,因此该容器需具备docker in docker(dind)的能力,因此需要将docker.sock与docker挂载到容器。
docker run -d -p 8000:8080 -p 50000:50000 \ -v /var/jenkins_home:/var/jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /usr/bin/docker:/usr/bin/docker \ --name myjenkins --privileged=true -u root jenkins/jenkins:lts
- 测试Jenkins容器是否能执行docker命令。
docker exec myjenkins docker ps
如果遇到报错:docker: error while loading shared libraries: libltdl.so.7: cannot open shared object file: No such file or directory。执行下面命令解决
docker exec myjenkins sh -c "apt-get update && apt-get install -y libltdl7"
- 使用浏览器访问“ECS EIP:8000”,登录Jenkins服务,默认用户名为admin,初始登录密码存放在/var/jenkins_home/secrets/initialAdminPassword路径下。
您可以通过以下命令获取密码:
docker exec myjenkins cat /var/jenkins_home/secrets/initialAdminPassword
- 登录Jenkins后,选择安装推荐的插件。完成初始配置后,即可进入Jenkins页面。
- 安装kubectl命令行工具。
- 将kubectl下载到本地,建议和用户要使用的集群版本保持一致。详情请参见安装kubectl。
wget https://dl.k8s.io/release/v*.*.*/bin/linux/amd64/kubectl // v*.*.*为集群版本
- 将kubectl复制到Jenkins容器内。
docker cp kubectl myjenkins:/usr/bin/ docker exec myjenkins chmod +x /usr/bin/kubectl
- 将kubectl下载到本地,建议和用户要使用的集群版本保持一致。详情请参见安装kubectl。
- 配置Jenkins免密拉取Gitlab代码。