带相关值的头盔图

时间:2018-11-27 21:14:04

标签: kubernetes-helm

我有一个舵图,可以使用内部数据库或外部数据库。这些值是互斥的。如果一个值是true,则另一个值应该是false。

有没有一种方法可以强制相互排斥,从而使用户不会意外启用两者?

使用内置数据库(redis)的示例

helm install foo --set redis.enabled=true --set corvus.enabled=false

例如使用外部数据库(乌鸦座)

helm install foo --set redis.enabled=false --set corvus.enabled=true --set corvus.location=foobar

我考虑过不使用2个单独的值redis.enabled corvus.enabled,而是使用像database这样的单个值,可以将其设置为internalexternal ,但是由于requriements.yaml中的舵条件条件只能对布尔值执行逻辑,因此我认为这是不可能的。

dependencies:
  - name: redis
    version: 4.2.7
    repository: https://kubernetes-charts.storage.googleapis.com
    condition: redis.enabled,global.redis.enabled

1 个答案:

答案 0 :(得分:2)

您可以使用一些Sprig模板魔术来强制配置键互斥。对于您的情况,可以将以下种类的块添加到任何图表的模板中。

{{- if .Values.redis.enabled }}
{{- if .Values.corvus.enabled }}
{{- fail "redis and corvus are mutually exclusive!" }}
{{- end }}
{{- end }}

当两个配置值都都设为true时,这将导致Chart安装失败。