Load Balancer
miniblue emulates Azure Load Balancer via ARM endpoints. Supports frontend IP configurations, backend address pools, load balancing rules, probes, inbound NAT rules and outbound rules.
API endpoints
| Method | Path | Description |
|---|---|---|
PUT |
/subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.Network/loadBalancers/{name} |
Create or update |
GET |
/subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.Network/loadBalancers/{name} |
Get |
DELETE |
/subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.Network/loadBalancers/{name} |
Delete |
GET |
/subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.Network/loadBalancers |
List |
Create a load balancer
curl -X PUT "http://localhost:4566/subscriptions/sub1/resourceGroups/myRG/providers/Microsoft.Network/loadBalancers/my-lb?api-version=2023-09-01" \
-H "Content-Type: application/json" \
-d '{
"location": "eastus",
"sku": {"name": "Standard", "tier": "Regional"},
"properties": {
"frontendIPConfigurations": [{"name": "frontend", "properties": {"publicIPAddress": {"id": "/subscriptions/sub1/resourceGroups/myRG/providers/Microsoft.Network/publicIPAddresses/my-pip"}}}],
"backendAddressPools": [{"name": "backend-pool"}],
"probes": [{"name": "http-probe", "properties": {"protocol": "Tcp", "port": 80}}],
"loadBalancingRules": [{"name": "http-rule", "properties": {"protocol": "Tcp", "frontendPort": 80, "backendPort": 80}}]
}
}'
Terraform
resource "azurerm_lb" "example" {
name = "example-lb"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
sku = "Standard"
frontend_ip_configuration {
name = "frontend"
public_ip_address_id = azurerm_public_ip.example.id
}
}
Limitations
- No actual traffic routing or health checking
- Backend pool members are stored but not validated
- No cross-region load balancer support