Skip to content

Network Topology

Full network architecture of the Microtec ERP Azure infrastructure — per-environment VNets, subnets, Container Apps Environments, private endpoints, NAT Gateway, and Azure Front Door.


High-Level Topology


Environment-Specific CIDR Table

EnvironmentVNet CIDRPublic SubnetPrivate SubnetPE SubnetNAT GW Egress IP
dev10.0.0.0/1610.0.0.0/2410.0.1.0/2410.0.2.0/24dynamic
stage10.1.0.0/1610.1.0.0/2410.1.1.0/2410.1.2.0/24dynamic
preprod10.6.0.0/1610.6.0.0/2410.6.1.0/2410.6.2.0/24dynamic
uat10.5.0.0/1610.5.0.0/2410.5.1.0/2410.5.2.0/24dynamic
production10.2.0.0/1610.2.0.0/2410.2.1.0/2410.2.2.0/24static
shared-sql10.100.0.0/16N/AN/AN/AN/A

Preprod CIDR

Preprod uses 10.6.0.0/16 — not 10.3. Older documentation may reference 10.3 incorrectly. Always use 10.6 for preprod.

No VNet Peering

Each environment VNet is completely isolated. There is no VNet peering between environments. Cross-environment communication does not occur by design.


Subnet Detail: Private Endpoints

All PaaS services are accessed exclusively via private endpoints. No PaaS service has a public IP visible to Container Apps.

Private EndpointAzure ResourcePrivate IPDNS Zone
SQL PEmic-backend-shared-sql-rg SQL Server10.{env}.2.4privatelink.database.windows.net
Redis PEmic-erp-be-{env}-redis10.{env}.2.5privatelink.redis.cache.windows.net
Service Bus PEmic-erp-be-{env}-asb namespace10.{env}.2.6privatelink.servicebus.windows.net
Key Vault PEKV name (see security docs)10.{env}.2.7privatelink.vaultcore.azure.net
ACR PEmicerpbe{env}acr10.{env}.2.8privatelink.azurecr.io
Blob Storage PEmicerpbe{env}sa10.{env}.2.9privatelink.blob.core.windows.net

Two-CAE Architecture per Environment

Public CAE Properties

PropertyValue
Subnetpublic-apps (/24)
Internet-facingYes
ServicesGateway.API, Keycloak
mTLSNo (only 2 services; mTLS between identical apps N/A)
Custom domainsYes — via Azure Front Door
Health probeAFD → /health/live every 30 s

Private CAE Properties

PropertyValue
Subnetprivate-apps (/24)
Internet-facingNo — VNet-internal only
ServicesAll other 12+ microservices
mTLSYes — enforced by CAE at sidecar level
Custom domainsNo — internal DNS only
Internal FQDN pattern{app-name}.internal.{unique-id}.{region}.azurecontainerapps.io

NAT Gateway

Each environment has a NAT Gateway attached to both CAE subnets for predictable outbound egress. All outbound traffic from Container Apps — including calls to external APIs (e-invoicing, payment gateways, email providers) — exits through the NAT Gateway's static IP.

Production egress IP: Static IP — whitelist this IP on external partner firewalls.

Fooj Shared NAT Gateway

The Fooj project (separate subscription) uses a shared NAT Gateway (20.26.0.39) consolidated for both stage and production CAEs in a single VNet. This is a separate architecture from the main ERP.


Network Security Groups (NSG)

Public Apps NSG

PriorityDirectionProtocolSourceDestinationAction
100InboundTCP 443InternetPublic subnetAllow
110InboundTCP 80InternetPublic subnetAllow (AFD redirect)
900InboundAnyAnyAnyDeny
100OutboundTCP 443/80Public subnetPrivate subnetAllow
110OutboundTCP 443Public subnetPE subnetAllow
900OutboundAnyAnyAnyDeny

Private Apps NSG

PriorityDirectionProtocolSourceDestinationAction
100InboundTCP 80/443Public subnetPrivate subnetAllow
200InboundTCP 80/443Private subnetPrivate subnetAllow (intra-CAE)
900InboundAnyAnyAnyDeny
100OutboundTCP 1433Private subnetPE subnetAllow (SQL)
110OutboundTCP 10000Private subnetPE subnetAllow (Redis TLS)
120OutboundTCP 443Private subnetPE subnetAllow (KV/ASB/ACR)
900OutboundAnyAnyAnyDeny

Azure Front Door Traffic Flow

Route rules:

RouteCacheWAFOrigin
/api/*BypassYesPublic CAE — Gateway.API
/auth/*BypassYesPublic CAE — Keycloak
/* (catch-all)1 year (immutable hash files)YesAzure SWA

DNS Architecture

Private DNS zones (per environment VNet):

DNS ZoneResolves to
privatelink.database.windows.netSQL private endpoint
privatelink.redis.cache.windows.netRedis private endpoint
privatelink.servicebus.windows.netASB private endpoint
privatelink.vaultcore.azure.netKey Vault private endpoint
privatelink.azurecr.ioACR private endpoint
{cae-unique-id}.azurecontainerapps.ioACA internal service FQDN

Internal Documentation — Microtec Platform Team