私有镜像仓库harbor搭建

326 阅读6分钟

简介

Harbor是一个开源注册表,通过策略和基于角色的访问控制来保护工件,确保图像被扫描并没有漏洞,并将图像标记为可信。Harbor是一个CNCF毕业项目,它提供了合规性、性能和互操作性,帮助您在Kubernetes和Docker等云原生计算平台上一致、安全地管理工件。

安装

harbor可在kubernets中部署,但是我们直接在宿主机安装harbor让镜像仓库与集群解耦 Harbor docs | Harbor Installation and Configuration (goharbor.io)

安装过程

标准Harbor安装过程包括以下阶段::

1. 确保您的目标主机符合Harbor Installation Prerequisites.

港口部署为多个Docker集装箱。因此,您可以在任何支持Docker的Linux发行版上部署它。目标主机需要安装Docker和Docker Compose。

Hardware

下表列出了用于部署Harbor的最低硬件配置和建议的硬件配置。

资源最低配置推荐配置
CPU2 CPU4 CPU
Mem4 GB8 GB
Disk40 GB160 GB

Software

下表列出了必须安装在目标主机上的软件版本。

软件版本描述
Docker EngineVersion 17.06.0-ce+ or higher有关安装说明, see Docker Engine documentation
Docker Composedocker-compose (v1.18.0+) or docker compose v2 (docker-compose-plugin)有关安装说明, see Docker Compose documentation
OpenSSLLatest is preferred用于生成Harbor的证书和密钥

Network ports

Harbor要求在目标主机上打开以下端口。

端口协议描述
443HTTPSHarbor门户和核心API在此端口上接受HTTPS请求。您可以在配置文件中更改此端口。
4443HTTPS连接到Harbor的Docker Content Trust服务。仅在启用公证时才需要。您可以在配置文件中更改此端口。
80HTTPHarbor门户和核心API在此端口上接受HTTP请求。您可以在配置文件中更改此端口。

2. 下载Harbor安装程序

您可以从 official releases页面下载Harbor安装程序。下载联机安装程序或脱机安装程序。

  • Online installer:  在线安装程序从Docker hub下载Harbor镜像。因此,安装程序的尺寸非常小。
  • Offline installer:  如果要部署Harbor的主机没有连接到Internet,请使用脱机安装程序。脱机安装程序包含预构建的映像,因此它比联机安装程序大。

联机和脱机安装程序的安装过程几乎相同。

下载并解压安装程序

  1. 前往Harbor releases page

  2. 下载要安装的版本的联机或脱机安装程序。

  3. 可选择下载相应的*.asc文件,以验证软件包是否为正版。

    *.asc文件是一个OpenPGP密钥文件。执行以下步骤以验证下载的捆绑包是否为正版。

    1. 获取*.asc文件的公钥。

      gpg --keyserver hkps://keyserver.ubuntu.com --receive-keys 644FF454C0B4115C
      

      您应该看到消息public key "Harbor-sign (The key for signing Harbor build) <jiangd@vmware.com>" imported

    2. 通过运行以下命令之一来验证程序包是否为正版。

      • 在线安装程序:

        gpg -v --keyserver hkps://keyserver.ubuntu.com --verify harbor-online-installer-version.tgz.asc
        
      • 离线安装程序:

        gpg -v --keyserver hkps://keyserver.ubuntu.com --verify harbor-offline-installer-version.tgz.asc
        

      gpg命令验证捆绑包的签名是否与*.asc密钥文件的签名匹配。您应该看到签名正确的确认。

      gpg: armor header: Version: GnuPG v1
      gpg: assuming signed data in 'harbor-online-installer-v2.0.2.tgz'
      gpg: Signature made Tue Jul 28 09:49:20 2020 UTC
      gpg:                using RSA key 644FF454C0B4115C
      gpg: using pgp trust model
      gpg: Good signature from "Harbor-sign (The key for signing Harbor build) <jiangd@vmware.com>" [unknown]
      gpg: WARNING: This key is not certified with a trusted signature!
      gpg:          There is no indication that the signature belongs to the owner.
      Primary key fingerprint: 7722 D168 DAEC 4578 06C9  6FF9 644F F454 C0B4 115C
      gpg: binary signature, digest algorithm SHA1, key algorithm rsa4096
      
  4. 使用tar提取安装程序包:

    • 在线安装程序:

      bash $ tar xzvf harbor-online-installer-version.tgz
      
    • 离线安装程序:

      bash $ tar xzvf harbor-offline-installer-version.tgz
      

3. 配置对Harbor的HTTPS访问(不使用https访问可跳过)

4. 配置Harbor YML文件

您可以在安装程序包中包含的Harbor.yml文件中为Harbor设置系统级参数。当您运行install.sh脚本来安装或重新配置Harbor时,这些参数将生效。 在初始部署之后以及启动Harbor之后,您将在Harbor Web Portal中执行额外的配置。

5. 配置Harbor组件之间的内部TLS通信(不使用https访问可跳过)

6. 运行安装脚本

一旦您配置了从harbor.yml.tmpl复制的harbor.ml并可选地设置了存储后端,就可以使用install.sh脚本安装并启动harbor。请注意,在线安装程序可能需要一些时间才能从Docker hub下载所有harbor映像。

您可以在不同的配置中安装Harbor:

  • 仅Harbor,无Notary和Trivy
  • Harbor与Notary
  • Trivy与Harbor
  • Harbor与Notary和Trivy

默认安装不带Notary和Trivy

默认的Harbor安装不包括Notary服务或Trivy服务。运行以下命令

sudo ./install.sh

如果安装成功,您可以打开浏览器访问Harbor界面,网址为http://reg.yourdomain.com,将reg.yourdomain.com更改为您在harbor.yml中配置的主机名。如果您没有在harbour.yml中将其更改,则默认的管理员用户名和密码为adminHarbor12345。 登录到管理门户并创建一个新项目,例如myproject。然后,您可以使用Docker命令登录到Harbor,标记图像,并将它们推送到Harbor。

docker login reg.yourdomain.com
docker push reg.yourdomain.com/myproject/myrepo:mytag
  • 如果Harbor的安装使用HTTPS,则必须向Docker客户端提供Harbor证书。仅供参考, see Configure HTTPS Access to Harbor.
  • 如果Harbor的安装使用HTTP,则必须将选项“--unsecurity registry”添加到客户端的Docker守护进程中,然后重新启动Docker服务。有关详细信息, see Connecting to Harbor via HTTP 如下.

带Notary安装

要使用Notary服务安装Harbor,请在运行install.sh时添加--with-nitificial参数:

sudo ./install.sh --with-notary

要使用Notary进行安装,必须将Harbor配置为使用HTTPS。

有关Notary和Docker内容信托的更多信息, 查看 Content Trust在Docker文档中。

带Trivy安装

要使用Trivy服务安装Harbor,请在运行install.sh时添加--with-trivy参数:

sudo ./install.sh --with-trivy

有关Trivy的更多信息,请参阅 Trivy documentation. 有关如何在网络代理环境中使用Trivy的更多信息,请参阅 Configure custom Certification Authorities for trivy

带Trivy和Notary安装

如果要同时安装公证器和Trivy,请在同一命令中指定所有参数:

sudo ./install.sh --with-notary --with-trivy

通过HTTP连接到Harbor

重要的:  如果Harbor的安装使用HTTP而不是HTTPS,则必须将选项--unsecurity registry添加到客户端的Docker守护进程中。默认情况下,守护程序文件位于/etc/docker/daemon.json

例如,将以下内容添加到daemon.json文件中:

{
"insecure-registries" : ["myregistrydomain.com:5000", "0.0.0.0"]
}

更新daemon.json后,必须重新启动Docker引擎和Harbor。

  1. 重新启动Docker引擎。

    systemctl restart docker
    
  2. 停止Harbor。

    docker-compose down -v
    
  3. 重启Harbor。

    docker-compose up -d