terraform azurerm_kubernetes_cluster узлов - PullRequest
0 голосов
/ 02 октября 2018

Я связал разные подходы, чтобы получить список виртуальных машин azurerm_kubernetes_cluster в terraform, но безуспешно.Здесь есть несколько возможных элементов: https://www.terraform.io/docs/providers/azurerm/d/kubernetes_cluster.html, но не из них, чтобы получить список виртуальных машин.Есть ли способ?

1 Ответ

0 голосов
/ 02 октября 2018

Хорошо, я нашел путь через подсеть.Чтобы использовать этот подход, вам нужно создать кластер Kubernetes с расширенными сетевыми возможностями в вашей подсети, которую вы знаете.

Первый раздел получает ip_configurations из подсети и извлекает имена сетевых интерфейсов с безобразным разделением.

data "null_data_source" "all_kubernetes_nic_name" {
  count = "${length(azurerm_subnet.kubernetes.ip_configurations)}"
  inputs {
    nic = "${element(split("/", azurerm_subnet.kubernetes.ip_configurations[count.index]), 8)}"
  }
}

Из-за того, что каждый узел kubernetes получает количество IP-адресов, которые мне нужно выделить в предыдущем списке.

data "null_data_source" "kubernetes_nic_name" {
  count = "${length(distinct(data.null_data_source.all_kubernetes_nic_name.*.outputs.nic))}"
  inputs {
    nic = "${element(distinct(data.null_data_source.all_kubernetes_nic_name.*.outputs.nic), count.index)}"
  }
}

Тогда легко получить точную ссылку на сетевой интерфейс каждого узла в кластере kubernetes.Примечание resource_group_name извлекается непосредственно из объекта кластера.

data "azurerm_network_interface" "kubernetes_nic" {
  count = "${length(data.null_data_source.kubernetes_nic_name.*.outputs.nic)}"
  name = "${data.null_data_source.kubernetes_nic_name.*.outputs.nic[count.index]}"
  resource_group_name = "${azurerm_kubernetes_cluster.cluster.node_resource_group}"
}
...