1. 环境配置

本次实验需要三台服务器CI/CD 服务器应用服务器Harbor 服务器

DevOps 步骤

  1. 程序员将代码 push 到代码仓库
  2. Jenkins 根据触发条件拉取代码到CI/CD 服务器
  3. Jenkins 使用 Maven 将代码 build 成 jar 包
  4. Jenkins 使用 jar 包通过 Dockerfile 和 docker-compose.yml 文件制作自定义镜像
  5. Jenkins 将自定义镜像推送到Harbor 服务器
  6. Jenkins 调用应用服务器拉取自定义镜像
  7. 应用服务器运行镜像

DevOps 学习笔记(一) | DevOps 简介及环境搭建_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 是把文件传送到远程服务器的位置

DevOps 学习笔记(一) | DevOps 简介及环境搭建_devops_02

此时点击 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,步骤如下

  1. 访问 ​​Maven 官方网站​
  2. 复制红框里 Maven 的下载链接
  3. 使用命令下载解压并将其移动到对应目录下
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 配置成功

DevOps 学习笔记(一) | DevOps 简介及环境搭建_jenkins_03

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​