如何通过Terraform的kubernetes_service输出node_port值?

时间:2019-02-14 03:53:53

标签: terraform terraform-provider-kubernetes

我正在尝试在Terraform模板中创建输出。

output "port" {
  value = "${kubernetes_service.postgres_service.spec}"
}

会产生

ports = {
  cluster_ip = 10.245.175.57
  external_ips = []
  external_name =
  load_balancer_ip =
  load_balancer_source_ranges = []
  port = [map[node_port:30344 protocol:TCP name: port:5432 target_port:5432]]
  selector = map[app:postgres]
  session_affinity = None
  type = NodePort
}

我尝试了"${kubernetes_service.postgres_service.spec}.port",但它会产生语法错误。

我也尝试过"${lookup(kubernetes_service.postgres_service.spec[0], "port")}",但只能与平面地图一起使用。

我想念什么吗?这是我第一次尝试Terraform,它与我以前习惯的(CloudFormation)有很大不同。任何帮助将不胜感激。我只是想让node_port(30344)的值在运行apply之后输出到屏幕。

Terraform doc that I'm using for Kubernetes

1 个答案:

答案 0 :(得分:1)

这应该有效:

output "port" {
  value = "${kubernetes_service.postgres_service.spec.0.port.0.port}"
}

参考:

https://github.com/terraform-providers/terraform-provider-kubernetes/blob/188074bb842e0d708c3a95e095c555cd4fec5e03/kubernetes/resource_kubernetes_service_test.go#L42

resource.TestCheckResourceAttr("kubernetes_service.test", "spec.0.port.0.port", "8080"),