我在Terraform中有一个manifest yaml文件,用于在Kubernetes集群上部署部署,我想通过templatefile函数将具有定义节点选择器的键值对的Map传递给yaml文件,以在其上设置nodeSelector
。
下面是我的Terraform代码的样子:
...
resource "kubernetes_manifest" "deployment" {
manifest = yamldecode(
templatefile("${path.module}/resources/deployment-tmpl.yaml",
{
app_name = var.app_name,
app_namespace = var.app_namespace
})
)
}
...
字符串
下面是我的manifest yaml代码的样子:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app.kubernetes.io/name: ${app_name}
name: ${app_name}
namespace: ${app_namespace}
spec:
selector:
matchLabels:
app.kubernetes.io/name: ${app_name}
template:
metadata:
labels:
app.kubernetes.io/name: ${app_name}
spec:
containers:
...
...
型
我的节点选择器变量可能看起来像这样:
variable "node_selector" {
default = {
"eks.amazonaws.com/nodegroup" = "app"
}
}
型
Terraform版本是v0.14.11
。
在我的情况下,我该怎么做呢?我不想硬编码,我想发送一个Map,其中可以有一个或多个键值对。
1条答案
按热度按时间nnvyjq4y1#
在这种情况下,可以使用Terraform中的
templatefile
函数中的yamlencode
来实现。我已将manifest yaml文件更改如下:
字符串
我修改了Terraform文件如下:
型
节点选择器变量将保持不变,并且可以有多个键值对:
型
参考:Terraform - templatefile Function