clay commit : ci/cd相关软件安装
continuous-integration/drone/push Build is passing Details

This commit is contained in:
clay 2022-11-08 14:01:09 +08:00
parent 6594effa84
commit 0ce1729f6b
1 changed files with 22 additions and 22 deletions

View File

@ -1,13 +1,13 @@
### **Harbor介绍** # Harbor介绍
Harbor 是由 VMware 开源的一款云原生制品仓库Harbor 的核心功能是存储和管理 Artifact。Harbor 允许用户用命令行工具对容器镜像及其他 Artifact 进行推送和拉取,并提供了图形管理界面帮助用户查看和管理这些 Artifact。在 Harbor 2.0 版本中除容器镜像外Harbor 对符合 OCI 规范的 Helm Chart、CNAB、OPA Bundle 等都提供了更多的支持。 Harbor 是由 VMware 开源的一款云原生制品仓库Harbor 的核心功能是存储和管理 Artifact。Harbor 允许用户用命令行工具对容器镜像及其他 Artifact 进行推送和拉取,并提供了图形管理界面帮助用户查看和管理这些 Artifact。在 Harbor 2.0 版本中除容器镜像外Harbor 对符合 OCI 规范的 Helm Chart、CNAB、OPA Bundle 等都提供了更多的支持。
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3b77b4831446430f8545af9961979903~tplv-k3u1fbpfcp-zoom-1.image) ![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3b77b4831446430f8545af9961979903~tplv-k3u1fbpfcp-zoom-1.image)
### **安装准备** ## 安装准备
1.需要安装docker和docker-compose并运行docker安装可以参考 1.需要安装docker和docker-compose并运行docker安装可以参考
[Gitea+Drone+Rancher CI/CD持续集成解决方案](https://blog.odliken.cn/2022/08/07/giteadronerancher-ci-cd%e6%8c%81%e7%bb%ad%e9%9b%86%e6%88%90%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88/)中有详细解决方案 [Gitea+Drone+Rancher CI/CD持续集成解决方案](https://blog.odliken.cn/2022/08/07/giteadronerancher-ci-cd%e6%8c%81%e7%bb%ad%e9%9b%86%e6%88%90%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88/)中有详细解决方案
### **安装** ## 安装
下载地址:[https://github.com/goharbor/harbor/releases](https://links.jianshu.com/go?to=https%3A%2F%2Fgithub.com%2Fgoharbor%2Fharbor%2Freleases) 下载地址:[https://github.com/goharbor/harbor/releases](https://links.jianshu.com/go?to=https%3A%2F%2Fgithub.com%2Fgoharbor%2Fharbor%2Freleases)
直接选择编译好的包 直接选择编译好的包
@ -27,7 +27,7 @@ tar zxf harbor-offline-installer-v1.10.1.tgz -C /data/
common.sh harbor.v1.10.1.tar.gz harbor.yml install.sh LICENSE prepare common.sh harbor.v1.10.1.tar.gz harbor.yml install.sh LICENSE prepare
``` ```
### **编辑配置文件** ## 编辑配置文件
编辑 harbor.yml 配置文件hostname 是 harbor 对外暴露的访问地址HTTP 服务对外暴露 80 端口。这里可暂时先不配置HTTPS可将HTTPS 相关内容注释。 编辑 harbor.yml 配置文件hostname 是 harbor 对外暴露的访问地址HTTP 服务对外暴露 80 端口。这里可暂时先不配置HTTPS可将HTTPS 相关内容注释。
![8_FK_`PA`MN@AL@8H1SP_W4.jpg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a14ddb5f77b4415b8d3431d957a8a993~tplv-k3u1fbpfcp-zoom-1.image) ![8_FK_`PA`MN@AL@8H1SP_W4.jpg](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a14ddb5f77b4415b8d3431d957a8a993~tplv-k3u1fbpfcp-zoom-1.image)
@ -39,7 +39,7 @@ common.sh harbor.v1.10.1.tar.gz harbor.yml install.sh LICENSE prepare
./install.sh ./install.sh
``` ```
### **登录页面** ## 登录页面
浏览器输入 http://192.168.101.105 访问 Harbor 页面,用户名和密码为 harbor.yml 配置文件中默认设置的 adminHarbor12345。 浏览器输入 http://192.168.101.105 访问 Harbor 页面,用户名和密码为 harbor.yml 配置文件中默认设置的 adminHarbor12345。
![1665994860817.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2821dec1f0e143c199f8cda739bcced7~tplv-k3u1fbpfcp-zoom-1.image) ![1665994860817.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2821dec1f0e143c199f8cda739bcced7~tplv-k3u1fbpfcp-zoom-1.image)
@ -50,31 +50,31 @@ common.sh harbor.v1.10.1.tar.gz harbor.yml install.sh LICENSE prepare
"insecure-registries":["11.8.36.21:8888"] "insecure-registries":["11.8.36.21:8888"]
} }
``` ```
### **HTTPS 配置(可选)** ## HTTPS 配置(可选)
在生产环境中建议配置 HTTPS可以使用由受信任的第三方 CA 签名的证书,也可以使用自签名证书。如果想要启用 Content Trust with Notary 来正确签名所有图像,则必须使用 HTTPS。 在生产环境中建议配置 HTTPS可以使用由受信任的第三方 CA 签名的证书,也可以使用自签名证书。如果想要启用 Content Trust with Notary 来正确签名所有图像,则必须使用 HTTPS。
#### **生成 CA 证书** ### 生成 CA 证书
本次实验中我们使用自签名证书。生产环境中应使用受信任的第三方 CA 签名的证书。 本次实验中我们使用自签名证书。生产环境中应使用受信任的第三方 CA 签名的证书。
##### **生成 CA 证书私钥** ### 生成 CA 证书私钥
``` ```
openssl genrsa -out ca.key 4096 openssl genrsa -out ca.key 4096
``` ```
##### **生成 CA 证书** ### 生成 CA 证书
-subj 表示证书的组织。CN 后面的值改成 harbor 的 IP 地址或者域名。 -subj 表示证书的组织。CN 后面的值改成 harbor 的 IP 地址或者域名。
``` ```
openssl req -x509 -new -nodes -sha512 -days 3650 \ -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=11.8.36.21" \ -key ca.key \ -out ca.crt openssl req -x509 -new -nodes -sha512 -days 3650 \ -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=11.8.36.21" \ -key ca.key \ -out ca.crt
``` ```
#### **生成 Server 证书** ### 生成 Server 证书
生成 Harbor 使用的证书和私钥。 生成 Harbor 使用的证书和私钥。
##### **生成 Server 私钥** ### 生成 Server 私钥
``` ```
openssl genrsa -out server.key 4096 openssl genrsa -out server.key 4096
``` ```
##### **生成 Server 证书签名请求CSR** ### 生成 Server 证书签名请求CSR
生成 Harbor 的证书签名请求,使用上面生成的 CA 证书来给 Server 签发证书。 生成 Harbor 的证书签名请求,使用上面生成的 CA 证书来给 Server 签发证书。
@ -84,7 +84,7 @@ openssl req -sha512 -new \
-key server.key \ -key server.key \
-out server.csr -out server.csr
``` ```
##### **生成 x509 v3 扩展文件** ### 生成 x509 v3 扩展文件
通过 docker 或者 ctr 等工具拉取 HTTPS 的镜像时,要求 HTTPS 的证书包含 SAN 扩展。 通过 docker 或者 ctr 等工具拉取 HTTPS 的镜像时,要求 HTTPS 的证书包含 SAN 扩展。
@ -115,7 +115,7 @@ cat > v3.ext <<-EOF
EO EO
``` ```
##### **使用 CA 证书签发 Server 证书** ### 使用 CA 证书签发 Server 证书
``` ```
openssl x509 -req -sha512 -days 3650 \ openssl x509 -req -sha512 -days 3650 \
@ -124,32 +124,32 @@ openssl x509 -req -sha512 -days 3650 \
-in server.csr \ -in server.csr \
-out server.crt -out server.crt
``` ```
#### **为 Harbor 和 Docker 配置证书** ## 为 Harbor 和 Docker 配置证书
##### **将 server 证书和密钥复制到 Harbor 主机上的 /data/cert 目录中** ### 将 server 证书和密钥复制到 Harbor 主机上的 /data/cert 目录中
##### **转换 server.crt 为 server.cert** ### 转换 server.crt 为 server.cert
Docker 守护程序会认为 .crt 文件是 CA 证书,因此需要将 server 证书转换为 server.cert 文件。其实改下后缀就可以了,证书里面的内容是一样的。 Docker 守护程序会认为 .crt 文件是 CA 证书,因此需要将 server 证书转换为 server.cert 文件。其实改下后缀就可以了,证书里面的内容是一样的。
``` ```
openssl x509 -inform PEM -in server.crt -out server.cert openssl x509 -inform PEM -in server.crt -out server.cert
``` ```
##### **重启 Docker Engine** ### 重启 Docker Engine
``` ```
systemctl restart docker systemctl restart docker
``` ```
#### **重新部署 Harbor** ### 重新部署 Harbor
修改 harbor.yml 配置文件,添加 HTTPS 相关配置,指定 HTTPS 的端口号和证书路径: 修改 harbor.yml 配置文件,添加 HTTPS 相关配置,指定 HTTPS 的端口号和证书路径:
#### **使用 prepare 脚本生成 HTTPS 配置** ### 使用 prepare 脚本生成 HTTPS 配置
使用 prepare 脚本为反向代理 Nginx 容器生成 HTTPS 配置。 使用 prepare 脚本为反向代理 Nginx 容器生成 HTTPS 配置。
``` ```
./prepare ./prepare
``` ```
#### **删除原有 Harbor 容器** ### 删除原有 Harbor 容器
Harbor 原有的数据文件默认是挂载在宿主机的 /data 目录下,因此删除 Harbor 容器并不会丢失数据。 Harbor 原有的数据文件默认是挂载在宿主机的 /data 目录下,因此删除 Harbor 容器并不会丢失数据。
@ -157,7 +157,7 @@ Harbor 原有的数据文件默认是挂载在宿主机的 /data 目录下,因
docker-compose down -v docker-compose down -v
``` ```
#### **重新启动 Harbor** ### 重新启动 Harbor
``` ```
docker-compose up -d docker-compose up -d