Artifactory 5.8.3 OSS版本地Helm仓库无法生成index.yaml求助
排查Artifactory 5.8.3 OSS作为Helm仓库的索引问题
我之前也踩过Artifactory老版本做Helm仓库的坑,结合你的情况给你梳理下排查步骤:
1. 先确认本地Helm仓库的基础配置
- 首先得确保你创建本地仓库时,Package Type确实选的是Helm,别不小心选成Generic或者其他类型了——这个基础配置错了后面全白搭。
- 还有个容易忽略的点:你的本地Helm仓库里有没有上传过Helm chart包?
index.yaml是基于仓库里已有的chart生成的,如果仓库是空的,哪怕点一百次Recalculate Index也不会生成索引文件!
2. 手动触发索引生成的正确姿势
Artifactory 5.x版本的索引生成有时候需要等一等,别太着急:
- 进入本地Helm仓库的Admin标签页,找到
Recalculate Index按钮,点击后耐心等个几分钟(看你服务器的资源情况),然后去仓库的Browse页面根目录看看有没有index.yaml。 - 如果还是没生成,去查Artifactory的日志找线索:
先进入容器:
搜索docker exec -it <你的artifactory容器ID> tail -f var/log/artifactory/artifactory.loghelm或者index关键词,看看有没有权限报错、索引生成失败的日志信息。
3. 虚拟仓库的配置注意事项
你创建虚拟Helm仓库并添加本地仓库作为成员时,要注意这几点:
- 虚拟仓库的
Package Type也必须是Helm,并且在Repositories标签页里,把你的本地Helm仓库移到Selected Repositories列表里,不然虚拟仓库不会去读本地仓库的内容。 - 虚拟仓库的
Index Type要设为Merge(默认应该就是这个),这样才会合并成员仓库的索引内容。
4. Helm客户端添加仓库的常见坑(提前给你列几个大概率碰到的)
结合你没说完的描述,估计你用Helm客户端加仓库时可能会碰到找不到索引的问题,常见原因有这些:
- 仓库URL是否正确?虚拟仓库的访问URL应该是
http://<你的Artifactory地址>/artifactory/api/helm/<虚拟仓库名>,别直接指向本地仓库的路径。 - 有没有开启Artifactory的匿名访问?如果没开,Helm客户端需要带认证信息:
helm repo add my-helm-repo http://<你的Artifactory地址>/artifactory/api/helm/<虚拟仓库名> --username=<Artifactory用户名> --password=<Artifactory密码> - 版本兼容性问题:Artifactory 5.8.3只支持Helm 2.x版本,如果你用的是Helm 3.x,大概率会有兼容性问题,建议先换Helm 2.x测试看看。
另外补充个小技巧:如果一直没生成索引,你可以先手动上传一个测试chart到本地仓库试试,比如先自己用helm package生成一个测试包,然后用curl上传:
curl -u <用户名>:<密码> -X PUT http://<你的Artifactory地址>/artifactory/<本地Helm仓库名>/test-chart-0.1.0.tgz -T test-chart-0.1.0.tgz
上传完成后再点Recalculate Index,一般这时候就能生成index.yaml了。
内容的提问来源于stack exchange,提问作者Kuan
相关产品推荐
相关产品推荐

