Helm推送至JFrog Artifactory失败:无效仓库问题求助
问题根源与解决方案
问题出在两个核心点:
- OCI规范的大小写限制:OCI(开放容器倡议)要求仓库路径和制品名称必须为全小写字符,Helm 3.19.0严格遵循该规则,你的Chart名称
MY-chart包含大写字母,直接触发了无效引用报错。 - Chart包内部的名称校验:Helm推送时会读取Chart包内
Chart.yaml中的name字段,哪怕命令里写了小写,只要包内名称是大写,依然会触发校验失败。
解决步骤
1. 统一Chart名称为全小写
- 将Chart包文件名改为全小写:
MY-chart-1.0.0-oci.tgz→my-chart-1.0.0-oci.tgz - 解压Chart包,修改内部
Chart.yaml的name字段为全小写的my-chart,重新打包
2. 修正推送命令
两种可用的正确命令格式:
- 明确指定路径中的Chart名称(全小写):
helm push my-chart-1.0.0-oci.tgz oci://my-jfrog-artifactory/my-oci-helm/my-chart --username *** --password ***
- 让Helm自动从包内读取名称(前提是包内
Chart.yaml的name已改为全小写):
helm push my-chart-1.0.0-oci.tgz oci://my-jfrog-artifactory/my-oci-helm --username *** --password ***
3. 确认JFrog Artifactory仓库配置
- 确保你的仓库是**Helm (OCI)**类型:创建仓库时选择
Helm类型,勾选Enable OCI Support - 无需额外配置自动生成路径,只要命令符合OCI规范,Artifactory会自动创建对应的存储路径结构
4. 验证推送结果
推送成功后,可通过以下命令拉取验证:
helm pull oci://my-jfrog-artifactory/my-oci-helm/my-chart --version 1.0.0
补充说明
Helm 3.19.0对OCI规范的校验比旧版本更严格,这是为了和Docker等OCI生态工具对齐。你的JFrog Artifactory版本7.117.17完全支持Helm OCI推送,只要遵守大小写规则即可,不需要特殊配置自动生成路径。
内容的提问来源于stack exchange,提问作者Ceddaerrix
相关产品推荐
相关产品推荐

