Как вы выводите значение node_port с помощью Terraform's kubernetes_service? - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь создать в выводе в моем шаблоне 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, который я использую для Kubernetes

1 Ответ

0 голосов
/ 14 февраля 2019

Это должно работать:

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"),
...