首页 > 解决方案 > 如何声明使用具有不同协议的端口的 azurerm_container_group 资源?

问题描述

我正在尝试设置一个 stasd-exporter,它需要两种类型的端口: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

我正在关注的教程使用 8125 用于 UDP 和 9102 用于 TCP。

发现我可以使用端口列表,但我找不到如何使用在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容器的每个端口关联到不同的协议?

标签: terraformterraform-provider-azureazure-rm

解决方案


您可以如下定义端口:

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"
    }
  }
}

输出:

做一个地形计划:

在此处输入图像描述

Terraform 应用:

在此处输入图像描述

在 Azure 门户中:

在此处输入图像描述

参考:

azurerm_container_group | 资源 | 哈希公司/azurerm | Terraform 注册表


推荐阅读