terraform - 如何声明使用具有不同协议的端口的 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
容器的每个端口关联到不同的协议?
解决方案
您可以如下定义端口:
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 门户中:
参考:
推荐阅读
- azure - Bot 框架编写器无法发布到 Azure LUIS 错误
- pine-script - 松树脚本中的变量范围
- c++ - 如何将嵌套的响应数据存储在 protobuf 中?
- python - 在表单中添加/更改字段的最佳方法
- sql - 如何获取结果第一行中不同值的计数
- python - 为什么我的 django 模板标签无法跨模型迭代我的对象
- concurrency - 如果 CUDA 中的流中的作业阻塞
- postgresql - 超时已过期:使用本地 pdAmin 连接 Azure Postgres
- google-sheets - 检查部分填充的行并删除其中没有数据的行
- java - Caffeine LoadingCache - 具有自定义过期策略的驱逐