From febbe102843a6d465b50ee543654596406b07151 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Fri, 23 Dec 2022 09:49:17 -0500 Subject: [PATCH] Default prometheusRules.rules should be an empty list Support for prometheus-operator was added in https://github.com/hashicorp/vault-helm/pull/772 and a default empty set of rules was defined as an empty map `{}`. However, as evidenced by the commented out rule examples below that very same values.yaml, this is expected to be a list, so `rules:` value should be set to an empty list `[]`. Because of this Helm issues a warning if you actually define rules and pass them with a --values : ``` coalesce.go:220: warning: cannot overwrite table with non table for vault.serverTelemetry.prometheusRules.rules (map[]) ``` Co-authored-by: Marc 'risson' Schmitt --- test/unit/prometheus-prometheusrules.bats | 14 +++++++------- values.schema.json | 19 +++++++++++++++++++ values.yaml | 2 +- 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/test/unit/prometheus-prometheusrules.bats b/test/unit/prometheus-prometheusrules.bats index 87736cfcb..efe4d250c 100755 --- a/test/unit/prometheus-prometheusrules.bats +++ b/test/unit/prometheus-prometheusrules.bats @@ -6,7 +6,7 @@ load _helpers cd `chart_dir` local actual=$( (helm template \ --show-only templates/prometheus-prometheusrules.yaml \ - --set 'serverTelemetry.prometheusRules.rules.foo=bar' \ + --set 'serverTelemetry.prometheusRules.rules[0].foo=bar' \ . || echo "---") | tee /dev/stderr | yq 'length > 0' | tee /dev/stderr) [ "${actual}" = "false" ] @@ -26,16 +26,16 @@ load _helpers local output=$( (helm template \ --show-only templates/prometheus-prometheusrules.yaml \ --set 'serverTelemetry.prometheusRules.enabled=true' \ - --set 'serverTelemetry.prometheusRules.rules.foo=bar' \ - --set 'serverTelemetry.prometheusRules.rules.baz=qux' \ + --set 'serverTelemetry.prometheusRules.rules[0].foo=bar' \ + --set 'serverTelemetry.prometheusRules.rules[1].baz=qux' \ .) | tee /dev/stderr ) [ "$(echo "$output" | yq -r '.spec.groups | length')" = "1" ] [ "$(echo "$output" | yq -r '.spec.groups[0] | length')" = "2" ] [ "$(echo "$output" | yq -r '.spec.groups[0].name')" = "release-name-vault" ] [ "$(echo "$output" | yq -r '.spec.groups[0].rules | length')" = "2" ] - [ "$(echo "$output" | yq -r '.spec.groups[0].rules.foo')" = "bar" ] - [ "$(echo "$output" | yq -r '.spec.groups[0].rules.baz')" = "qux" ] + [ "$(echo "$output" | yq -r '.spec.groups[0].rules[0].foo')" = "bar" ] + [ "$(echo "$output" | yq -r '.spec.groups[0].rules[1].baz')" = "qux" ] } @test "prometheus/PrometheusRules-server: assertSelectors default" { @@ -43,7 +43,7 @@ load _helpers local output=$( (helm template \ --show-only templates/prometheus-prometheusrules.yaml \ --set 'serverTelemetry.prometheusRules.enabled=true' \ - --set 'serverTelemetry.prometheusRules.rules.foo=bar' \ + --set 'serverTelemetry.prometheusRules.rules[0].foo=bar' \ . ) | tee /dev/stderr) [ "$(echo "$output" | yq -r '.metadata.labels | length')" = "5" ] @@ -55,7 +55,7 @@ load _helpers local output=$( (helm template \ --show-only templates/prometheus-prometheusrules.yaml \ --set 'serverTelemetry.prometheusRules.enabled=true' \ - --set 'serverTelemetry.prometheusRules.rules.foo=bar' \ + --set 'serverTelemetry.prometheusRules.rules[0].foo=bar' \ --set 'serverTelemetry.prometheusRules.selectors.baz=qux' \ --set 'serverTelemetry.prometheusRules.selectors.bar=foo' \ . ) | tee /dev/stderr) diff --git a/values.schema.json b/values.schema.json index 44980e169..9e8e3646d 100644 --- a/values.schema.json +++ b/values.schema.json @@ -1060,6 +1060,25 @@ } } }, + "serverTelemetry": { + "type": "object", + "properties": { + "prometheusRules": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "rules": { + "type": "array" + }, + "selectors": { + "type": "object" + } + } + } + } + }, "ui": { "type": "object", "properties": { diff --git a/values.yaml b/values.yaml index 9e35ac8bc..c2abda3a8 100644 --- a/values.yaml +++ b/values.yaml @@ -1198,7 +1198,7 @@ serverTelemetry: selectors: {} # Some example rules. - rules: {} + rules: [] # - alert: vault-HighResponseTime # annotations: # message: The response time of Vault is over 500ms on average over the last 5 minutes.