【发布时间】:2019-11-08 16:41:55
【问题描述】:
Kubernetes 支持元数据标签键中的点(例如 app.role),实际上这似乎是一种通用约定。
terraform 配置语言 (0.12) 不支持参数名称中的点,因此无法指定此形式的标签。例如在google_container_node_pool 配置中,我想指定这个:
resource "google_container_node_pool" "my-node-pool" {
...
labels = {
app.role = web
}
}
有解决办法吗?
注意:斜线 (/) 在 k8s 标签中也很常见..
更新:万一有人在路上遇到同样的问题,我找到了问题的根源。我通过省略= 错误地将labels 参数指定为一个块。所以它看起来像这样:
labels {
"app.role" = "web"
}
这产生了以下错误,将我指向了错误的方向:
Error: Invalid argument name
on main.tf line 45, in resource "google_container_node_pool" "primary_preemptible_nodes":
45: "app.role" = "web"
Argument names must not be quoted.
我注意到并修复了丢失的=,但我没有将映射键与参数名称的语法不同的放在一起。
【问题讨论】:
-
如果您计划这样做会怎样?您可以编辑问题中的任何适用错误吗?我认为您应该能够将
app.role用引号括起来,例如"app.role" = "web",这样应该可以正常工作。
标签: terraform google-kubernetes-engine