terraform kubernetes提供者的多行字符串注释

时间:2019-01-16 13:27:14

标签: yaml terraform terraform-provider-kubernetes

我想将Ambassador设置为使用terraform的kubernetes的API网关。有几种方法可以配置大使。根据{{​​3}},推荐的方法是对路由并在群集外部公开的每个服务使用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实现同一目的?

1 个答案:

答案 0 :(得分:1)

Terraform文档包含documentation关于使用<<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错误地解析它。