首页 文章

具有相关值的头盔图

提问于
浏览
0

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

Is there a way to enforce mutual exclusivity so a user doesn't accidentally enable both?

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

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

Examaple使用外部数据库(corvus)

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

我考虑过不使用2个单独的值 redis.enabled corvus.enabled 而是使用像 database 这样的单个值,可以设置为 internalexternal ,但是因为requriements.yaml中的helm条件只能对布尔值执行逻辑,所以我不相信这个有可能 .

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

1 回答

  • 2

    您可以使用一些Sprig模板魔法来强制配置键互斥 . 对于您的情况,您可以将以下类型的块添加到任何Chart的模板中 .

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

    当两个配置值都被评估为true时,这将导致Chart安装失败 .

相关问题