Многострочные аннотации для провайдера 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 анализирует это неправильно.