Harbor 2.8+ 弃用ChartMuseum后,如何用OCI规范管理Helm Charts?

Harbor与Helm的深度整合:OCI规范下的Chart管理实践 本文深入探讨了Harbor与Helm在OCI规范下的深度整合实践,旨在解决传统Chart管理中的安全、效率与一致性难题。通过将Helm Chart作为OCI工件统一存储在Harbor中,实现了与容器镜像同等的存储、分发、安全扫描和生命周期管理,从而构建起高效、统一的云原生资产治理方案。 阅读详情

Harbor 2.8+时代:全面掌握OCI规范下的Helm Charts管理新范式

当Harbor 2.8版本正式移除ChartMuseum组件时,许多技术团队突然发现自己熟悉的Helm Charts管理方式需要彻底重构。这不仅是工具的变更,更是云原生制品管理理念的一次重要演进——从专用存储转向符合OCI(Open Container Initiative)标准的统一制品管理。本文将带您深入理解这一转变的技术内涵,并提供从迁移到日常运维的完整解决方案。

1. OCI规范与Helm Charts管理的范式转移

OCI规范最初是为容器镜像设计的开放标准,但随着云原生生态的发展,其应用范围已扩展到各类制品(Artifacts)。在Harbor 2.8+中,Helm Charts作为OCI Artifact的一种特殊类型,与容器镜像共享相同的存储、权限和分发机制。这种统一管理带来了几个显著优势:

  • 架构简化:不再需要维护独立的ChartMuseum服务,降低系统复杂度
  • 存储效率:复用Harbor现有的存储后端和垃圾回收机制
  • 安全一致:统一使用Harbor的RBAC、漏洞扫描和签名验证功能
  • 操作统一:相同的API和CLI操作适用于所有制品类型

技术对比表格:

特性ChartMuseum方案OCI方案
存储位置独立存储结构与镜像共享存储空间
访问控制单独配置复用Harbor项目权限体系
Helm版本要求Helm 2/3均可必须使用Helm 3.8+
制品类型仅支持Helm Charts支持任意OCI Artifact
元数据管理独立数据库统一制品元数据系统

2. 迁移实战:从ChartMuseum到OCI的完整路径

2.1 环境准备与兼容性检查

在开始迁移前,需要确认以下先决条件:

  • Harbor版本≥2.8.0(推荐2.10+)
  • Helm客户端版本≥3.8.0(需支持OCI)
  • kubectl已配置正确的Kubernetes上下文

验证Helm OCI支持:

helm version --template='{{.Version}}'
# 输出应为v3.8.0或更高

2.2 现有Charts的批量迁移

对于已有ChartMuseum中的内容,可采用分阶段迁移策略:

  1. 导出存量Charts:
# 获取项目下所有Charts列表
helm search repo <repo-name> -o json | jq '.[].name' > charts-list.txt

# 批量下载Charts包
while read chart; do
  helm pull $chart --version $(helm show chart $chart | yq e '.version' -)
done < charts-list.txt
  1. OCI格式转换与推送:
# 登录Harbor OCI仓库
helm registry login -u <username> <harbor-domain>

# 批量推送转换后的Charts
for tgz in *.tgz; do
  chart_name=$(tar -xOzf $tgz Chart.yaml | yq e '.name')
  chart_version=$(tar -xOzf $tgz Chart.yaml | yq e '.version')
  helm push $tgz oci://<harbor-domain>/<project-name> --destination $chart_name:$chart_version
done

注意:大规模迁移时建议使用Harbor API获取完整Chart清单,并考虑编写迁移脚本自动化处理。

3. OCI规范下的日常运维实践

3.1 开发工作流重构

现代CI/CD流水线需要适应OCI规范的变化:

# 典型开发工作流示例
# 1. 打包Chart
helm package ./my-chart --version 1.2.3

# 2. 推送到Harbor
helm push my-chart-1.2.3.tgz oci://harbor.example.com/project

# 3. 部署到测试环境
helm pull oci://harbor.example.com/project/my-chart --version 1.2.3
helm install my-release ./my-chart-1.2.3.tgz

3.2 高级管理技巧

多项目同步策略:

# 使用Harbor复制功能跨实例同步Charts
harbor-cli artifact replicate \
  --source harbor-src.example.com/project \
  --dest harbor-dest.example.com/project \
  --filter "type=helm-chart"

存储优化配置:

# harbor.yml 部分配置
chart:
  storage:
    oci:
      maxThreads: 10  # 并发上传线程数
      chunkSize: 1MB  # 分块大小

4. 常见问题诊断与性能优化

4.1 典型问题排查指南

问题现象:推送Chart时报错"unsupported media type"

解决方案:

  1. 确认Helm版本≥3.8.0
  2. 检查Harbor配置中OCI支持已启用
  3. 验证Chart的apiVersion是否为v2(Chart.yaml中)

问题现象:拉取Chart速度慢

优化建议:

# 启用Harbor的P2P分发功能
helm install harbor-p2p \
  --set registry.middleware.distribution.enabled=true \
  oci://harbor.example.com/project/distribution-chart

4.2 监控与告警配置

建议在Prometheus中添加以下关键指标监控:

  • harbor_artifact_pull_duration_seconds{type="helm-chart"}
  • harbor_artifact_push_count{type="helm-chart"}
  • harbor_storage_usage_bytes{type="helm-chart"}

示例告警规则:

- alert: HighChartPushLatency
  expr: histogram_quantile(0.9, sum(rate(harbor_artifact_push_duration_seconds_bucket{type="helm-chart"}[5m])) by (le)) > 10
  for: 10m

5. 安全加固与最佳实践

5.1 签名验证深度集成

# Chart签名与验证流程
# 1. 创建签名密钥
cosign generate-key-pair

# 2. 签名Chart
helm package --sign --key 'Your Name' --keyring ~/.gnupg/secring.gpg my-chart

# 3. 推送签名和Chart
helm push my-chart-1.0.0.tgz oci://harbor.example.com/project
cosign sign --key cosign.key harbor.example.com/project/my-chart:1.0.0

# 4. 部署时验证
cosign verify --key cosign.pub harbor.example.com/project/my-chart:1.0.0
helm install --verify --keyring ~/.gnupg/pubring.gpg my-release oci://harbor.example.com/project/my-chart

5.2 企业级治理策略

保留策略示例:

-- 保留最近5个版本,其余自动清理
CREATE RETENTION POLICY helm_retention ON project
  MATCHES '**/* (helm-chart)'
  KEEP 5 LATEST

跨项目访问控制:

# 项目间Chart共享配置
permissions:
  - fromProject: "dev-team"
    toProject: "qa-team"
    artifactTypes: ["helm-chart"]
    actions: ["pull"]

在实际企业环境中,我们通过自动化工具链将OCI规范的Helm管理集成到完整的GitOps流程中。每个Chart变更都触发自动化测试流水线,通过后才能推送到生产仓库。这种严格管控配合OCI的统一管理特性,显著提升了部署可靠性和审计效率。

Harbor与Helm的OCI集成:现代化Chart管理实践 本文深入探讨了Harbor与Helm通过OCI标准实现现代化Chart管理的实践。OCI规范统一了容器镜像与Helm Chart的存储与管理,利用Harbor原生支持,用户可在同一平台使用同一套权限体系管理两者,简化了架构与运维。文章详细介绍了环境准备、Chart推送拉取的全流程,并分享了企业级CI/CD集成、权限控制等进阶实践与避坑指南,助力团队提升云原生资产管理效率。 阅读详情

相关推荐

基于harbor管理helm charts的方法

Helm是Kubernetes的包管理器。Helm使用一种称为charts的打包格式。自1.6.0版本以来,Harbor是一个复合的云原生注册表,支持容器镜像管理和Helm Chart管理。对Harbor中Helm charts的访问由基于角色的访问控制(RBAC)控制,并受项目限制。有两个地方可以管理Helm Charts。ChartMuseum,由Harbor自1.6.0版起提供兼容OCI的注册表,由Harbor从2.0.0版开始提供。

weixin_43808555的博客 2733

Helm3.7+新特性:用OCI方式直接操作Harbor仓库(告别ChartMuseum)

本文详细介绍了Helm 3.7+版本原生支持OCI协议后,如何直接操作Harbor仓库进行Helm Chart的存储与管理,从而彻底告别传统的ChartMuseum组件和`helm cm-push`插件。文章对比了新旧方案的优劣,提供了从环境配置、Chart推送拉取到迁移策略的完整实战指南,帮助用户实现更标准化、简化的云原生Chart管理流程。

m5n6o7的博客 460

Helm 3 是什么?Kubernetes 包管理器核心原理与实战

Helm 是 Kubernetes 原生应用的包管理器,解决 YAML 部署中资源编排复杂、配置难复用、升级易出错等工程痛点。其核心原理是基于 Go template 的声明式模板渲染,结合 values.yaml 实现环境差异化配置,并通过 Release CRD 实现状态强一致性管理。技术价值在于将多资源、多依赖、多环境的应用(如 Harbor、Prometheus)封装为可版本化、可参数化、可原子操作的 Chart 包,显著降低运维复杂度。典型应用场景包括企业级镜像仓库部署、CI/CD 自动化发布、灰

weixin_34279579的博客 468

【K8S】OCI标准下的企业级镜像治理:Harbor+Skopeo+Trivy 最佳实践

【K8S】OCI标准下的企业级镜像治理:Harbor+Skopeo+Trivy 最佳实践 文章目录 前言 一、底层基石:OCI规范,所有容器生态的统一语言 1.1 OCI是什么 1.2 为什么必须抛弃Docker原生体系 1.3 公有云与开源的对应关系 二、核心组件拆解:三大事实标准工具核心能力 2.1 Harbor:企业级私有制品仓库事实标准 Harbor核心企业级能力 2.2 Skopeo:生产级镜像流转工具事实标准 Skopeo碾压Docker命令的核心优势 2.3 Trivy:容器漏洞扫描事实标准

小哈里的博客 870

helm的安装与仓库设置

helm简介与安装部署,国内常用helm仓库与私有仓库设置

m0_74744227的博客 620

生产级 Helm Chart 实战:从踩坑到可审计的工程化实践

Helm 是 Kubernetes 生态中实现 YAML 参数化与配置复用的核心工具,其本质是构建可重复、可验证、可审计的部署流水线。理解 Helm 的模板渲染原理、values 参数化机制及 Chart 目录的防御性设计逻辑,是避免 'UPGRADE FAILED'、'invalid clusterIP' 等高频故障的前提。它不仅支撑微服务灰度发布与多环境差异化配置,更深度集成 CI/CD 流水线、安全合规扫描(如 Trivy)和 SOC2 审计要求。本文聚焦 Helm Chart 工程化落地的关键细节—

afhu47033的博客 502

容器编排大王Kubernetes——helm包管理工具(8)

介绍helm是kubernetes集群中chart包的管理工具,相当于rpm包的管理工具为yum/install,而helm管理的是k8s部署业务的yaml文件一键安装部署可以做到,适用于打包给开发人员一键部署

fjwyyy的博客 1911

Helm 实战指南:从零掌握 Kubernetes 应用打包与部署

在云原生和容器化部署领域,Kubernetes 已成为容器编排的事实标准。然而,直接使用原生 YAML 文件管理复杂应用的部署,会面临配置繁琐、环境差异和版本管理混乱等挑战。为此,Helm 应运而生,它作为 Kubernetes 的包管理工具,通过引入 Chart(应用包)、Release(发布实例)和 Repository(仓库)三大核心概念,实现了应用定义的模板化、参数化和版本化。其技术价值在于将应用及其依赖标准化为可复用的软件包,并提供了安装、升级、回滚的全生命周期管理能力,极大地提升了部署效率和运维

weixin_33672109的博客 808

云原生运维学习笔记:Docker 数据卷、网络管理与镜像自定义深度实践

本文深入探讨Docker数据持久化、网络管理与镜像自定义三大核心运维技术。通过数据卷(Volume)实现容器数据持久化,支持匿名卷、命名卷及宿主机目录绑定;利用--volumes-from构建数据卷容器,实现多容器间数据共享。在网络层面,掌握端口映射(-p/-P)、自定义网络及容器通信机制。最后,基于Dockerfile实现应用镜像的定制化构建,为Kubernetes等云原生平台部署奠定基础。内容涵盖实践操作与原理剖析,是进阶容器运维的关键一环。

2604_96593683的博客 454

Helm Chart:Kubernetes应用的可版本化软件包

在云原生环境中,Kubernetes 原生YAML配置面临复用难、版本乱、回滚差、分发弱等工程化瓶颈。Helm 通过 Chart(可参数化模板包)与 Release(带快照的状态管理)两大核心机制,将应用交付提升至类似 Maven 或 npm 的软件制品级别——实现版本控制、依赖管理、环境隔离与原子操作。它本质是面向生产环境的声明式交付范式,支撑 CI/CD 流水线、GitOps 实践及企业级私有仓库(如 Harbor)集成。本文深入解析 Helm v3 架构演进、Chart 设计原理与 Ubuntu 22

jackleechina2011212的博客 495

Kubernetes供应链安全七层纵深防御实战

Kubernetes供应链安全并非单一镜像扫描或RBAC配置问题,而是覆盖代码提交、CI构建、镜像签名、Helm分发、YAML策略、运行时监控与全链路审计的系统性工程。其核心原理在于打破‘默认信任’,通过GPG提交签名、cosign镜像签名、SLSA构建证明等可信验证机制,建立从开发源头到Pod运行的持续校验闭环。该技术方案显著提升云原生环境对投毒攻击、恶意依赖和未授权变更的免疫能力,广泛适用于金融、电商等高合规要求场景下的K8s生产平台加固。

weixin_30825581的博客 412

云原生运维实战:Docker 底层存储、Compose 编排与 Ceph 入门

Docker Compose 用来定义和运行一组关联容器,通过 YAML 描述服务、网络、存储。v1:Python 开发,已经停止维护;v2:Go 开发,集成进 docker CLI,命令。。services:定义容器服务;networks:容器网络;volumes:数据卷持久化;configs:配置文件。

Wzh5452830的博客 199

wifi/BT芯片RTL8723DS驱动移植和测试之一wifi篇

本文主要介绍如何在stm32mp157中移植并测试芯片RTL8723DS的wifi功能。

汉尼拔勇闯天涯 8744

云原生项目三:Docker秒级启动NextCloud个人网盘存储办公系统

首先讲解一下我的环境,我没有新建虚拟机,做上一个项目的时候在ping通外网后我给拍摄快照了,所以我就直接恢复快照了,小朋友不要和我学习哦,尽量新建虚拟机or克隆一个node出来,保证环境的干净,不然端口容易冲突,配置文件也是容易改错,最后导致实验失败。这次依旧是openeuler 22.03的镜像,处理器1个2核的,4GB的内存,20GB的存储打开虚拟机后先检查是否ping通外网,然后依旧关闭selinux,firewalld,然后就可以开始接下来的操作了。

zfm242397396的博客 217

基于YOLOv8的多类别检测模型融合实战:从数据集重构到模型训练

本文详细介绍了如何将多个单一类别的YOLOv8检测模型融合为一个高效的多类别检测模型。通过重构数据集、利用预训练模型生成新标签,并重新训练,解决了多模型并行带来的速度慢、资源占用高和部署复杂等问题。实战流程涵盖数据准备、标签生成、模型训练与评估,旨在帮助开发者构建性能优异的YOLOv8多类别检测模型。

kmeans3miner的博客 229

【Bug已解决】claude: No such file or directory — Claude Code 命令凭空消失解决方案

方案适用场景推荐指数难度方案一:重建软链接所有平台,软链接断裂⭐⭐⭐⭐⭐低方案二:修复 shebangnvm 用户,不想重装⭐⭐⭐⭐中方案三:nvm default aliasnvm 用户,长期稳定⭐⭐⭐⭐低方案四:切换到 Volta频繁切换 Node.js 版本⭐⭐⭐中方案五:修复 PATHPATH 配置丢失⭐⭐⭐⭐低方案六:Homebrew 安装macOS 用户,npm 不稳定⭐⭐⭐⭐低根本原因与。

博客 1万+

云原生运维学习笔记:Docker 存储驱动原理、Compose 编排与图形化管理实战

本文深入解析Docker存储驱动原理,重点剖析overlay2的分层机制与底层目录结构。通过构建含sshd服务的镜像,实操验证了写时复制(COW)特性及各层依赖关系。结合docker info与container ps -s命令,直观展示容器可写层极小占用。进一步通过清空数据后导入镜像,揭示diff、lower、merged等核心文件的作用,揭示多层叠加与联合挂载机制。最终实现从单容器到多容器编排的运维升级,为后续使用Docker Compose与图形化管理奠定基础。

2604_96593683的博客 380

C语言试题四之计算并输出3到n之间所有素数的平方根之和

1、题目 请编写函数function,它的功能是:计算并输出3到n之间所有素数的平方根之和 例子:若我们main函数从键盘给n输入5之后,我们需要输出结果为3.968119 输入值n的要求:正整数n, 要求小于100。 2、部分函数说明 C 库函数 double sqrt(double x) 返回 x 的平方根 3、源代码实现 #include <stdio.h> #...

码莎拉蒂 7238

云原生运维学习笔记:Docker 镜像定制、仓库管理与企业级底层技术剖析

本文系统梳理Docker镜像定制、仓库管理与底层技术。通过Dockerfile实现白盒化镜像构建,掌握RUN、CMD、ENTRYPOINT等核心指令及格式差异;基于私有仓库(Registry/Harbor)实现安全分发;深入剖析Namespace与Cgroups在资源隔离与限制中的作用,为生产环境排障与优化提供底层支撑。

2604_96593683的博客 398

B3640 T3 句子反转

要求将这些单词倒序输出。而且对于每个单词,如果是小写词,应当转为大写;如果是大写词,应当转为小写;如果是自然数,应该倒转输出。给定一行句子,每个词之间用空格隔开,要么是全小写英文单词,要么是全大写英文单词,要么是自然数。第一次做的时候0分,两个小时没做出来。仅一行,表示程序对句子的处理结果。仅一行,即需要反转的句子。

小前日记 366

【YOLOs-CPP-图像分类部署】04-项目优化(加速部署)

本文详细介绍了将YOLO图像分类C++部署项目从CMake迁移到Visual Studio控制台应用的全过程。针对低配CPU性能瓶颈问题,作者通过替换多线程HPP代码为官方实现,并采用448x448固定输入尺寸优化推理速度。项目配置包含OpenCV和ONNX Runtime环境设置,实现了图像批量处理、分类结果显示及结果日志输出功能。关键步骤包括依赖库配置、DLL部署和代码调试,最终在Windows平台成功实现高效CPU推理。该方案显著提升了低配硬件的兼容性,为图像分类任务提供了稳定的部署解决方案。

深耕CV 355

云原生基础之Containerd容器运行时

本文介绍了云原生基础中的Containerd核心组件及其管理命令,涵盖镜像、容器、任务与命名空间的管理操作。通过ctr命令可实现镜像拉取、挂载、推送,容器创建与删除,任务启动、暂停及进程查看等。同时说明了Docker与Containerd的关系,指出Docker使用Containerd的moby命名空间,揭示了二者在容器技术栈中的协作机制。

我的梦想有多远,我就能走多远! 370

ESP32-CAM 赋能 AI 视觉巡检小车:自主避障与目标追踪实现全解析

本文基于 ESP32-CAM 实现了低成本 AI 视觉巡检小车的核心功能,硬件成本<100 元,兼顾自主避障与目标追踪。算法升级:移植 YOLOv5nano 量化模型(INT8),提升目标检测精度(如识别巡检场景中的 “异常物体”“人员”);无线拓展:通过 MQTT 协议将巡检图像、距离数据上传到阿里云 / 腾讯云,实现远程监控;多传感器融合:增加温湿度(DHT11)、红外测温(MLX90614)模块,扩展巡检维度;路径规划:结合 SLAM 算法,实现自主建图与路径巡检。

weixin_42300449的博客 368

一次完整的云原生迁移:容器化、Kubernetes 与 CI/CD

本文记录一次完整的云原生迁移实践,涵盖容器化、K8s部署与CI/CD流水线搭建。强调迁移前提:服务边界清晰、无状态、可回滚。分三阶段推进:容器化确保镜像一致性;上K8s实现服务发现与弹性伸缩;构建GitOps流水线支持一键发布与回滚。架构采用Ingress+API网关+Service+持久层,决策选用Kustomize管理配置,暂不引入服务网格。可观测性依托Loki、Prometheus与Jaeger三板斧。总结关键踩坑:镜像拉取策略误用、资源限制缺失、健康检查配置不当,并给出针对性解决方案,强调“先夯实基

软件工程师文艺 1076

使用STARTER V5.6软件将项目文件下载到S120驱动器控制单元CF卡中的具体方法演示

使用STARTER V5.6软件将项目文件下载到S120驱动器控制单元CF卡中的具体方法演示

Robot_PLC_HMI_Automation 1914

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

上一篇: Figma进阶-约束与自动布局的完美结合
下一篇: MyBatis+Spring整合避坑实录:为什么你的JDBC Connection总逃逸事务管理?(Druid配置详解)
php55
博客等级 码龄15年 51粉丝 1553原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值