I have a helm_release like this:
resource "helm_release" "prometheus" {
name = "prometheus"
namespace = kubernetes_namespace.prometheus.metadata[0].name
wait = true
repository = "https://kubernetes-charts.storage.googleapis.com/"
chart = "prometheus"
version = var.prometheus_chart_version
dynamic "set" {
for_each = var.volumes
content {
name = "${set.key}.persistentVolume.enabled"
value = "true"
}
}
dynamic "set" {
for_each = var.volumes
content {
name = "${set.key}.persistentVolume.existingClaim"
value = kubernetes_persistent_volume_claim.volumeclaims[set.key].metadata[0].name
}
}
set {
name = "server.ingress.enabled"
value = "true"
}
set {
name = "server.ingress.hosts"
value = "{prometheus.example.net/*}"
}
dynamic "set" {
for_each = local.ingress_annotations
content {
name = "server.ingress.annotations.${replace(set.key,".", "\\.")}"
value = set.value
type = "string"
}
}
dynamic "set" {
for_each = [ "server", "alertmanager", "pushgateway" ]
content {
name = "${set.value}.service.annotations.external-dns\\.alpha\\.kubernetes\\.io/hostname"
value = "prometheus-${set.value}.example.net."
}
}
}
When I do terraform plan it will report that more or less every set {} block has been deleted and added again like this:
- set {
- name = "server.ingress.enabled" -> null
- value = "true" -> null
}
+ set {
+ name = "server.ingress.enabled"
+ value = "true"
}
There are many set {...} blocks and having to look at each of them event when they didn’t actually changed seems silly. Is there anything I can do so that terraform recognizes that there are indeed the same set {...} block?