自定义头盔图表需要另一个稳定/图表

时间:2019-09-19 09:42:21

标签: kubernetes kubernetes-helm

我创建了一个图表,该图表需要来自stable/charts的头盔图表,比方说mongodb。尽管您可以定义requirements.yaml文件,但我想知道是否可以在此处定义图表?

此外,为了使事情变得容易(不是),我还需要替换mongodb图表的一些值。不知道我是否要在此限制很多:)它看起来像子图表关系,所以听起来可能。

我现在正在使用的替代方法是先安装马stable /图表,然后安装我的自定义图表。但是,只要将这种依赖性添加到我的自定义图表中,就可以将其减少为一个helm命令,那将是一个改进。

更新

我将用我的发现更新这篇文章,并希望这最终会导致解决方案:)到目前为止,requirements.yaml

dependencies:
  - name: "mongodb"
    version: "4.x.x"
    repository: "@stable"
    import-values:
      - child: default.data
        parent: myimports

目前还不确定如何使用import-values自定义mongodb,但目前我仍然遇到以下错误

Error: found in requirements.yaml, but missing in charts/ directory: mongodb

而且,因为我使用的是stable,所以我不确定如何处理version字段

有用的链接:linklink

3 个答案:

答案 0 :(得分:2)

自头盔2.2.0版起,您可以将mongodb图表存储在同一目录中,并在您的requirements.yaml文件中将其引用为:

dependencies:

- name: mongodb
  version: "<the_mongo_chart_version>"
  repository: "file://../mongodb"

这样一来,您就可以使用值并通过1个helm命令部署整个对象。

有关更多信息,请参阅

https://github.com/helm/helm/blob/master/docs/helm/helm_dependency.md

答案 1 :(得分:1)

不幸的是,这还不足以将依赖关系图添加到您的requirements.yaml文件中。

此外,图表本人应实际位于Charts目录中。这是一个头盔限制。

如果您同意在回购中管理第三方图表(应该很简单),那么您就可以通过一个helm命令安装所有第三方图表,并按照here的说明更改子图表值。

我有一个示例elasticsearch和kibana安装作为一个图表:In my test repo。请查阅。我希望这个例子可以帮助您解决问题。

答案 2 :(得分:0)

在您自己的仓库中处理第三者图表可能是微不足道的解决方案,因为您需要一个helm命令来运行它,但这会使维护变得更加麻烦。

我将先定义Helm依赖项,然后像运行其他任何软件包管理系统一样,运行一个小的脚本来下载它们,您可以按照以下步骤进行操作:

定义

requirements.yaml

dependencies:
- name: "mongodb"
 version: "7.8.10" <--- Pay attention this refers to the chart's version and not the app version [see link 1]
    repository: "@stable"

1。 https://github.com/helm/charts/blob/master/stable/mongodb/Chart.yaml#L3

安装

运行用于创建图表文件夹并在requirements.yaml

中获取图表的shell脚本

install.sh

helm dependencies list
helm dependencies update
helm install --name my-chart . 

将值传递到子图

如果要更改子图表的值,则需要遵循与图表的值路径完全相同的路径(在本示例中为ingress.enabled),并添加顶级图表名称。

请注意!这必须与requirements.yaml中提到的图表名称完全匹配!

有两种方法可以设置这些值:

使用命令行: helm install --name my-chart . --set mongodb.ingress.enabled=true 或在您自己的values.yaml

mongodb:
  ingress:
    enabled: "true"