Skip to content

Networking in Azure Container Apps

Networking in Azure Container Apps combines managed ingress with optional private networking controls. Understanding ingress mode, service discovery, and environment boundaries is key to secure and reliable architectures.

High-Level Network Flow

graph LR
    C[Client] --> E[Envoy Ingress]
    E --> A[Container App: Public API]
    A --> B[Container App: Internal Worker]
    A --> D[External Dependency]

    subgraph ENV[Container Apps Environment]
      E
      A
      B
    end

Envoy acts as the managed ingress layer, handling routing into app revisions and enforcing transport behavior.

Ingress mode is a security boundary

Accidentally enabling external ingress for internal-only workloads exposes endpoints to the public internet. Validate ingress mode in deployment reviews and policy checks.

Ingress Modes

Mode Reachability Typical Use
External ingress Public internet entry point Public APIs and web backends
Internal ingress Environment-internal access Private microservice endpoints
No ingress Not directly addressable by HTTP clients Queue-driven/background workers

Traffic Flow: External vs Internal Ingress

flowchart TD
    subgraph Public [Public Internet]
        U[Public User]
    end

    subgraph VNet [Virtual Network]
        subgraph CASubnet [Container Apps Subnet]
            subgraph Env [Environment]
                EXT[App: External Ingress]
                INT[App: Internal Ingress]
                ING[Managed Ingress: Envoy]
            end
        end

        subgraph PeeredVNet [Peered VNet / VPN / ER]
            C[Internal Client]
        end
    end

    U -- Public IP / DNS --> ING
    C -- Private IP / VNet DNS --> ING
    ING -- Public Hostname --> EXT
    ING -- Internal Hostname --> INT

VNet Integration and Isolation

Container Apps environments can integrate with virtual networks to control east-west and north-south traffic patterns.

VNet Integration Architecture

flowchart LR
    subgraph VNet ["Virtual Network (10.0.0.0/16)"]
        subgraph Subnet ["CAE Subnet (10.0.0.0/23)"]
            APP[Container App]
        end

        subgraph PE_Subnet ["PE Subnet (10.0.2.0/24)"]
            PE[Private Endpoint]
        end
    end

    subgraph Backbone [Microsoft Backbone]
        DB[Azure SQL / Storage]
    end

    APP -- 1. DNS Query --> VNET_DNS[VNet DNS Resolver]
    VNET_DNS -- 2. Returns Private IP --> APP
    APP -- 3. Connection --> PE
    PE -- 4. Private Link --> DB

Use VNet integration when you need:

  • Private access to internal services.
  • Controlled egress paths to dependencies.
  • Alignment with enterprise network governance.

Service Discovery and East-West Calls

Apps in the same environment can use internal naming/service invocation patterns for service-to-service communication.

With optional Dapr integration, service invocation becomes more uniform across services while keeping networking concerns centralized.

Use internal ingress by default for backend services

Reserve external ingress for entry-point APIs. This reduces attack surface and simplifies network governance.

Revisions and Traffic Routing

Ingress routes traffic to active revisions based on configured weights.

graph TD
    I[Envoy Ingress] --> R1[Revision v1 - 70%]
    I --> R2[Revision v2 - 30%]

This model supports canary testing without introducing an external traffic manager for basic progressive delivery.

TLS and Managed Certificates

For custom domains, managed certificates simplify HTTPS lifecycle operations:

  • Certificate issuance and renewal are platform-managed.
  • Teams avoid manual certificate rotation overhead.
  • HTTPS posture remains consistent as apps evolve.

Practical Example: Public Edge + Private Backend

Component Network Posture
API app External ingress with TLS
Orders/worker app Internal ingress only
Data services Private connectivity through VNet design

This pattern reduces attack surface while keeping the public API straightforward.

Advanced Topics

  • Combining internal ingress with private endpoints for end-to-end private data paths.
  • Zero-trust service segmentation across multiple environments.
  • Egress governance and outbound allow-list strategies.

See Also

Sources