Helm有没有办法在兄弟图表中分享价值观



我有一个简单的图表结构:

chart1
-templates
-deployment.yaml
-configmap.yaml
-service.yaml
chart2
-templates
-deployment.yaml
-configmap.yaml
-service.yaml
redis
-templates
-deployment.yaml
-service.yaml

现在chart2依赖于redis并且需要它来运行。chart1依赖于redis和chart2。(基本上,它们都是使用redis存储信息的服务,chart1向chart2发送请求(。

当我安装chart2时,一切都很好,但如果我安装chart1,它会尝试安装它的redis和作为chart2子部分的redis(这是同一个redis(。

因此,为了防止这种冲突,我使用了一个标记来阻止安装第二个redis,因此通过安装chart1,我还安装了chart2和一个redis实例。

问题是,chart2需要知道redis服务的名称(假设它可以随安装动态创建(,而我无法从chart2访问它。

我使用模板";redis.fullname";以命名redis的所有资源。chart1可以访问这个模板,因为redis是它安装时的子部分(使用.Subcharts.redis(,但在这个例子中它不是chart2的子部分,所以chart2不能访问";redis.fullname";因此不能在其配置映射中使用正确的服务名称。

我希望我在描述这个问题时讲得有道理。有什么解决办法吗?

如果您可以控制图表中的代码,则可以使用全局值:https://helm.sh/docs/chart_template_guide/subcharts_and_globals/

最新更新