harbor仓库同步

背景

proxy: remoteurl: https://hub.iflyhealth.com:8098/ username: admin password: Harbor@xfyl.com

  • 在多个k8s集群情况下,每次版本更新时,需要手动人肉传镜像到每个集群,然后push到各个harbor仓库。这样很影响工作效率,所以每个集群harbor仓库实现同步很有必要。

 

部署harbor

 

配置mirro_registry

  • vim  /home/xwcheng/harbor/common/config/registry
    • 在最后添加该配置:

      同步配置
      proxy:
        remoteurl:    https://hub.iflyhealth.com:8098/
        username:     admin
        password:     Harbor@xfyl.com
  • 重启harbor
    • docker-compose stop
    • docker-compose up -d
  • 进入harbor任意容器里可能会发现通不了外网,
  • 因为容器需要访问公网,需要宿主机增加一条iptables snat的策略,将容器ip出去的时候转换成宿主机IP;
  • 使用iptables -t nat -L -n --line-numbers|grep MASQUERADE 查看宿主机是否有harbor网桥的ip snat策略,注意harbor走的是harbor自己的网络,在部署harbor时,会自定义个网络,对应的网卡为如下:
  • 所以需要将172.28.0.0/16的原地址进行原地址转换,iptables -t nat -A POSTROUTING -s 172.28.0.0/16 -o ens32 -j MASQUERAD
  • 重启harbor,再次进入harbor容器,发现可以出互联网了。

 

验证

  • 这样每次上线时,不需手动传包,在本地主机pull镜像,harbor仓库会自动去远程harbor仓库拉取镜像。

 

手动&&定时同步镜像

  • 在目标URL处,harbor会将ip反解析成harbor.yml里的host,然而,harbor不会去服务器的hosts文件里解析,它会找dns服务器解析,所以会出错。解决办法:将harbor.yml里的host域名改为本机ip。
               

 

posted @ 2020-11-10 11:07  LinuxSFeng  阅读(413)  评论(0编辑  收藏  举报