指定本地 helm 依赖
Specifying local helm dependency
我正在尝试使用 bitnami helm chart 添加 rabbitmq 服务。该图表包含一个依赖的掌舵图,称为 common。
整个应用程序本身是使用父 helm chart 部署的,每个服务都有自己独立的 helm chart。
Helm 图表结构如下所示-
\myapp
\charts
\service1
\service2
\service3
\messaging
\charts
\common
\templates
\chart.yml
\values.yml
当我从 'messaging' 目录 运行“helm 依赖更新”时,它下载了一个通用的 1.x.x.tgz 文件。我提取了内容并将其放在 \messaging\charts\common 文件夹中
原始 messaging\templates\chart.yml(rabbitmq helm 图表)包含以下条目
dependencies:
- name: common
repository: https://charts.bitnami.com/bitnami
tags:
- bitnami-common
version: 1.x.x
因为我无法在“Helm 安装”执行期间下载,所以我必须事先下载相关的 helm 图表并将它们保存为本地依赖项。下载 common.tgz 文件后,我提取了内容并更新了 messaging\templates\chart.yml 中的依赖项,如下所示
dependencies:
- name: common
repository: 'file://charts/messaging/charts/common'
tags:
- bitnami-common
version: 1.x.x
如果我执行“helm install messaging”。从 \myapp\charts\messaging 目录,服务部署没有任何错误。但是当部署应用程序的父掌舵图时,我总是会收到此错误
"Error: found in Chart.yaml, but missing in charts/ directory: messaging"
有人可以指出配置中的错误吗?我在多个位置移动了公共文件夹的内容,将它们作为 tgz 文件,更新了相对于消息传递目录而不是父 helm 图表位置的存储库路径,但在所有情况下,消息传递服务的安装都因上述原因而失败错误
您不需要解压 charts/*.tgz
文件。如果它们在该目录中(并且仍然打包),那么 Helm 将使用它们来 运行 部署。 Helm 不会自行联系外部图表存储库,只有当您 运行 helm dependency
命令时才会联系。
在你 运行 helm dep up
之后你的文件系统布局应该看起来像
myapp
\-- charts
\-- messaging
+-- charts
| \-- rabbitmq-8.15.3.tgz
|-- templates
| +-- deployment.yaml
| \-- service.yaml
+-- Chart.yaml
\-- values.yaml
您可以在这种状态下出发了。不要打开任何东西。
如果您需要跨网络复制此设置,请在执行此操作时包含 charts/*.tgz
文件。 Chart.yaml
或 requirements.yaml
引用 Internet 位置并不重要; helm install
将只使用那些本地存档。
我遇到了类似的问题,这是因为开发人员将图表和模板等放置在图表目录中。我不断收到错误消息,说它找不到目录,因此将所有图表移动到 helm-charts 目录中,而不是因为图表目录由 Helm 管理。当我更新存储库列表以从新目录中提取时,我的问题就解决了。我从这个问题的评论中得到了这个想法并且它起作用了。 https://github.com/helm/helm/issues/2887
我正在尝试使用 bitnami helm chart 添加 rabbitmq 服务。该图表包含一个依赖的掌舵图,称为 common。 整个应用程序本身是使用父 helm chart 部署的,每个服务都有自己独立的 helm chart。 Helm 图表结构如下所示-
\myapp
\charts
\service1
\service2
\service3
\messaging
\charts
\common
\templates
\chart.yml
\values.yml
当我从 'messaging' 目录 运行“helm 依赖更新”时,它下载了一个通用的 1.x.x.tgz 文件。我提取了内容并将其放在 \messaging\charts\common 文件夹中 原始 messaging\templates\chart.yml(rabbitmq helm 图表)包含以下条目
dependencies:
- name: common
repository: https://charts.bitnami.com/bitnami
tags:
- bitnami-common
version: 1.x.x
因为我无法在“Helm 安装”执行期间下载,所以我必须事先下载相关的 helm 图表并将它们保存为本地依赖项。下载 common.tgz 文件后,我提取了内容并更新了 messaging\templates\chart.yml 中的依赖项,如下所示
dependencies:
- name: common
repository: 'file://charts/messaging/charts/common'
tags:
- bitnami-common
version: 1.x.x
如果我执行“helm install messaging”。从 \myapp\charts\messaging 目录,服务部署没有任何错误。但是当部署应用程序的父掌舵图时,我总是会收到此错误
"Error: found in Chart.yaml, but missing in charts/ directory: messaging"
有人可以指出配置中的错误吗?我在多个位置移动了公共文件夹的内容,将它们作为 tgz 文件,更新了相对于消息传递目录而不是父 helm 图表位置的存储库路径,但在所有情况下,消息传递服务的安装都因上述原因而失败错误
您不需要解压 charts/*.tgz
文件。如果它们在该目录中(并且仍然打包),那么 Helm 将使用它们来 运行 部署。 Helm 不会自行联系外部图表存储库,只有当您 运行 helm dependency
命令时才会联系。
在你 运行 helm dep up
之后你的文件系统布局应该看起来像
myapp
\-- charts
\-- messaging
+-- charts
| \-- rabbitmq-8.15.3.tgz
|-- templates
| +-- deployment.yaml
| \-- service.yaml
+-- Chart.yaml
\-- values.yaml
您可以在这种状态下出发了。不要打开任何东西。
如果您需要跨网络复制此设置,请在执行此操作时包含 charts/*.tgz
文件。 Chart.yaml
或 requirements.yaml
引用 Internet 位置并不重要; helm install
将只使用那些本地存档。
我遇到了类似的问题,这是因为开发人员将图表和模板等放置在图表目录中。我不断收到错误消息,说它找不到目录,因此将所有图表移动到 helm-charts 目录中,而不是因为图表目录由 Helm 管理。当我更新存储库列表以从新目录中提取时,我的问题就解决了。我从这个问题的评论中得到了这个想法并且它起作用了。 https://github.com/helm/helm/issues/2887