【问题标题】:Terraform Unsupported block error for selector in kubernetes_service resource在 kubernetes_service 资源中选择器的 Terraform 不支持块错误
【发布时间】:2019-11-03 21:46:48
【问题描述】:

在 kubernetes 集群上部署 heapster 的 Terraform 配置失败并出现错误:

Blocks of type "selector" are not expected here. Did you mean to define
argument "selector"? If so, use the equals sign to assign it a value.

资源配置为:

resource "kubernetes_service" "service"{
    metadata {
        name="monitoring-influxdb"
        namespace="kube-system"
    }

    spec {
        selector {
            k8s-app="influxdb"
        }

        port{
            port=8086
            target_port=8086
        }
    }
}

【问题讨论】:

  • 你的 terraform 版本是什么?
  • Terraform v0.12.2 + provider.kubernetes v1.7.0
  • terraform plan 没有给我任何错误。
  • @Mithilesh_Kunal - 你是否也在使用相同的版本。我再次在新 VM 上尝试了相同的配置,但失败并出现相同的错误:Error: Unsupported block type on main.tf line 24, in resource "kubernetes_service" "example": 24: selector { Blocks of type "selector" are not expected here. Did you mean to define argument "selector"? If so, use the equals sign to assign it a value.
  • 它在 terraform v0.11 上运行。我将 terraform 版本更新为 v0.12,但失败并出现与您相同的错误。这个版本有错误。请降级到 v0.11 或向 terraform github 提出问题。

标签: terraform terraform-provider-kubernetes


【解决方案1】:

有同样的问题。注意= 和错误消息If so, use the equals sign to assign it a value.

简单修复:

selector = {
    k8s-app="influxdb"
}

【讨论】:

    【解决方案2】:

    您的配置文件在 Terraform v0.11 上运行良好。在更新 Terraform 版本并使用 0.12 版本重试时,它返回上述错误。

    所以这是 Terraform v0.12 中的一个错误

    【讨论】:

    • 这不是错误,它只是 0.12 中更严格的语法检查,请参阅 Mike Bauer 的回答。 “选择器”是一个地图,所以现在需要在块之前添加“=”。
    猜你喜欢
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-16
    • 1970-01-01
    • 2021-01-12
    • 2021-01-16
    相关资源
    最近更新 更多