【问题标题】:Multiline string annotations for terraform kubernetes providerterraform kubernetes 提供程序的多行字符串注释
【发布时间】:2019-06-10 14:25:43
【问题描述】:

我想使用 terraform 将 Ambassador 设置为 kubernetes 的 API 网关。有几种方法可以配置大使。根据documentation,推荐的方法是为每个在集群外路由和公开的服务使用 kubernetes 注释。使用 kubernetes yaml 配置很容易做到这一点:

kind: Service
apiVersion: v1
metadata:
  name: my-service
  annotations:
    getambassador.io/config: |
      ---
        apiVersion: ambassador/v0
        kind:  Mapping
        name:  my_service_mapping
        prefix: /my-service/
        service: my-service
spec:
  selector:
    app: MyApp
  ports:
  - protocol: TCP
    port: 80
    targetPort: 9376

getambassador.io/config 字段的值以| 开头表明它是一个多行字符串值。如何使用 terraform HCL 实现相同的目标?

【问题讨论】:

    标签: yaml terraform terraform-provider-kubernetes


    【解决方案1】:

    Terraform 文档包含一个 section 关于使用 <<EOF your multiline string EOF 的多行字符串:

    resource "kubernetes_service" "my-service" {
      "metadata" {
        name = "my-service"
        annotations {
          "getambassador.io/config" = <<EOF
            apiVersion: ambassador/v0
            kind:  Mapping
            name:  my_service_mapping
            prefix: /my-service/
            service: my-service
            EOF
        }
      }
      "spec" {
        selector {
          app = "MyApp"
        }
        port {
          protocol = "TCP"
          port = 80
          target_port = "9376"
        }
      }
    }
    

    确保 yaml 配置中没有三连字符 (---)。 Terraform 解析不正确。

    【讨论】:

      猜你喜欢
      • 2021-03-08
      • 2018-12-14
      • 2014-01-20
      • 1970-01-01
      • 2022-09-29
      • 2020-08-15
      • 2018-12-10
      • 2020-12-16
      • 1970-01-01
      相关资源
      最近更新 更多