如何声明使用不同协议端口的 azurerm_container_group 资源?

How to declare a azurerm_container_group resource that uses ports with different protocols?

我正在尝试设置一个 stasd-exporter,它需要 2 种类型的端口:UDP 和 TCP。

在 statsd-exporter 的自述文件中,示例使用了 2 种不同类型的端口:

docker pull prom/statsd-exporter

docker run -d -p 9102:9102 -p 9125:9125 -p 9125:9125/udp \
        -v $PWD/statsd_mapping.yml:/tmp/statsd_mapping.yml \
        prom/statsd-exporter --statsd.mapping-config=/tmp/statsd_mapping.yml

我正在学习的教程对 UDP 使用 8125,对 TCP 使用 9102。

发现我可以使用端口列表,但我找不到如何在 ports

中使用设置每个端口协议

目前,我在 azurerm_container_group 中的内容是:

resource "azurerm_container_group" "statsd_exporter" {
  name                = "${azurerm_resource_group.monitoring.name}-common"
  location            = azurerm_resource_group.monitoring.location
  resource_group_name = azurerm_resource_group.monitoring.name

  ip_address_type = "public"
  os_type         = "Linux"

  container {
    name                  = "statsd-exporter"
    image                 = "prom/statsd-exporter"
    cpu                   = "0.5"
    memory                = "1"
    environment_variables = ""

    commands = [
      "/bin/bash", "-c", "--statsd.listen-udp=:8125", "--web.listen-address=:9102"
    ]

    ports {
        port     = [8125, 9102] # --> 8125 should be UDP and 9102 should be TCP
        protocol = ## < < ??? > > ##
    }

  }

如何将 azurerm_container_group 容器的每个端口关联到不同的协议?

您可以定义如下端口:

resource "azurerm_container_group" "statsd_exporter" {
  name                = "statsd"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
  ip_address_type = "public"
  os_type         = "Linux"

  container {
    name                  = "statsd-exporter"
    image                 = "prom/statsd-exporter"
    cpu                   = "0.5"
    memory                = "1"
    commands = [
      "/bin/bash", "-c", "--statsd.listen-udp=:8125", "--web.listen-address=:9102"
    ]
    ports {
      port     = 9102
      protocol = "TCP"
    }
    ports{
    port =  8125
    protocol = "UDP"
    }
  }
}

输出:

正在制定地形规划:

地形应用:

在 Azure 门户中:

参考:

azurerm_container_group | Resources | hashicorp/azurerm | Terraform Registry