Хорошо, я нашел путь через подсеть.Чтобы использовать этот подход, вам нужно создать кластер 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}"
}