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

news2024/11/18 9:42:25

一文掌握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.coloradmin.cn/o/2184267.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

刷题系统小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,知识点管理,科目类型管理,试题管理,试卷管理,系统管理 微信端账号功能包括:系统首页,我的 开发系统&#…

vulnhub-W34kn3ss 1靶机

vulnhub:https://www.vulnhub.com/entry/w34kn3ss-1,270/ 导入靶机,扫描 靶机开在192.168.81.7.扫描端口 扫到三个端口,存在网站服务,访问 80端口没什么东西,443似乎访问到的是同一个界面,这种情况下一般是…

Visual Studio C# 处理和修复 WinRiver II 测量项目 MMT 文件错误

Visual Studio C# 处理和修复 WinRiver II 测量项目 MMT 文件错误 前言一、WinRiver II 测量项目 MMT 文件的结构二、WinRiver II 无法打开或操作测量项目 MMT 文件2.1 无法载入船测多线法测量文件2.2 可以载入测验项目 MMT 文件,但 ADCP 后处理软件无法写入信息2.3…

基于SpringBoot+vue的监理公司信息化管理系统设计与实现

目录 1. 系统概述 2. 技术选型 3. 系统模块设计 3.1 收入支出管理 3.2 合同管理 3.3 财务统计 3.4 甲方乙方公告 4. 安全性考虑 5. 效果展示和示例代码 6. 总结 1. 系统概述 随着经济的快速发展和社会的进步,建筑行业作为国民经济的重要支柱产业之…

[MAUI]数据绑定和MVVM:MVVM的属性验证

一、MVVM的属性验证案例 Toolkit.Mvvm框架中的ObservableValidator类,提供了属性验证功能,可以使用我们熟悉的验证特性对属性的值进行验证,并将错误属性提取和反馈给UI层。以下案例实现对UI层的姓名和年龄两个输入框,进行表单提交验证。实现效果如下所示 View<ContentP…

医院体检管理系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;体检分类管理&#xff0c;体检套餐管理&#xff0c;体检预约管理&#xff0c;体检报告管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;体检套餐&a…

Jetson 开发系列:Orin Nano 开箱!一款强大的嵌入式物联网开发板

边缘计算作为 AI 的一个重要应用场景&#xff0c;面临着前所未有的机遇与挑战。 谈及 AI&#xff0c;自然绕不开 NVIDIA 的产品&#xff1a; 其中&#xff0c;Jetson 系列均为 AIoT 设备打造&#xff0c;功耗低是其最大的特点。以我手头的 Jetson Ori Nano 为例&#xff0c;满…

一文彻底搞懂多模态 - 基础术语+基础知识+多模态学习

文章目录 技术交流基本术语一、数据采集与表示二、数据处理与融合三、学习与推理 基础知识一、传统机器学习二、深度学习三、优化算法四、应用领域 多模态学习一、模态表示二、多模态融合图片 三、跨模态对齐 最近这一两周看到不少互联网公司都已经开始秋招发放Offer。 不同以…

【MAUI】View和ViewModel的关联方式

方式一:创建ViewModel对象: 在View中,通过设置BindingContext为ViewModel对象,即可进行绑定。如下所示: <ContentPage......xmlns:vm="clr-namespace:MauiApp8.ViewModels"><

多模态RAG实现

在标准 RAG 中&#xff0c;输入文档包含文本数据。LLM 利用上下文学习&#xff0c;通过检索与所提查询上下文相匹配的文本文档块来提供更相关、更准确的答案。 但是&#xff0c;如果文档包含图像、表格、图表等以及文本数据&#xff0c;该怎么办&#xff1f; 不同的文档格式包…

基于 Qwen2.5-0.5B 微调训练 Ner 命名实体识别任务

一、Qwen2.5 & 数据集 Qwen2.5 是 Qwen 大型语言模型的最新系列&#xff0c;参数范围从 0.5B 到 72B 不等。 对比 Qwen2 最新的 Qwen2.5 进行了以下改进&#xff1a; 知识明显增加&#xff0c;并且大大提高了编码和数学能力。在指令跟随、生成长文本&#xff08;超过 8K…

【Maven】依赖管理,Maven仓库,Maven核心功能

Maven 是一个项目管理工具&#xff0c;基于 POM&#xff08;Project Object Model&#xff0c;项目对象模型&#xff09;的概念&#xff0c;Maven 可以通过一小段描述信息来管理项目的构建&#xff0c;报告和文档的项目管理工具软件 大白话&#xff1a;Maven 是一个项目管理工…

Spring MVC 常用注解

目录 基础概念 常用注解介绍 基础概念 1、MVC &#xff1a;代表一种软件架构设计思想&#xff0c;通俗的理解&#xff1a;客户端发送请求到后台服务器的Controller(C)&#xff0c;控制器调用Model(M)来处理业务逻辑&#xff0c;处理完成后&#xff0c;返回处理后的数据到Vie…

【CKA】七、七层负载-Ingress应用

7、七层负载-Ingress应用 1. 考题内容&#xff1a; 2. 答题思路&#xff1a; 1、要先查到集群中使用的ingressclass 2、编写yaml 我考的题只是把 hi 服务换成了 hello&#xff0c;其他都一模一样 3. 官网地址&#xff1a; https://kubernetes.io/zh-cn/docs/concepts/serv…

基于SSM的大型商场会员管理系统【附源码】

基于SSM的大型商场会员管理系统&#xff08;源码L文说明文档&#xff09; 目录 4 系统设计 4.1布局设计原则 4.2功能模块设计 4.3数据库设计 4.3.1数据库E-R图 4.3.2 数据库表结构 第五章 系统实现 5.1 管理员功能实现 5.1.1 员工管理 5.1…

基于SD卡的基因(DNA)炫酷LED桌面灯

基于SD卡的基因&#xff08;DNA&#xff09;炫酷LED桌面灯 一、介绍一个已知的问题解决办法 二、支持目录材料准备LED灯光文件&#xff08;我使用的PLA颜色&#xff09; 三、 打印部件和焊接四、拼装打印的DNA散件五、组合DNA螺旋结构六、执行DNA文件七、程序烧录八、总结及成品…

六、Drf限流组件

六、限流组件 限制某个视图在某个时间段内被同一个用户访问的次数 6.1限流组件的简单应用 1&#xff09;安装django-redis pip3 install django-redis2)在settings.py中注册cache #缓存数据库redis配置 CACHES{"default":{"BACKEND":"django_red…

AI 对话工具汇总

&#x1f423;个人主页 可惜已不在 &#x1f424;这篇在这个专栏AI_可惜已不在的博客-CSDN博客 &#x1f425;有用的话就留下一个三连吧&#x1f63c; 目录 前言: 正文: 前言: 在科技飞速发展的时代&#xff0c;AI 对话正逐渐成为我们获取信息、交流思想的新方式。它以强…

Mysql(索引与事务)

索引查询与普通查询的区别 普通查询 &#xff1a;执行步骤为先对表进行遍历&#xff0c;然后把当前的行带入条件中进行判断&#xff0c;符合条件执行&#xff0c;不符合跳出。这种情况在遇见数据较多的情况下就会出现问题&#xff0c;效率太低。 索引查询&#xff1a;是对查询…

深入解析 https

我的主页&#xff1a;2的n次方_ 1. 背景介绍 在使用 http 协议的时候是不安全的&#xff0c;可能会出现运营商劫持等安全问题&#xff0c;运营商通过劫持 http 流量&#xff0c;篡改返回的网页内容&#xff0c;例如广告业务&#xff0c;可能会通过 Referer 字段 来统计是…