我试着用terraform把容忍值传递给舵手。但我有不同的错误信息。
图表在这里的默认值。
...
tolerations:
[]
...我用这个密码。
locals {
victoria_tolerations = [{ "key" : "k8s-app", "operator" : "Equal", "value" : "grafana", "effect" : "NoSchedule" }]
}
resource "helm_release" "victoria_metrics" {
name = var.vm_release_name
chart = var.vm_chart
repository = var.vm_chart_repository_url
version = var.vm_chart_version
namespace = local.namespace_victoria
max_history = var.max_history
set {
name = "vmselect.tolerations"
value = jsonencode(local.victoria_tolerations)
}
}并得到了错误消息:
Error: failed parsing key "vmselect.tolerations" with value [{"effect":"NoSchedule","key":"k8s-app","operator":"Equal","value":"grafana"}], key "\"key\":\"k8s-app\"" has no value (cannot end with ,)如果我使用这个变量
victoria_tolerations = <<EOF
- key: k8s-app
operator: Equal
value: grafana
effect: NoSchedule
EOF我有个错误:
Error: unable to build kubernetes objects from release manifest: error validating "": error validating data: ValidationError(Deployment.spec.template.spec.tolerations): invalid type for io.k8s.api.core.v1.PodSpec.tolerations: got "string", expected "array"还有,我试着通过values考试。这在这种情况下行不通。
locals {
victoria_values = {
"tolerations" : [
{
"key" : "k8s-app",
"operator" : "Equal",
"value" : "grafana",
"effect" : "NoSchedule"
}
]
}
}resource "helm_release" "victoria_metrics" {
name = var.vm_release_name
...
values = [
yamlencode(local.victoria_values)
]
}发布于 2022-02-15 12:54:33
尝试动态块
dynamic "toleration" {
for_each = var.tolerations
content {
key = toleration.value["key"]
operator = toleration.value["operator"]
value = toleration.value["value"]
effect = toleration.value["effect"]
}
}var文件
variable "tolerations" {
type = list(map(string))
default = []
description = "Tolerations to apply to deployment"
}arg
tolerations = [
{
key = "node.kubernetes.io/role",
operator = "Equal",
value = "true",
effect = "NoSchedule"
}
]发布于 2022-02-15 15:52:56
可能但可能不那么优雅的解决办法是:
resource "helm_release" "victoria_metrics" {
name = var.vm_release_name
chart = var.vm_chart
repository = var.vm_chart_repository_url
version = var.vm_chart_version
namespace = local.namespace_victoria
max_history = var.max_history
dynamic "set" {
for_each = {
"rbac.create" = true
"vminsert.tolerations[0].key" = "k8s-app"
"vminsert.tolerations[0].value" = "grafana"
"vminsert.tolerations[0].operator" = "Equal"
"vminsert.tolerations[0].effect" = "NoSchedule"
"vmselect.tolerations[0].key" = "k8s-app"
"vmselect.tolerations[0].value" = "grafana"
"vmselect.tolerations[0].operator" = "Equal"
"vmselect.tolerations[0].effect" = "NoSchedule"
"vmstorage.tolerations[0].key" = "k8s-app"
"vmstorage.tolerations[0].value" = "grafana"
"vmstorage.tolerations[0].operator" = "Equal"
"vmstorage.tolerations[0].effect" = "NoSchedule"
}
content {
name = set.key
value = set.value
}
}
values = [
yamlencode(local.victoria_values)
]
}发布于 2022-08-10 23:14:07
类似于@Rostyslav的回答,但没有dynamic for_each循环。
resource "helm_release" "victoria_metrics" {
name = var.vm_release_name
chart = var.vm_chart
repository = var.vm_chart_repository_url
version = var.vm_chart_version
namespace = local.namespace_victoria
max_history = var.max_history
set {
name = "vmselect.tolerations[0].key"
value= "k8s-app"
}
set {
name = "vmselect.tolerations[0].value"
value= "grafana"
}
set {
name = "vmselect.tolerations[0].operator"
value= "Equal"
}
set {
name = "vmselect.tolerations[0].effect"
value= "NoSchedule"
}https://stackoverflow.com/questions/71126527
复制相似问题