如何解决赫尔姆指数。yaml虚拟仓库URL不匹配?

尼姆Bsoul
2021-08-10 09:29

Artifactory只支持的分辨率执掌图表虚拟赫尔姆海图库.解析Helm chart from其他本地或远程赫尔姆图存储库,您需要将它们聚合到一个虚拟赫尔姆图存储库。之后,Artifactory将生成一个index.yaml对于来自所有聚合存储库的包。

Artifactory中的Helm索引是通过将来自所有存储库类型的Helm包聚合到一个名为index.yaml.该文件包含每个包的元数据,这些元数据是为虚拟存储库生成的,它不会出现在Artifactory的UI中,而是保存在虚拟存储库缓存中。

此外,Artifactory替换了URL参数与Artifactory基URL如果配置好了,虚拟存储库将添加Helm客户端连接Artifactory的URL。

如果URL在索引中,上述机制可能会导致问题。每个包的yaml都不是Helm客户端可以索引的,你可能会遇到以下场景:

  1. Helm远程存储库配置了“https://cbc-charts.storage.googleapis.com请注意HTTPS协议。
  2. 创建一个虚拟存储库来聚合上面的远程存储库。
  3. 为Helm客户端添加一个Helm虚拟存储库:helm repo add helm-virtual https:///helm-virtual -username ***** -password *****
  4. 更新您的Helm客户端与最近的添加:舵手回购更新
  5. 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,因此会接收到错误。

你可以用以下两种方法来克服这种情况:

  1. 压倒一切的你的方式领导客户通过添加以下内容处理请求自定义基URLArtifactory:

https:// < ARTIFACTORY_URL > /

要做到这一点,在UI中导航到管理>一般>设置,并在自定义基础URL字段。

接下来,重新生成index.yaml从你的虚拟存储库缓存通过导航到UI树浏览器右击虚拟舵机仓库,并选择Zap缓存.然后,运行舵手回购更新index.yaml生成的文件将有HTTPS条目而不是HTTP。

  1. 添加以下内容向你的反向代理配置文件:

X-Artifactory-Override-Base-Url

这将覆盖请求通过代理到达Artifactory的方式。

之后,你就得这么做了重新加载您的反向代理,然后清除缓存通过导航到你的UI的树浏览器,右键单击虚拟头盔仓库,并选择Zap缓存如上所述。您现在需要运行舵手回购更新命令和索引。Yaml”文件应该正确生成。