如何解决Helm指数。yaml虚拟存储库URL不匹配?

尼姆Bsoul
2022-12-25 36

Artifactory只支持的分辨率执掌图表虚拟舵图库.来解析Helm图表其他本地或远程Helm图表存储库,您需要将它们聚合到虚拟Helm图表存储库中。此后,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客户端与最近的添加:Helm回购更新
  5. 尝试通过虚拟仓库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 Helm chart for 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缓存.之后,运行Helm回购更新index.yaml将生成的文件将包含HTTPS条目而不是HTTP。

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

X-Artifactory-Override-Base-Url

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

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