我想将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实现同一目的?
答案 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错误地解析它。