Многострочные аннотации для провайдера terraform kubernetes

Я хотел бы настроить Ambassador в качестве шлюза API для кубернетов, использующих terraform. Существует несколько способов настройки Ambassador. Согласно документации рекомендуется использовать аннотации 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 ответ

Решение

Документация Terraform содержит раздел о многострочных строках, использующих <<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 анализирует это неправильно.

Другие вопросы по тегам