Terraform - 范围无法迭代参数

问题描述 投票:0回答:1

我尝试为EKS安装metric-server的helm图表:

resource "helm_release" "metrics-server" {
  name = "metrics-server"

  repository = "https://kubernetes-sigs.github.io/metrics-server/"
  chart      = "metrics-server"
  namespace  = "kube-system"
  version    = "3.10.0"

  set {
    name  = "metrics.enabled"
    value = false
  }
  set {
    name = "args"
    value = "--kubelet-insecure-tls"
  }
}

并且在

terraform apply
之后出现此错误:

│ Error: template: metrics-server/templates/deployment.yaml:59:27: executing "metrics-server/templates/deployment.yaml" at <.Values.args>: range can't iterate over --kubelet-insecure-tls
│ 
│   with helm_release.metrics-server,
│   on alb-controller.tf line 72, in resource "helm_release" "metrics-server":
│   72: resource "helm_release" "metrics-server" {

有没有办法通过 terraform 传递这个参数?

谢谢

terraform kubernetes-helm
1个回答
0
投票

此错误实际上是由 Helm 内的 Sprig 引发的,而不是由 Terraform 引发的,并且与 Helm 使用有关。这是因为 Helm 图表需要

list
类型的值,而传递的是
string
类型的值。但是,Terraform Helm 提供程序需要值的
string
类型,因此我们必须传递
string
,Helm 和 Sprig 将将其解释为
list
。更新用法以将类型
list
传递给 Helm:

set {
  name = "args"
  value = "['--kubelet-insecure-tls']"
}

顺便说一句,从错误消息来看,这似乎不太清楚,但错误消息的关键部分:

<.Values.args>:范围不能迭代...

强烈暗示(

range
函数,
Values
)当输入后渲染 Helm 图表时,Sprig 模板引擎需要
list
类型。

© www.soinside.com 2019 - 2024. All rights reserved.