我们使用 terraform 部署了 azurerm_container_app_environment 和 azurerm_container_app。
resource "azurerm_container_app_environment" "myenv" {
name = var.managed_environment_name
location ...
...
infrastructure_subnet_id = var.infrastructure_subnet_id
internal_load_balancer_enabled = true
...
workload_profile {
name = "Consumption"
workload_profile_type = "Consumption"
...
}
}
resource "azurerm_container_app" "myapp" {
name = "myapp"
revision_mode = "Single"
...
ingress {
external_enabled = true
target_port = 80
exposed_port = 8000
transport = "tcp"
}
....
}
我可以使用分配给环境的私有 IP 来卷曲我的容器应用程序,不会出现任何问题:
curl -kvvv http://XXX.XXX.XXX:8000
我们还有 azurerm_public_ip 和 azurerm_lb
现在我们想将容器应用程序的流量公开到公共IP
所以我们这样配置LB
resource "azurerm_lb_probe" "probe" {
loadbalancer_id = var.load_balancer_id
name = "probe"
port = 8000
protocol = "Tcp"
....
}
resource "azurerm_lb_backend_address_pool" "pool" {
loadbalancer_id = var.load_balancer_id
name = "BackEndAddressPool"
}
resource "azurerm_lb_backend_address_pool_address" "address_pool" {
name = "address_pool"
backend_address_pool_id = azurerm_lb_backend_address_pool.pool.id
virtual_network_id = var.vnet_id
ip_address = azurerm_container_app_environment.myapp.static_ip_address
}
resource "azurerm_lb_rule" "lb_rule" {
loadbalancer_id = var.load_balancer_id
name = "lb-rule"
protocol = "Tcp"
frontend_port = 80
backend_port = 8000
backend_address_pool_ids = [azurerm_lb_backend_address_pool.pool.id]
probe_id = azurerm_lb_probe.probe.id
....
}
问题是它显然不起作用。 Lb 指标“运行状况探测状态”始终为 0
Azure 负载均衡器仅适用于后端虚拟机