Azure Loadbalancer с пересылкой трафика по общедоступному IP-адресу в приложения-контейнеры

Мы развернули azurerm_container_app_environment и azurerm_container_app с помощью terraform.

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-адрес, назначенный env:

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.

Вы проверили с помощью nsg, который разрешает порт 8000? @fabry это разрешено?

Vinay B 26.06.2024 21:44

@VinayB да, я тоже пытался настроить NSG, но это не сработало

Fabry 27.06.2024 08:30

Вы используете внутренние приложения-контейнеры или внешние?

Venkat V 01.07.2024 09:10
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
3
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Azure Load Balancer предназначен для работы только с серверными виртуальными машинами.

Другие вопросы по теме

Когда использовать application_gateway_backend_address_pools сетевых интерфейсов Azure
Как с помощью Terraform интегрировать балансировщик нагрузки Basic-Sku и общедоступный IP-адрес Basic-Sku с ресурсом azurerm_kubernetes_cluster?
Как настроить переднюю дверцу Azure (стандартный/премиум) для пересылки HTTP-запросов в статическое веб-приложение
BackendAddressPool в Azure Load Balancer только с IP-адресами не развертывается
Балансировка нагрузки не работает с приведенной ниже конфигурацией виртуальных машин
Почему в Azure зарезервированный базовый общедоступный IP-адрес дешевле, чем динамический базовый общедоступный IP-адрес?
Аргумент ошибки Terraform не ожидается здесь для azurerm_lb
Исходный IP-адрес с использованием внутреннего балансировщика нагрузки AKS Azure
Список карт, необходимых для спецификаций правил loabdbalancer
Почему Azure Load Balancer, созданный AKS, настроен на перенаправление трафика на порты 80 и 443 на узлах, а не на порты узлов, открытые службой?