在helm中选择备用依赖项

问题描述 投票:0回答:1

我有一个需要某种数据库的应用程序的头盔图。 mysql或postgresql都没关系。

我想给图表用户提供安装其中一个作为依赖的选项,如下所示:

dependencies:
- name: mysql
  version: 0.10.2
  repository: https://kubernetes-charts.storage.googleapis.com/
  condition: mysql.enabled
- name: postgresql
  version: 3.11.5
  repository: https://kubernetes-charts.storage.googleapis.com/
  condition: postgresql.enabled

然而,这使得可以启用它们。

有没有一种简单的方法可以确保只选择一个?

我在考虑选择一个[mysql, postgres, manual]的单个变量,如果选择了,则依赖于特定的数据库。 - 有办法吗?

kubernetes kubernetes-helm
1个回答
1
投票

我认为没有一种直接的方法可以做到这一点。特别是,它看起来像requirements.yaml condition:字段只采用布尔值(或它们的列表)而不是任意表达式。来自the Helm documentation

条件字段包含一个或多个YAML路径(以逗号分隔)。如果此路径存在于顶部父级的值中并解析为布尔值,则将根据该布尔值启用或禁用该图表。仅评估列表中找到的第一个有效路径,如果不存在路径,则该条件无效。

(下面描述的标签机制非常相似,并没有真正帮助。)

当实际编写部署规范时,您有一个更正常的条件系统,并且可以测试只设置了其中一个值;所以我认为你不能阻止安装冗余数据库,但你至少只能使用其中一个。您还可以在NOTES.txt文件中对此效果发出事后警告。

{{ if and .Values.mysql.enabled .Values.postgresql.enabled -}}
WARNING: you have multiple databases enabled in your Helm values file.
Both MySQL and PostgreSQL are installed as part of this chart, but only
PostgreSQL is being used.  You can update this chart installation setting
`--set mysql.enabled=false` to remove the redundant database.

{{ end -}}
© www.soinside.com 2019 - 2024. All rights reserved.