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

尼姆Bsoul
2021-08-10 09:29

Artifactory只支持的分辨率执掌图表虚拟赫尔姆图存储库.解析舵图其他本地或远程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包Helm fetch Helm -virtual/< Helm -package-name>错误: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
用于Kubernetes的CoreOS zetcd Helm chart
文摘: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客户端期望的聚合机制,所以上面的URL使用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的树浏览器,右键单击虚拟helm存储库,并选择Zap缓存如上所述。现在您需要运行'Helm回购更新命令和“索引”。应该正确生成Yaml”文件。