如何声明使用不同协议端口的azurerm_container_group资源
解决方案
azurerm_container_group 资源的container块下的ports为单端口定义单元,不支持在同一个ports块中批量配置多个端口、分别指定协议,你只需要为每个端口单独声明一个ports块即可,修改后的配置如下:
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" commands = [ "--statsd.listen-udp=:8125", "--web.listen-address=:9102", "--statsd.mapping-config=/tmp/statsd_mapping.yml" ] # UDP端口8125配置 ports { port = 8125 protocol = "UDP" } # TCP端口9102配置 ports { port = 9102 protocol = "TCP" } # 如需挂载statsd映射配置可启用以下volume块,替换为你本地配置文件的实际路径 # volume { # name = "statsd-mapping-config" # mount_path = "/tmp" # read_only = true # secret = { # "statsd_mapping.yml" = filebase64("${path.module}/statsd_mapping.yml") # } # } } }
补充说明
- 原配置中的
commands字段不需要用/bin/bash -c包装,直接传入启动参数即可,原有写法会导致容器启动异常 - 配置中已预留映射配置文件的挂载逻辑,可根据实际需求启用
内容的提问来源于stack exchange,提问作者Chibolete Sophos
相关产品推荐
相关产品推荐

