1. 环境配置
本次实验需要三台服务器CI/CD 服务器、应用服务器和Harbor 服务器
DevOps 步骤
- 程序员将代码 push 到代码仓库
- Jenkins 根据触发条件拉取代码到CI/CD 服务器
- Jenkins 使用 Maven 将代码 build 成 jar 包
- Jenkins 使用 jar 包通过 Dockerfile 和 docker-compose.yml 文件制作自定义镜像
- Jenkins 将自定义镜像推送到Harbor 服务器上
- Jenkins 调用应用服务器拉取自定义镜像
- 应用服务器运行镜像
CI/CD服务器需要安装:
- JDK
- Jenkins
- Git
- Maven
- Docker
应用服务器需要安装:
- Docker or Kubernetes 集群
Harbor服务器需要安装
- Docker
- Harbor 镜像仓库
2. 配置 CI/CD 服务器
2.1 安装 Jenkins
Jenkins 安装官方文档
CI/CD服务器环境为 CentOS 7,使用 yum 方式进行安装
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
如果机器没有安装 Java 的话需要使用以下命令安装 Java 11
yum install -y fontconfig java-11-openjdk
之后使用命令安装 Jenkins
yum install -y jenkins
下载安装后执行下面命令启动 Jenkins
systemctl start jenkins
使用下面命令获取初始密码
cat /var/lib/jenkins/secrets/initialAdminPassword
浏览器中输入 localhost:8080
打开 Jenkins 管理界面输入初始密码,选择安装推荐的插件,创建新的用户,之后开始使用 Jenkins。
2.2 配置 Jenkins
2.2.1 配置远程服务器
在插件管理页面安装好 Publish Over SSH
插件
进入全局配置界面,配置好远程服务器的信息,Remote Directory 是把文件传送到远程服务器的位置
此时点击 Test Configuration 可能会报错
jenkins.plugins.publish_over.BapPublisherException: Failed to connect and initialize SSH connection. Message: [Failed to change to remote directory [/usr/local/test]]
在远程服务器上创建 /usr/local/test
目录即可
2.2.2 配置 Maven
在插件管理页面安装好 Maven Integration
插件
在CI/CD服务器上下载并安装 Maven,步骤如下
-
访问 Maven 官方网站
-
复制红框里 Maven 的下载链接
-
使用命令下载解压并将其移动到对应目录下
wget https://dlcdn.apache.org/maven/maven-3/3.9.0/binaries/apache-maven-3.9.0-bin.tar.gz tar -xvf apache-maven-3.9.0-bin.tar.gz mv -f apache-maven-3.9.0 /usr/local/
安装 Maven 成功后,打开 Jenkins,进入 Global Tool Configuration 页面,按照下图进行配置并保存,没有报错则 Maven 配置成功
3. 配置应用服务器
3.1 安装 Docker
可访问 CentOS环境下使用Docker 一文进行安装 Docker 的操作
3.2 安装 Docker-compose
curl -L https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
4. 配置 Harbor 服务器
进入 Harbor releases page,下载 Harbor offline 压缩文件 harbor-offline-installer-v2.5.6.tgz 并将其传到Harbor 服务器上并解压到指定位置
tar -zxvf harbor-offline-installer-v2.5.6.tgz -C /usr/local
对 Harbor 进行配置
cd /usr/local/harbor/
cp harbor.yml.tmpl harbor.yml
vi harbor.yml
将 hostname 一行内容改为Harbor 服务器的 IP 地址,并将 https 内容全部注释掉
# The IP address or hostname to access admin UI and registry service.
# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
hostname: 192.168.80.128
# https related config
# https:
# https port for harbor, default is 443
# port: 443
# The path of cert and key files for nginx
# certificate: /your/certificate/path
# private_key: /your/private/key/path
安装 Harbor
./install.sh
如果启动时报错
[Step 5]: starting Harbor ...
[+] Running 0/1
⠿ Network harbor_harbor Error 0.1s
failed to create network harbor_harbor: Error response from daemon: Failed to Setup IP tables: Unable to enable SKIP DNAT rule: (iptables failed: iptables --wait -t nat -I DOCKER -i br-79dd02c9a738 -j RETURN: iptables: No chain/target/match by that name.
(exit status 1))
只需要重启 Docker 后再次执行安装即可
systemctl restart docker
./install.sh
访问Harbor 服务器的 80 端口,默认账号为 admin
,密码为 Harbor12345