容器镜像服务 托管 Helm Chart(新实例)

容器镜像服务 TCR 企业版支持托管 Helm Chart,满足用户对云原生应用制品的安全托管与高效分发需求。TCR 企业版基于 Harbor 2 内核,原生支持通过 OCI(Open Container Initiative)协议存储 Helm Chart,用户可通过 Helm 客户端实现 Chart 的推送、拉取及安装等操作。

相关产品
容器镜像服务 产品页,含版本规格、价格与购买入口。

注意:说明:

注意:TCR 服务已于近期完成底层架构的全面升级。自 2026年5月22日起创建的实例均为新架构实例,具体变更如下:

一、操作场景

Helm Chart 与容器镜像存储于同一命名空间下,共享实例内的访问控制、安全扫描、同步复制等能力。这篇说说如何使用 Helm 客户端通过 OCI 协议管理 TCR 企业版实例中的 Helm Chart。

二、前提条件

在执行 Helm Chart 的推送和管理操作前,你需完成以下准备工作:

·已成功 创建 TCR 企业版实例。

·已成功 创建命名空间。

·如使用子账号进行操作,请参考 子账号权限配置,提前为子账号授予对应实例的操作权限。

·已安装 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

五、步骤 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: 打包本地 Charthelm package ./my-chart# Step 3: 推送 Chart 至 TCRhelm push my-chart-1.0.0.tgz oci://your-instance.tencentcloudcr.com/my-namespace# Step 4: 拉取 Charthelm pull oci://your-instance.tencentcloudcr.com/my-namespace/my-chart –version 1.0.0# Step 5: 安装 Charthelm 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 repositoryor 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 push 或 helm pull 时,提示不支持 oci:// 协议。

解决方案:

·Helm 3.8+:原生支持 OCI 协议,无需额外配置。

·Helm 3.7 及以下:需设置环境变量以启用实验性 OCI 支持:

export HELM_EXPERIMENTAL_OCI=1

建议将 Helm 升级至 3.8 及以上版本,以获得完整的 OCI 支持能力。

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

问题现象:

推送 Chart 时返回错误,提示项目或命名空间不存在。

解决方案:

推送前需确保 TCR 实例中已创建对应的命名空间(Namespace)。可通过以下步骤创建:

1. 登录 容器镜像服务控制台。

2. 选择目标实例,进入命名空间管理页面。

3. 单击新建,创建所需的命名空间。

赞 (0)
上一篇 4天前
下一篇 4天前