首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Terraform头盔图表设定值公差

Terraform头盔图表设定值公差
EN

Stack Overflow用户
提问于 2022-02-15 12:34:55
回答 3查看 2.1K关注 0票数 3

我试着用terraform把容忍值传递给舵手。但我有不同的错误信息。

图表在这里的默认值。

代码语言:javascript
复制
...
  tolerations:
    []
...

我用这个密码。

代码语言:javascript
复制
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)
  }
}

并得到了错误消息:

代码语言:javascript
复制
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 ,)

如果我使用这个变量

代码语言:javascript
复制
victoria_tolerations = <<EOF
      - key: k8s-app
        operator: Equal
        value: grafana
        effect: NoSchedule
    EOF

我有个错误:

代码语言:javascript
复制
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考试。这在这种情况下行不通。

代码语言:javascript
复制
locals {
  victoria_values = {
    "tolerations" : [
      {
        "key" : "k8s-app",
        "operator" : "Equal",
        "value" : "grafana",
        "effect" : "NoSchedule"
      }
    ]
  }
}
代码语言:javascript
复制
resource "helm_release" "victoria_metrics" {
  name        = var.vm_release_name
  ...
  values = [
    yamlencode(local.victoria_values)
  ]
}
EN

回答 3

Stack Overflow用户

发布于 2022-02-15 12:54:33

尝试动态

代码语言:javascript
复制
dynamic "toleration" {
            for_each = var.tolerations
            content {
              key      = toleration.value["key"]
              operator = toleration.value["operator"]
              value    = toleration.value["value"]
              effect   = toleration.value["effect"]
            }
          }

var文件

代码语言:javascript
复制
variable "tolerations" {
  type        = list(map(string))
  default     = []
  description = "Tolerations to apply to deployment"
}

arg

代码语言:javascript
复制
tolerations = [
    {
      key      = "node.kubernetes.io/role",
      operator = "Equal",
      value    = "true",
      effect   = "NoSchedule"
    }
  ]
票数 3
EN

Stack Overflow用户

发布于 2022-02-15 15:52:56

可能但可能不那么优雅的解决办法是:

代码语言:javascript
复制
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)
  ]

}
票数 1
EN

Stack Overflow用户

发布于 2022-08-10 23:14:07

类似于@Rostyslav的回答,但没有dynamic for_each循环。

代码语言:javascript
复制
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"
  }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71126527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档