Многострочные аннотации для провайдера terraform kubernetes - PullRequest
0 голосов
/ 16 января 2019

Я хотел бы настроить 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 Ответ

0 голосов
/ 16 января 2019

Документация 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 анализирует это неправильно.

...