托管 Helm Chart(新实例)

最近更新时间:2026-06-11 16:50:00

我的收藏
说明:
TCR 服务已于近期完成底层架构的全面升级。自 2026年5月22日​起创建的实例均为新架构实例,具体变更如下:
可用性提升:新实例支持在制品清理周期内持续接收镜像推送,消除运维窗口期的业务阻断风险。
AI 能力增强:上线 AI Skill 存储与 AI 制品存储两大新特性。该功能目前处于灰度期,采用白名单机制,如需使用请 提交工单 申请开通。
Helm 交互调整:新实例对 Helm Chart 的底层存储格式进行了重构。为确保兼容性,请统一使用 Helm 客户端命令行进行 Chart 推送操作。

操作场景

容器镜像服务 TCR 企业版支持托管 Helm Chart,满足用户对云原生应用制品的安全托管与高效分发需求。TCR 企业版基于 Harbor 2 内核,原生支持通过 OCI(Open Container Initiative)协议存储 Helm Chart,用户可通过 Helm 客户端实现 Chart 的推送、拉取及安装等操作。
Helm Chart 与容器镜像存储于同一命名空间下,共享实例内的访问控制、安全扫描、同步复制等能力。本文介绍如何使用 Helm 客户端通过 OCI 协议管理 TCR 企业版实例中的 Helm Chart。

前提条件

在执行 Helm Chart 的推送和管理操作前,您需完成以下准备工作:
已成功 创建命名空间
如使用子账号进行操作,请参考 子账号权限配置,提前为子账号授予对应实例的操作权限。
已安装 Helm 客户端,且版本要求 3.8.0 及以上(原生支持 OCI 协议,无需额外配置)。如使用 Helm 3.7 及以下版本,需通过设置环境变量 export HELM_EXPERIMENTAL_OCI=1 启用实验性 OCI 支持。

操作步骤

步骤 1:登录 TCR 实例

使用 helm registry login 命令登录 TCR 实例:
helm registry login <实例域名> --username <用户名> --password <密码>
参数说明:
参数
说明
<实例域名>
TCR 实例的访问域名,例如 your-instance.tencentcloudcr.com
<用户名>
登录用户名,详见下方 认证方式 说明。
<密码>
登录密码或 Token,详见下方 认证方式 说明。
认证方式:
认证方式
用户名格式
密码 / Token
长期访问凭证(推荐)
主账号 UIN 或 Token 用户名
实例访问凭证(Token)
临时访问凭证
主账号 UIN
临时密码(有效期 1 小时)
服务账号
ServiceAccount 用户名
ServiceAccount 密码
说明
推荐使用长期访问凭证(Registry Token)。您可在 TCR 控制台 > 实例管理 > 访问凭证中创建长期访问凭证,并获取对应的用户名和 Token。示例:
helm registry login your-instance.tencentcloudcr.com \\
--username 100987654321 \\
--password <your-token>

步骤 2:推送 Helm Chart

1. 在本地打包 Helm Chart:
helm package ./my-chart
执行成功后,将在当前目录生成 Chart 压缩包,例如 my-chart-1.0.0.tgz
2. 将 Chart 推送至 TCR 实例的指定命名空间:
helm push my-chart-1.0.0.tgz oci://<实例域名>/<命名空间>
示例:
helm push my-chart-1.0.0.tgz oci://your-instance.tencentcloudcr.com/my-namespace
注意:
推送前请确保目标命名空间已在 TCR 实例中创建。
Chart 包文件名中的版本号将作为 Chart 的版本标识。

步骤 3:拉取 Helm Chart

从 TCR 实例拉取指定版本的 Helm Chart:
helm pull oci://<实例域名>/<命名空间>/<chart名称> --version <版本号>
示例:
helm pull oci://your-instance.tencentcloudcr.com/my-namespace/my-chart --version 1.0.0

步骤 4:安装 Helm Chart

直接从 TCR 实例将 Helm Chart 安装至 Kubernetes 集群:
helm install <release名称> oci://<实例域名>/<命名空间>/<chart名称> --version <版本号>
示例:
helm install my-release oci://your-instance.tencentcloudcr.com/my-namespace/my-chart --version 1.0.0

完整操作示例

以下为从登录到安装的完整操作流程:
# Step 1: 登录 TCR 实例
helm registry login your-instance.tencentcloudcr.com --username 100987654321 --password <your-token>

# Step 2: 打包本地 Chart
helm package ./my-chart

# Step 3: 推送 Chart 至 TCR
helm push my-chart-1.0.0.tgz oci://your-instance.tencentcloudcr.com/my-namespace

# Step 4: 拉取 Chart
helm pull oci://your-instance.tencentcloudcr.com/my-namespace/my-chart --version 1.0.0

# Step 5: 安装 Chart
helm install my-release oci://your-instance.tencentcloudcr.com/my-namespace/my-chart --version 1.0.0

常见问题

helm repo add 返回 404 Not Found

问题现象:
Error: looks like "https://your-instance.tencentcloudcr.com/chartrepo/my-namespace" is not a valid chart repository
or cannot be reached: failed to fetch https://your-instance.tencentcloudcr.com/chartrepo/my-namespace/index.yaml : 404 Not Found
原因分析:
Harbor 2 实例默认不启用 ChartMuseum 组件,因此 /chartrepo/<namespace>/index.yaml 路径会返回 404。
解决方案:
请切换至 OCI 方式操作 Helm Chart:
# 登录
helm registry login your-instance.tencentcloudcr.com --username <用户名> --password <密码>

# 推送
helm push my-chart-1.0.0.tgz oci://your-instance.tencentcloudcr.com/<命名空间>

# 拉取
helm pull oci://your-instance.tencentcloudcr.com/<命名空间>/<chart名称> --version <版本号>

# 安装
helm install <release名称> oci://your-instance.tencentcloudcr.com/<命名空间>/<chart名称> --version <版本号>

Helm 版本不支持 OCI 协议

问题现象:
执行 helm pushhelm pull 时,提示不支持 oci:// 协议。
解决方案:
Helm 3.8+:原生支持 OCI 协议,无需额外配置。
Helm 3.7 及以下:需设置环境变量以启用实验性 OCI 支持:
export HELM_EXPERIMENTAL_OCI=1
建议将 Helm 升级至 3.8 及以上版本,以获得完整的 OCI 支持能力。

推送时提示命名空间不存在

问题现象:
推送 Chart 时返回错误,提示项目或命名空间不存在。
解决方案:
推送前需确保 TCR 实例中已创建对应的命名空间(Namespace)。可通过以下步骤创建:
2. 选择目标实例,进入命名空间管理页面。
3. 单击新建,创建所需的命名空间。