创建复制规则

在创建复制规则之前,必须存在复制端点。要创建端点,请按照创建复制端点中的说明进行操作。

由于 v2.0 版本中支持 OCI 的 API 发生了重大更改。您不能从 Harbor v1.x 复制到 v2.0 及更高版本,并且您不能将带有 manifest list 的镜像从 v2.0 及更高版本复制到 v1.x。
  1. 使用具有 Harbor 系统管理员权限的帐户登录到 Harbor 界面。

  2. 展开 管理,然后选择 复制

    Add a replication rule

  3. 单击 新建复制规则

  4. 为复制规则提供名称和描述。

  5. 选择 基于推送基于拉取 的复制,具体取决于您要将镜像复制到远程注册中心还是从远程注册中心复制。

    Replication mode

  6. 如果您正在创建基于拉取的规则,请使用 源注册中心 下拉菜单从配置的复制端点中选择。

  7. 对于 源资源过滤器,确定要复制的镜像。

    Replication filters

    • 名称:通过输入镜像名称或片段来复制具有给定名称的资源。
    • 标签:通过输入标签名称或片段来复制具有给定标签的资源。您还可以为此过滤器指定匹配/排除。
    • 标签:通过使用下拉菜单从可用标签中选择,来复制具有给定标签的资源。您还可以为此过滤器指定匹配/排除。
    • 资源:复制镜像、制品或全部。制品包含镜像和其他 OCI 兼容资源。

    名称过滤器和标签过滤器支持以下模式

    • *:匹配任何非分隔符字符 / 的序列。
    • **:匹配任何字符序列,包括路径分隔符 /。请注意,双星号必须作为路径组件单独出现。诸如 /path** 之类的模式无效,将被视为与 /path* 相同,但 /path*/** 应该可以实现所需的结果。
    • ?:匹配任何单个非分隔符字符 /
    • {alt1,…}:如果逗号分隔的替代项之一匹配,则匹配字符序列。

    注意: 如果您想复制 Docker Hub 的官方镜像,则必须添加 library。例如,library/hello-world 匹配官方的 hello-world 镜像。

    模式 字符串(匹配或不匹配)
    library/* library/hello-world(是)
    library/my/hello-world(否)
    library/** library/hello-world(是)
    library/my/hello-world(是)
    {library,goharbor}/** library/hello-world(是)
    goharbor/harbor-core(是)
    google/hello-world(否)
    1.? 1.0(是)
    1.01(否)
  8. 如果您正在创建基于推送的复制规则,请使用 目标注册中心 下拉菜单从配置的复制端点中选择。

  9. 对于 目标命名空间,在文本框中输入要在其中复制资源的命名空间的名称。如果您不输入命名空间,资源将放置在与源注册中心相同的命名空间中。

  10. 使用目标扁平化下拉列表选择您希望 Harbor 在复制镜像时如何处理镜像层级结构。根据您的选择,当将镜像复制到您选择的目标命名空间时,Harbor 将从镜像层级结构中删除相同数量的级别,从左侧开始。

    • 扁平化所有级别:从复制的镜像中删除所有层级结构。例如,a/b/c/d/img 复制到 namespace/img。这是 v2.2 及更早版本中复制的默认行为。升级到 v2.3.0 之前创建的所有复制规则在升级后都将默认使用此扁平化选项。
    • 不扁平化:复制镜像时使用相同的层级结构。例如,a/b/c/d/img 复制到 namespace/a/b/c/d/img
    • 扁平化 1 级别:从镜像层级结构中删除一个级别。例如,a/b/c/d/img 复制到 namespace/b/c/d/img。这是默认选择。
    • 扁平化 2 级别:从镜像层级结构中删除两个级别。例如,a/b/c/d/img 复制到 namespace/c/d/img
    • 扁平化 3 级别:从镜像层级结构中删除三个级别。例如,a/b/c/d/img 复制到 namespace/d/img
  11. 使用触发模式下拉菜单选择如何以及何时运行规则。

    • 手动:在需要时手动复制资源。注意:删除操作不会被复制。
    • 定时:通过定义 cron 作业定期复制资源。注意:删除操作不会被复制。
    • 基于事件:当新资源被推送到项目,或者镜像被重新标记时,它会立即复制到远程注册中心。如果您选择 当本地删除时删除远程资源,如果您删除一个镜像,它将自动从复制目标中删除。
    您可以根据应用于镜像的标签过滤用于复制的镜像。但是,更改镜像上的标签不会触发复制。基于事件的复制仅限于推送、重新标记和删除镜像。

    Trigger mode

  12. 可以选择设置每个复制任务的最大网络带宽,请注意并发执行的数量,每个 job-service pod 的默认值为 10。单位是千字节/秒,-1 代表无限带宽。

    Bandwidth

    存在一个已知问题 15708,如果您将带宽限制得太慢,并停止复制作业,则可能需要相当长的时间才能真正释放作业 worker 以运行新作业。
  13. 可以选择选中覆盖复选框以强制复制的资源替换目标中具有相同名称的资源。

    Override

  14. 可以选择选中按块复制复选框以启用按块复制镜像 blob,目前仅支持源和目标注册中心均为 harbor 的情况,但您可以手动调用 harbor API 为其他类型的注册中心启用此功能。

    Copy by chunk

    按块复制尚未在 harbor 和其他类型注册中心之间经过官方验证。默认块大小为 10MB,您可以通过在 jobservice 中设置 env REPLICATION_CHUNK_SIZE 来覆盖它,该值应以字节为单位,例如 10MB=1024*1024*10,然后您应设置 REPLICATION_CHUNK_SIZE=10485760
  15. 单击 保存 以创建复制规则。

下一步操作

创建复制规则后,请参阅手动运行复制