一文掌握Harbor镜像同步公有云镜像仓库实践

一文掌握Harbor镜像同步公有云镜像仓库实践

目录

  • 1 引言
  • 2 概念
    • 2.1 Harbor
    • 2.2 阿里云的镜像仓库ACR
    • 2.3 华为云的镜像仓库SWR
    • 2.4 Harbor复制管理同步镜像
      • 2.4.1 复制管理的工作原理
    • 2.5 Harbor同步镜像到公有云镜像仓库的优势
  • 3 实验:通过Harbor 将容器镜像同步到公有云镜像仓库
    • 3.1 前置条件
    • 3.2 上传镜像到阿里云镜像仓库
      • 3.2.1 在阿里云创建镜像仓库
      • 3.2.2 创建阿里云目标镜像仓库
      • 3.2.3 配置复制策略
      • 3.2.4 将镜像推送到阿里云镜像仓库
    • 3.3 上传镜像到华为云镜像仓库
      • 3.3.1 在华为云创建镜像仓库
      • 3.3.2 在Harbor创建华为云目标镜像仓库
      • 3.3.3 创建目标镜像仓库
      • 3.3.4 配置复制策略
      • 3.3.5 将镜像推送到华为云镜像仓库
  • 4 总结
  • 5 参考文献

❤️摘要: 在云原生应用的开发和部署过程中,镜像管理是关键的一环。为了保证高效、安全的镜像分发到多云环境,企业往往使用多个公有云的镜像服务建设自有的镜像仓库来存储业务镜像。在本文中,我们将介绍如何将容器镜像从Harbor 推送到 阿里云镜像仓库,实现镜像的同步与加速分发。


💯 本文关联好文:

  • 《一文读懂Harbor以及部署实践攻略》
  • 《一文掌握Containerd配置Harbor私有仓库》
  • 《一文掌握Harbor的双向认证实践》
  • 《【云原生安全篇】Trivy助力离线Harbor漏洞扫描实践》
  • 《【云原生安全篇】一文掌握Harbor集成Trivy应用实践》
  • 《【云原生安全篇】Cosign助力Harbor验证镜像实践》

1 引言

随着容器技术的普及,镜像仓库成为了 DevOps 流水线中的重要组成部分。在实际生产中,企业需要将镜像推送到多个公有云上(如阿里云镜像仓库),以利用其全球加速和高可用性。但通常出于安全考虑或网络限制,开发环境的服务器一般会做网络隔离,无法直接访问互联网。为了在这种环境下保持开发流程的顺畅,我们可以通过私有镜像仓库Harbor,先将镜像上传到内部的Harbor,再通过Harbor将镜像自动同步到其他云厂商的镜像仓库。

2 概念

2.1 Harbor

Harbor 是一个企业级的云原生容器镜像仓库,由 VMware 主导开发并贡献给 Cloud Native Computing Foundation (CNCF)。它通过为 Docker 镜像提供安全、高效的管理能力,帮助企业简化容器应用程序的交付流程。相比于传统的 Docker Registry,Harbor 提供了更多的企业级特性,如先前介绍的安全扫描、镜像签名,还有接下来介绍的镜像复制。

2.2 阿里云的镜像仓库ACR

阿里云容器镜像服务ACR(Alibaba Cloud Container Registry)是面向容器镜像、Helm Chart等符合OCI标准云原生制品安全托管及高效分发平台。ACR企业版支持全球同步加速、大规模和大镜像分发加速、多代码源构建加速等全链路加速能力,帮助企业降低交付复杂度,打造云原生应用一站式解决方案。

2.3 华为云的镜像仓库SWR

容器镜像服务(SoftWare Repository for Container,简称SWR)是一种支持镜像全生命周期管理的服务, 提供简单易用、安全可靠的镜像管理功能,帮助您快速部署容器化服务。

2.4 Harbor复制管理同步镜像

镜像同步是一种自动化的镜像传输机制,允许用户在不同的镜像仓库之间定期同步容器镜像。它可以帮助团队在多云或混合云环境下保持不同仓库中的镜像一致性,避免手动推拉镜像的繁琐步骤。

2.4.1 复制管理的工作原理

Harbor的复制管理功能通过配置复制策略(Replication Policies),将镜像从源仓库复制到目标仓库。复制策略包含以下几个部分:

  • 源仓库:你可以选择Harbor本地的某个项目,或外部镜像仓库作为源仓库。
  • 目标仓库:目标仓库可以是另一个Harbor实例或外部公共镜像仓库,例如Docker Hub、阿里云镜像仓库等。
  • 复制模式:Harbor提供单向复制(Push)和双向同步(Pull & Push)两种复制模式。单向复制时,镜像从源仓库推送到目标仓库;双向同步时,镜像可以在源和目标仓库之间互相推拉。
  • 过滤器:你可以根据镜像名称、标签等设置过滤器,选择性复制部分镜像。例如,可以设置仅复制特定标签的镜像,或只复制某个项目中的镜像。
  • 触发模式:Harbor支持多种触发模式,常见的有“手动触发”、“事件驱动”(如镜像推送事件)、“定时任务”等,用户可以根据需要选择触发方式。
  • 认证与访问控制:在进行复制时,Harbor需要能够访问目标仓库。你需要为Harbor配置访问目标仓库的凭证,如用户名和密码或访问令牌。

2.5 Harbor同步镜像到公有云镜像仓库的优势

如上图,在多云环境中,企业可能需要将应用镜像同时部署到多个云平台。通过Harbor的复制功能,企业可以在不同的云服务商(如AWS、阿里云、Azure等)之间自动同步镜像,这样做的优势包括如下:

  • 统一管理镜像仓库入口:Harbor作为一个中央镜像仓库,客户端只需与Harbor交互,所有镜像的管理、上传和下载都通过一个统一的接口进行。同时做到统一认证和授权,减少运维开销。
  • 镜像签名服务:Harbor支持Cosign和Notary进行镜像签名,通过对镜像进行数字签名,可以保证镜像的完整性和可溯源性,可以防止未经过签名的镜像被部署到生产环境,提升镜像使用过程中的安全性。
  • 自动化和高效管理:Harbor支持镜像复制规则的配置,可以将镜像自动同步到多个目标仓库,这种方式不仅节省了手动操作的时间,还可以确保所有镜像版本在各个云环境中保持一致。还可以将镜像同步到公有云镜像仓库就近区域,确保本地化的快速拉取,减少网络延迟和传输瓶颈。
  • 提高镜像拉取速度和优化带宽利用:Harbor可以作为内部的缓存层,减少直接从公有云镜像仓库下载镜像的频次,节省带宽和减少延迟。
  • 统一安全控制和漏洞扫描:Harbor内置了镜像安全漏洞扫描工具,比如Trivy,能够对存储在仓库中的镜像进行自动扫描,发现已知的安全漏洞,生成报告,供开发和运维团队及时修复漏洞,减少镜像发布的风险。
  • 审计与合规性管理:Harbor提供详细的审计日志功能,允许对镜像的所有操作进行记录和追踪
  • 多租户与访问控制:Harbor支持多租户管理,可以为不同的项目设置访问权限,保障各团队或应用的镜像管理安全。
  • 降低云服务依赖,增加灵活性:通过Harbor统一管理镜像,可以避免企业直接依赖某个特定的公有云供应商。

3 实验:通过Harbor将容器镜像同步到公有云镜像仓库

实验中,我将harbor 私有仓库的镜像同步到阿里云和华为云的镜像仓库中,并检查在公有云的镜像仓库是否能看到新推送的镜像。

3.1 前置条件

在开始之前,确保以下条件已准备好:

  • Harbor 已安装并配置:用于管理本地镜像。
  • 阿里云容器镜像服务(ACR)账号:用于云端存储镜像。
  • 华为云容器镜像服务(SWR)账号:用于云端存储镜像。

3.2 上传镜像到阿里云镜像仓库

3.2.1 在阿里云创建镜像仓库

在服务台搜索“ACR”,选择“ 容器镜像服务”。

以下用个人版做实验。

创建命名空间,并做相关配置。

❔ 参数说明:

参数说明
命名空间填入Harbor中需要同步的项目名称。例如test-project。
自动创建仓库选择开启。若选择关闭,在同步镜像前需要在ACR中创建相应的仓库。
默认仓库类型自定义。建议选择私有

3.2.2 创建阿里云目标镜像仓库

登录到Harbor的管理后台,进行一下操作。

  1. 在左侧导航栏选择系统管理 > 仓库管理
  2. 仓库管理页面,单击新建目标

新建目标对话框,填写参数配置。

参数说明
提供者选择Docker Registry。
目标名自定义。
描述自定义。
目标URL填写ACR实例目标仓库域名地址,确保访问控制已开启。
访问ID仓库登录名,阿里云用户账号名。
访问密码仓库登录密码。

3.2.3 配置复制策略

  1. 在左侧导航栏选择系统管理 > 复制管理
  2. 复制管理页面,单击新建规则

新建规则对话框,填写参数。单击保存

参数说明
名称自定义。
描述自定义。
复制模式选择Push-based
源资源过滤器用于过滤需要同步的资源,可依据Harbor界面的提示自行填写,默认为全部资源。
目标仓库选择上一步创建的目标。
目标名称空间填写目标ACR上的命名空间;仓库扁平化用以在复制镜像时减少仓库的层级结构,推荐选择替换1级,例如:harbor-project/nginx -> acr-ns/nginx
触发模式自定义。建议选择事件驱动来同步Harbor上的镜像改动。
带宽限制同步时的最大网络带宽。默认为-1,表示无限制。

3.2.4 将镜像推送到阿里云镜像仓库

复制管理页面,选择上一步骤中创建的规则,单击复制。可以手动同步存量的镜像到ACR实例。当相应的复制任务转化为Succeeded后,同步任务运行成功。

ACR服务可以看到新推送的busybox镜像。

3.3 上传镜像到华为云镜像仓库

3.3.1 在华为云创建镜像仓库

登录华为云,在服务台搜索SWR,选择“容器镜像服务”

创建一个组织,类似Harbor 的项目

创建长期有效密钥,后面创建目标端有用。

3.3.2 在Harbor创建华为云目标镜像仓库

登录到Harbor的管理后台,进行一下操作。

3.3.3 创建目标镜像仓库

  1. 在左侧导航栏选择系统管理 > 仓库管理
  2. 仓库管理页面,单击新建目标

新建目标对话框,填写参数配置。

参数说明
提供者必须选择“Huawei SWR”。
目标名自定义。
描述自定义。
目标URL填写SWR实例目标仓库域名地址。镜像仓库地址获取方法:登录容器镜像服务控制台,进入“我的镜像”,单击“客户端上传”,在弹出的页面即可查看SWR当前Region的镜像仓库地址。
访问ID仓库登录名,需要生成长期有效密钥。

测试连接是否成功。

3.3.4 配置复制策略

  1. 在左侧导航栏选择系统管理 > 复制管理
  2. 复制管理页面,单击新建规则

新建规则对话框,填写参数。单击保存

参数说明
名称自定义。
描述自定义。
复制模式选择Push-based
源资源过滤器用于过滤需要同步的资源,可依据Harbor界面的提示自行填写,默认为全部资源。
目标仓库选择上一步创建的目标。
目标名称空间填写目标SWR上的命名空间;仓库扁平化用以在复制镜像时减少仓库的层级结构,推荐选择替换所有级
触发模式自定义。建议选择事件驱动来同步Harbor上的镜像改动。

3.3.5 将镜像推送到华为云镜像仓库

复制管理页面,选择上一步骤中创建的规则,单击复制。可以手动同步存量的镜像到SWR实例。当相应的复制任务转化为Succeeded后,同步任务运行成功。

查看SWR上的镜像,显示多个busybox镜像。


4 总结

通过 Harbor 的镜像同步功能,可以轻松地将本地镜像推送到阿里云或华为云等不同场景。这种方式在多云环境中非常有用,既简化了镜像管理的流程,又提高了仓库管理的安全性和高效性。希望通过本文,帮助你在多云环境中高效管理镜像仓库。


5 参考文献

  • [1]Harbor 官方文档
  • [2]阿里云容器镜像服务文档
  • [3]华为云容器镜像服务文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/439013.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

win7怎么禁用驱动强制数字签名?win7驱动程序强制数字签名禁用方法

在Windows 7 64位操作系统中,安装驱动程序时可能会遇到“数字签名”的问题,这是微软为了确保驱动程序的安全性和可靠性而引入的一项安全机制。本文将深入探讨这个问题,并提供有效的解决方案。 理解数字签名的概念是至关重要的。数字签名是一…

C语言复习概要(二)

本文目录 C语言中的数组与函数详解1. 引言2. 数组2.1. 什么是数组?语法:示例: 2.2. 数组的初始化示例 1:在声明时初始化示例 2:部分初始化示例 3:运行时赋值 2.3. 数组的访问与修改示例: 2.4. 多…

【Python游戏开发】贪吃蛇游戏demo

准备步骤 项目开发使用【Mu 编辑器】 1.新建项目,并导入游戏图片 游戏编写 1.创建场景 SIZE 15 # 每个格子的大小 WIDTH SIZE * 30 # 游戏场景总宽度 HEIGHT SIZE * 30 # 游戏场景总高度def draw():screen…

LabVIEW裂纹深度在线监测系统

随着铁路运输技术的快速发展,火车安全问题成为重中之重,尤其是轮面裂纹的检测和管理。裂纹的出现可能导致严重的列车事故,因此,建立可靠的在线监测系统,实时掌握裂纹情况,对保障铁路运输安全至关重要。 La…

在线JSON可视化工具--支持缩放

先前文章提到的超好用的JSON可视化工具,收到反馈,觉得工具好用,唯一不足就是不能缩放视图,其实是支持的,因为滚轮有可能是往下滚动,会与缩放冲突,所以这个工具设计为需要双击视图来触发打开缩放…

选择网络安全模式启动Windows系统,解决PC无法连接网络问题

目录 1、电脑无法连接网络 2、发现C:\Windows\System32\drivers路径下的很多文件不见了 3、使用360安全卫士中的断网急救箱工具修复,也就解决不了问题 4、重启系统,以网络安全模式启动系统,修复系统网络模块,完美解决问题 5、…

AI不可尽信

看到某项目有类似这样的一段代码 leaves : make([]int, 10) leaves leaves[:0]没理解这样的连续两行,有何作用? 初始化一个长度和容量都为10的切片,接着把切片长度设置为0 即如下demo: (在线地址) package mainimport "fmt"func main() {leaves : make([]int, 1…

加密与安全_HOTP一次性密码生成算法

文章目录 HOTP 的基础原理HOTP 的工作流程HOTP 的应用场景HOTP 的安全性安全性增强措施Code生成HOTP可配置项校验HOTP可拓展功能计数器(counter)计数器在客户端和服务端的作用计数器的同步机制客户端和服务端中的计数器表现服务端如何处理计数器不同步计…

智能视界·大模型驱动视频矩阵管理系统

开头先配两张ER图 一张不带字段,一张带字段,剩下的内容按需拿取 1.产品介绍 产品名称: 智能视界大模型驱动视频矩阵管理系统 主要功能: 智能视频分析与识别 功能介绍:该系统集成先进的人工智能大模型,能…

Sping源码:三级缓存

目录 一、概念1、三级缓存的作用2、循环依赖的含义 二、代码1、代码下载2、文件功能介绍3、源码分析3.1、找到获取A对象的位置,打断点进行debug操作3.2、一步步找到在A对象中注入B对象的位置3.3、一步步找到B对象注入A对象的位置3.4、往下找到通过三级缓存解决循环依…

车辆重识别(2020NIPS去噪扩散概率模型)论文阅读2024/9/27

[2] Denoising Diffusion Probabilistic Models 作者:Jonathan Ho Ajay Jain Pieter Abbeel 单位:加州大学伯克利分校 摘要: 我们提出了高质量的图像合成结果使用扩散概率模型,一类潜变量模型从非平衡热力学的考虑启发。我们的最…

Nagle 算法:优化 TCP 网络中小数据包的传输

1. 前言 在网络通信中,TCP(传输控制协议)是最常用的协议之一,广泛应用于各种网络应用,如网页浏览、文件传输和在线游戏等。然而,随着互联网的普及,小数据包的频繁传输成为一个不容忽视的问题。…

智能手表(Smart Watch)项目

文章目录 前言一、智能手表(Smart Watch)简介二、系统组成三、软件框架四、IAP_F411 App4.1 MDK工程结构4.2 设计思路 五、Smart Watch App5.1 MDK工程结构5.2 片上外设5.3 板载驱动BSP5.4 硬件访问机制-HWDataAccess5.4.1 LVGL仿真和MDK工程的互相移植5…

malloc源码分析之 ----- 你想要啥chunk

文章目录 malloc源码分析之 ----- 你想要啥chunktcachefastbinsmall binunsorted binbin处理top malloc源码分析之 ----- 你想要啥chunk tcache malloc源码,这里以glibc-2.29为例: void * __libc_malloc (size_t bytes) {mstate ar_ptr;void *victim;vo…

【PHP陪玩系统源码】游戏陪玩系统app,陪玩小程序优势

陪玩系统开发运营级别陪玩成品搭建 支持二开源码交付,游戏开黑陪玩系统: 多客陪玩系统,游戏开黑陪玩,线下搭子,开黑陪玩系统 前端uniapp后端php,数据库MySQL 1、长时间的陪玩APP源码开发经验,始终坚持从客户…

CentOS 替换 yum源 经验分享

视频教程在bilibili:CentOS 替换 yum源 经验分享_哔哩哔哩_bilibili问题原因 解决方法 1. 进入镜像目录 [rootlocalhost ~]# cd /etc/yum.repos.d/ 2.备份文件 [rootlocalhost yum.repos.d]# rename repo bak * 3.寻找阿里镜像源复制 https://developer.aliyun.com/mirror/ …

【pytorch】张量求导4

再再接上文,看到作者有一个关于向量乘矩阵的描述。 经过搜索发现,现在的pytorch已经修复了这一问题,提供了mv()和matmul()两种方式实现矩阵和一维向量的乘积,可以参看这篇文章。 经过查阅pytorch的文件,找到了cuda侧…

【重学 MySQL】五十三、MySQL数据类型概述和字符集设置

【重学 MySQL】五十三、MySQL数据类型概述和字符集设置 MySQL数据类型概述MySQL字符集设置注意事项 MySQL数据类型概述 MySQL是一个流行的关系型数据库管理系统,它支持多种数据类型,以满足不同数据处理和存储的需求。理解并正确使用这些数据类型对于提高…

SpringBoot整合异步任务执行

同步任务: 同步任务是在单线程中按顺序执行,每次只有一个任务在执行,不会引发线程安全和数据一致性等 并发问题 同步任务需要等待任务执行完成后才能执行下一个任务,无法同时处理多个任务,响应慢,影响…

linux中缓存,在kafka上应用总结

linux中的缓存 页缓存 pagecatch(读缓存用于提供快速读)块缓存(用于提供其他设备快速写)当对读缓存读的时候,修改了读的数据,页缓存就会被标记为脏数据,等到写的时候它会向块缓存同步数据&…