0

我正在使用这个 repo在 Azure 上使用 acs-engine 创建一个 kubernetes 集群。

我想知道是否有人可以帮助我确定如何引用主 VM 的公共 IP 地址。

这将用于 ssh 到主 VM ( ssh user@public-ip),这很重要,因为我想运行 local-exec 配置程序来使用 Ansible 配置我的集群。

我不相信它是first_master_ip下面的main.tf(在 repo 的 variables.tf 上给出了一个值),尽管我也不知道如何引用这个 IP。

我尝试过的另一件事是使用 azure 命令行获取主虚拟机公共 IP 地址,但是我也没有成功,因为我不知道如何获取cluster-name将通过az acs kubernetes browse -g <resource-group-name> -n <cluster-name>

任何帮助将不胜感激,因为我真的遇到了障碍。

provider "azurerm" {
  subscription_id = "${var.azure_subscription_id}"
  client_id       = "${var.azure_client_id}"
  client_secret   = "${var.azure_client_secret}"
  tenant_id       = "${var.azure_tenant_id}"
}

# Azure Resource Group
resource "azurerm_resource_group" "default" {
  name     = "${var.resource_group_name}"
  location = "${var.azure_location}"
}

resource "azurerm_public_ip" "test" {
  name                         = "acceptanceTestPublicIp1"
  location                     = "${var.azure_location}"
  resource_group_name          = "${azurerm_resource_group.default.name}"
  public_ip_address_allocation = "static"
}

data "template_file" "acs_engine_config" {
  template = "${file(var.acs_engine_config_file)}"

  vars {
    master_vm_count = "${var.master_vm_count}"
    dns_prefix      = "${var.dns_prefix}"
    vm_size         = "${var.vm_size}"

    first_master_ip                 = "${var.first_master_ip}"
    worker_vm_count                 = "${var.worker_vm_count}"
    admin_user                      = "${var.admin_user}"
    ssh_key                         = "${var.ssh_key}"
    service_principle_client_id     = "${var.azure_client_id}"
    service_principle_client_secret = "${var.azure_client_secret}"
  }

}

# Locally output the rendered ACS Engine Config (after substitution has been performed)
resource "null_resource" "render_acs_engine_config" {
  provisioner "local-exec" {
    command = "echo '${data.template_file.acs_engine_config.rendered}' > ${var.acs_engine_config_file_rendered}"
  }

  depends_on = ["data.template_file.acs_engine_config"]
}

# Locally run the ACS Engine to produce the Azure Resource Template for the K8s cluster
resource "null_resource" "run_acs_engine" {
  provisioner "local-exec" {
    command = "acs-engine generate ${var.acs_engine_config_file_rendered}"
  }

  depends_on = ["null_resource.render_acs_engine_config"]
}
4

1 回答 1

0

我没有使用 terraform 的经验,但是 acs-engine 设置了一个带有公共 ip 的 lb,该 ip 通过您的主服务器(或跨多个主服务器进行平衡)。您可以通过使用找到该 lb 的 ip <dns_prefix>.<region>.cloudapp.azure.com

但是,如果您需要 ip 来提供额外的东西,那么当您有多个 master 时,这还不够。

于 2018-06-08T16:36:58.343 回答