如何解决赫尔姆指数。yaml虚拟仓库URL不匹配?
Artifactory只支持的分辨率执掌图表从虚拟赫尔姆海图库.解析Helm chart from其他本地或远程赫尔姆图存储库,您需要将它们聚合到一个虚拟赫尔姆图存储库。之后,Artifactory将生成一个index.yaml对于来自所有聚合存储库的包。
Artifactory中的Helm索引是通过将来自所有存储库类型的Helm包聚合到一个名为index.yaml.该文件包含每个包的元数据,这些元数据是为虚拟存储库生成的,它不会出现在Artifactory的UI中,而是保存在虚拟存储库缓存中。
此外,Artifactory替换了URL参数与Artifactory基URL如果配置好了,虚拟存储库将添加Helm客户端连接Artifactory的URL。
如果URL在索引中,上述机制可能会导致问题。每个包的yaml都不是Helm客户端可以索引的,你可能会遇到以下场景:
- Helm远程存储库配置了“https://cbc-charts.storage.googleapis.com请注意HTTPS协议。
- 创建一个虚拟存储库来聚合上面的远程存储库。
- 为Helm客户端添加一个Helm虚拟存储库:helm repo add helm-virtual https://
/helm-virtual -username ***** -password ***** - 更新您的Helm客户端与最近的添加:舵手回购更新
- Try to fetch a Helm package through the virtual repository Helm fetch Helm -virtual/< Helm -package-name>Error: Failed to fetch https://
/ Helm -virtual/< Helm -package-name-0.0.0.tgz>: 401 Unauthorized .输出说明
出现上述错误(401 Unauthorized)是因为index.yaml通过虚拟存储库返回到Helm客户端,由于请求通过HTTP到达Artifactory(可能是由于Nginx配置从HTTPS到HTTP的终止),并且Artifactory中没有配置Base URL,那么索引。返回的Yaml将包括以下内容:
—apiVersion: v1
appVersion: 0.0.0
创建:2017 - 09 - 04 - t20:33:57.58469666z
描述:CoreOS zetcd舵图为Kubernetes
文摘:5 eb700d49146fa6b070c2fdb9ce2f85f1e3071adee2368d5cdcc05cde5b5e4b7
家:https://github.com/ <源> / <名称>
维护人员:
—name: < name >
名称:<名称>
来源:
——https://github.com/ <源> / <名称>
网址:
——https:// < ARTIFACTORY_URL > / helm-virtual / < helm-package-name-0.0.0.tgz >
版本:0.1.0
用索引。由于Helm客户端所期望的聚合机制,上面的yaml包含了使用HTTP而不是HTTPS的URL,因此会接收到错误。
你可以用以下两种方法来克服这种情况:
- 压倒一切的你的方式领导客户通过添加以下内容处理请求自定义基URLArtifactory:
https:// < ARTIFACTORY_URL > /
要做到这一点,在UI中导航到管理>一般>设置,并在自定义基础URL字段。
接下来,重新生成index.yaml从你的虚拟存储库缓存通过导航到UI树浏览器,右击在虚拟舵机仓库,并选择Zap缓存.然后,运行舵手回购更新和index.yaml生成的文件将有HTTPS条目而不是HTTP。
- 添加以下内容头向你的反向代理配置文件:
X-Artifactory-Override-Base-Url
这将覆盖请求通过代理到达Artifactory的方式。
