cnrancher / hangar

Multi-platform container image command-line utility.
https://hangar.cnrancher.com
Apache License 2.0
12 stars 6 forks source link

支持 HTTP & Skip TLS Verify 功能 #21

Closed STARRY-S closed 1 year ago

STARRY-S commented 1 year ago
  1. 目前 Hangar 不支持 HTTP Harbor Registry,仅支持 HTTPS Harbor Registry,需要添加 HTTP 类型的 Registry 支持。
  2. 除此之外,在使用自签名 Harbor 时,目前文档中配置 Harbor 使用自签名的步骤比较繁琐,且要求证书中包括 IP SANs 内容,此部分可以优化,添加 skip tls verify 跳过签名证书校验。
STARRY-S commented 1 year ago

相关 Issue:https://github.com/cnrancher/hangar/issues/23

计划移除掉 Hangar 的 dockerdocker-buildx 第三方依赖,以实现 skip-tls-verify 和 HTTP Private Registry 支持,之后在容器内只需要执行 skopeo login,不需要 docker login

wangzheivan commented 1 year ago

目前客户发现,在主机上安装shopeo之后,使用skopeo login 也是登录不了的

STARRY-S commented 1 year ago

功能开发完毕并完成自测 & Validation Test,使用文档已更新:https://github.com/cnrancher/hangar/blob/v1.6.0-rc3/docs/zh_CN/README.md

相关改动如下:

  1. 后续版本在向 HTTP 或使用自签名的 Registry 仓库 Mirror / Save / Load 镜像时,可通过添加 --tls-verify=false 参数跳过 TLS 验证。

    除此之外,若 Registry Server 使用的是不被信任的自签名证书,在手动执行 skopeo login 时也需要添加 --tls-verify=false 参数。

  2. 移除了 dockerdocker-buildx 依赖,在使用 Hangar 时仅需要 skopeo 一个依赖。
  3. 构建 Manifest List 的功能由代码实现,取代了之前使用 docker-buildx 构建 Manifest List 的方式。

可在 v1.6.0-rc3 及后续 RC 版本中测试。 CC @rootwuj

rootwuj commented 1 year ago

版本:

测试场景:

Harbor地址 二进制文件运行 容器镜像运行
http带端口 1. Mirror镜像成功
2. Save、Load镜像成功
1. Mirror镜像成功
2. Save、Load镜像成功
http不带端口 1. Mirror镜像成功
2. Save、Load镜像成功
1. Mirror镜像成功
2. Save、Load镜像成功
https自签名证书 1. Mirror镜像成功
2. Save、Load镜像成功
1. Mirror镜像成功
2. Save、Load镜像成功

执行的命令:

harbor http

Mirror

hangar convert-list -i rancher-images.txt -s x.x.x.x -d x.x.x.x:8088

hangar mirror -f ./rancher-images.txt.converted -s x.x.x.x -d x.x.x.x:8088 \
--repo-type=harbor --harbor-https=false --tls-verify=false \
-j 10 -a amd64,arm64 -o failed-list-test.txt --debug

hangar mirror-validate -f ./rancher-images.txt.converted -d x.x.x.x:8088 --tls-verify=false -j 10

Save Load

hangar save -f ./rancher-images.txt -d saved-images.tar.gz --part --part-size=1G --tls-verify=false -j 10

hangar load -s ./saved-images.tar.gz -d x.x.x.x \
--repo-type=harbor --harbor-https=false --default-project=library --tls-verify=false -j 10 

hangar load-validate -s ./saved-images.tar.gz -d x.x.x.x -j 10 --default-project=library --tls-verify=false

harbor https(自签名)

mirror

hangar convert-list -i rancher-images.txt  -d private.registry.io

hangar mirror -f ./rancher-images.txt.converted d private.registry.io --repo-type=harbor  --tls-verify=false -j 10 

hangar mirror-validate -f ./rancher-images.txt.converted -d private.registry.io --tls-verify=false -j 10

save load

hangar save -f ./rancher-images.txt  -d saved-images.tar.gz --part --part-size=1G --tls-verify=false -j 10

hangar load -s ./saved-image-cache -d private.registry.io --compress=dir --repo-type=harbor --tls-verify=false -j 10 

hangar load-validate -s ./saved-image-cache -d private.registry.io --compress=dir -j 10 --default-project=library --tls-verify=false