我有一个舵图,可以使用内部数据库或外部数据库。这些值是互斥的。如果一个值是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
这样的单个值,可以将其设置为internal
或external
,但是由于requriements.yaml中的舵条件条件只能对布尔值执行逻辑,因此我认为这是不可能的。
dependencies:
- name: redis
version: 4.2.7
repository: https://kubernetes-charts.storage.googleapis.com
condition: redis.enabled,global.redis.enabled
答案 0 :(得分:2)
您可以使用一些Sprig模板魔术来强制配置键互斥。对于您的情况,可以将以下种类的块添加到任何图表的模板中。
{{- if .Values.redis.enabled }}
{{- if .Values.corvus.enabled }}
{{- fail "redis and corvus are mutually exclusive!" }}
{{- end }}
{{- end }}
当两个配置值都都设为true时,这将导致Chart安装失败。