From 0ce1729f6b89946516de6806dcf61167f4814c5b Mon Sep 17 00:00:00 2001 From: clay <20932067@zju.edu.cn> Date: Tue, 8 Nov 2022 14:01:09 +0800 Subject: [PATCH] =?UTF-8?q?clay=20commit=20:=20ci/cd=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E8=BD=AF=E4=BB=B6=E5=AE=89=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ci-cd/harbor/README.md | 44 ++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/docs/ci-cd/harbor/README.md b/docs/ci-cd/harbor/README.md index 5e37d38..1f1e011 100644 --- a/docs/ci-cd/harbor/README.md +++ b/docs/ci-cd/harbor/README.md @@ -1,13 +1,13 @@ -### **Harbor介绍** +# Harbor介绍 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) -### **安装准备** +## 安装准备 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/)中有详细解决方案 -### **安装** +## 安装 下载地址:[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 ``` -### **编辑配置文件** +## 编辑配置文件 编辑 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) @@ -39,7 +39,7 @@ common.sh harbor.v1.10.1.tar.gz harbor.yml install.sh LICENSE prepare ./install.sh ``` -### **登录页面** +## 登录页面 浏览器输入 http://192.168.101.105 访问 Harbor 页面,用户名和密码为 harbor.yml 配置文件中默认设置的 admin,Harbor12345。 ![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"] } ``` -### **HTTPS 配置(可选)** +## HTTPS 配置(可选) 在生产环境中建议配置 HTTPS,可以使用由受信任的第三方 CA 签名的证书,也可以使用自签名证书。如果想要启用 Content Trust with Notary 来正确签名所有图像,则必须使用 HTTPS。 -#### **生成 CA 证书** +### 生成 CA 证书 本次实验中我们使用自签名证书。生产环境中应使用受信任的第三方 CA 签名的证书。 -##### **生成 CA 证书私钥** +### 生成 CA 证书私钥 ``` openssl genrsa -out ca.key 4096 ``` -##### **生成 CA 证书** +### 生成 CA 证书 -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 ``` -#### **生成 Server 证书** +### 生成 Server 证书 生成 Harbor 使用的证书和私钥。 -##### **生成 Server 私钥** +### 生成 Server 私钥 ``` openssl genrsa -out server.key 4096 ``` -##### **生成 Server 证书签名请求(CSR)** +### 生成 Server 证书签名请求(CSR) 生成 Harbor 的证书签名请求,使用上面生成的 CA 证书来给 Server 签发证书。 @@ -84,7 +84,7 @@ openssl req -sha512 -new \ -key server.key \ -out server.csr ``` -##### **生成 x509 v3 扩展文件** +### 生成 x509 v3 扩展文件 通过 docker 或者 ctr 等工具拉取 HTTPS 的镜像时,要求 HTTPS 的证书包含 SAN 扩展。 @@ -115,7 +115,7 @@ cat > v3.ext <<-EOF EO ``` -##### **使用 CA 证书签发 Server 证书** +### 使用 CA 证书签发 Server 证书 ``` openssl x509 -req -sha512 -days 3650 \ @@ -124,32 +124,32 @@ openssl x509 -req -sha512 -days 3650 \ -in server.csr \ -out server.crt ``` -#### **为 Harbor 和 Docker 配置证书** +## 为 Harbor 和 Docker 配置证书 -##### **将 server 证书和密钥复制到 Harbor 主机上的 /data/cert 目录中** -##### **转换 server.crt 为 server.cert** +### 将 server 证书和密钥复制到 Harbor 主机上的 /data/cert 目录中 +### 转换 server.crt 为 server.cert Docker 守护程序会认为 .crt 文件是 CA 证书,因此需要将 server 证书转换为 server.cert 文件。其实改下后缀就可以了,证书里面的内容是一样的。 ``` openssl x509 -inform PEM -in server.crt -out server.cert ``` -##### **重启 Docker Engine** +### 重启 Docker Engine ``` systemctl restart docker ``` -#### **重新部署 Harbor** +### 重新部署 Harbor 修改 harbor.yml 配置文件,添加 HTTPS 相关配置,指定 HTTPS 的端口号和证书路径: -#### **使用 prepare 脚本生成 HTTPS 配置** +### 使用 prepare 脚本生成 HTTPS 配置 使用 prepare 脚本为反向代理 Nginx 容器生成 HTTPS 配置。 ``` ./prepare ``` -#### **删除原有 Harbor 容器** +### 删除原有 Harbor 容器 Harbor 原有的数据文件默认是挂载在宿主机的 /data 目录下,因此删除 Harbor 容器并不会丢失数据。 @@ -157,7 +157,7 @@ Harbor 原有的数据文件默认是挂载在宿主机的 /data 目录下,因 docker-compose down -v ``` -#### **重新启动 Harbor** +### 重新启动 Harbor ``` docker-compose up -d