|
| 1 | +--- |
| 2 | +title: Application Gateway for Containers components - Concept |
| 3 | +description: This article provides information about how Application Gateway for Containers accepts incoming requests and routes them to a backend target. |
| 4 | +services: application-gateway |
| 5 | +author: mbender-ms |
| 6 | +ms.service: azure-appgw-for-containers |
| 7 | +ms.topic: concept-article |
| 8 | +ms.date: 12/05/2025 |
| 9 | +ms.author: mbender |
| 10 | +# Customer intent: "As a cloud architect, I want to understand the components of Application Gateway for Containers, so that I can effectively configure and manage traffic routing to backend services in my cloud deployment." |
| 11 | +--- |
| 12 | + |
| 13 | +# Application Gateway for Containers components |
| 14 | + |
| 15 | +This article describes the components of Application Gateway for Containers and explains how it processes incoming requests and routes them to backend targets. For a general overview, see [What is Application Gateway for Containers](overview.md). |
| 16 | + |
| 17 | +## Architecture overview |
| 18 | + |
| 19 | +Application Gateway for Containers uses a parent-child resource model: |
| 20 | + |
| 21 | +- **Parent resource**: The main Application Gateway for Containers resource deploys and manages the control plane. |
| 22 | +- **Child resources**: Associations and frontends that belong exclusively to their parent resource. |
| 23 | + |
| 24 | +The control plane orchestrates proxy configuration based on your requirements. |
| 25 | + |
| 26 | +## Component descriptions |
| 27 | + |
| 28 | +### Frontends |
| 29 | + |
| 30 | +A frontend defines where client traffic enters your Application Gateway for Containers. |
| 31 | + |
| 32 | +**Key features:** |
| 33 | +- Provides a unique Azure-managed FQDN that you can use directly or reference with a CNAME record |
| 34 | +- Belongs to exactly one Application Gateway for Containers instance |
| 35 | +- Supports multiple frontends per Application Gateway for Containers |
| 36 | +- Currently doesn't support private IP addresses |
| 37 | + |
| 38 | +### Associations |
| 39 | + |
| 40 | +An association connects Application Gateway for Containers to your virtual network. |
| 41 | + |
| 42 | +**Key features:** |
| 43 | +- Creates a 1:1 mapping between an association resource and a delegated Azure subnet |
| 44 | +- Currently limited to 1 association per Application Gateway for Containers |
| 45 | +- Provisions the data plane during creation and connects it to the specified subnet |
| 46 | +- Must be in the same region as the parent Application Gateway for Containers |
| 47 | + |
| 48 | +**Subnet requirements:** |
| 49 | +- Minimum of 256 available IP addresses at provisioning time |
| 50 | +- Use a /24 subnet mask for deployments in subnets without existing resources |
| 51 | +- For multiple Application Gateway for Containers sharing a subnet, calculate required addresses as: *n* × 256 (where *n* = number of instances) |
| 52 | + |
| 53 | +### ALB Controller |
| 54 | + |
| 55 | +The ALB Controller is a Kubernetes deployment that manages Application Gateway for Containers configuration. |
| 56 | + |
| 57 | +**Components:** |
| 58 | +- **alb-controller**: Translates Kubernetes resources (Ingress, Gateway, ApplicationLoadBalancer) into Application Gateway for Containers configuration |
| 59 | +- **alb-controller-bootstrap**: Manages Custom Resource Definitions (CRDs) |
| 60 | + |
| 61 | +**Deployment:** |
| 62 | +- Install using Helm |
| 63 | +- Uses ARM and Application Gateway for Containers APIs to apply configuration changes |
| 64 | + |
| 65 | +### Security policies |
| 66 | + |
| 67 | +Security policies define security configurations for your Application Gateway for Containers. |
| 68 | + |
| 69 | +**Key features:** |
| 70 | +- Multiple security policies can reference a single Application Gateway for Containers |
| 71 | +- Currently supports `waf` type for Web Application Firewall capabilities |
| 72 | +- Each `waf` security policy maps 1:1 to a Web Application Firewall policy resource |
| 73 | +- A single WAF policy can be referenced by multiple security policies |
| 74 | + |
| 75 | +## Azure concepts |
| 76 | + |
| 77 | +### Subnet delegation |
| 78 | + |
| 79 | +**Microsoft.ServiceNetworking/trafficControllers** is the namespace for Application Gateway for Containers subnet delegation. |
| 80 | + |
| 81 | +**Behavior:** |
| 82 | +- Delegating a subnet doesn't automatically create Application Gateway for Containers resources |
| 83 | +- Multiple subnets can use the same or different delegation settings |
| 84 | +- After delegation, only the specified service can provision resources in that subnet |
| 85 | + |
| 86 | +### User-assigned managed identity |
| 87 | + |
| 88 | +Managed identities eliminate the need for credential management in your code. |
| 89 | + |
| 90 | +**Requirements:** |
| 91 | +- Each ALB Controller requires a user-assigned managed identity |
| 92 | +- Assign the built-in **AppGw for Containers Configuration Manager** role to the identity |
| 93 | + |
| 94 | + > [!NOTE] |
| 95 | + > The **AppGw for Containers Configuration Manager** role includes [data action permissions](../../role-based-access-control/role-definitions.md#control-and-data-actions) that Owner and Contributor roles don't have. Proper role assignment is critical for ALB Controller to function correctly. |
| 96 | +
|
| 97 | +## Request processing |
| 98 | + |
| 99 | +### How requests are accepted |
| 100 | + |
| 101 | +1. **DNS resolution**: Clients resolve either: |
| 102 | + - A CNAME record pointing to the frontend's Azure-managed FQDN, or |
| 103 | + - The frontend's FQDN directly |
| 104 | + |
| 105 | +2. **Request routing**: The DNS name becomes the host header in requests to Application Gateway for Containers |
| 106 | + |
| 107 | +3. **Backend selection**: Routing rules evaluate the hostname to determine the appropriate backend target |
| 108 | + |
| 109 | +### Protocol support |
| 110 | + |
| 111 | +**Client to frontend:** |
| 112 | +- Supports both HTTP/2 and HTTP/1.1 |
| 113 | +- HTTP/2 is always enabled (clients can negotiate HTTP/1.1 if preferred) |
| 114 | + |
| 115 | +**Frontend to backend:** |
| 116 | +- Uses HTTP/1.1 for standard traffic |
| 117 | +- Uses HTTP/2 for gRPC traffic |
| 118 | + |
| 119 | +### Request headers |
| 120 | + |
| 121 | +Application Gateway for Containers adds these headers to backend requests: |
| 122 | + |
| 123 | +| Header | Description | Example | |
| 124 | +|--------|-------------|---------| |
| 125 | +| **x-forwarded-for** | Chain of client and proxy IP addresses | `1.2.3.4,5.6.7.8` (client IP: 1.2.3.4, proxy IP: 5.6.7.8) | |
| 126 | +| **x-forwarded-proto** | Protocol used by the client | `http` or `https` | |
| 127 | +| **x-request-id** | Unique identifier for request correlation | `aaaa0000-bb11-2222-33cc-444444dddddd` | |
| 128 | + |
| 129 | +### Timeout configuration |
| 130 | + |
| 131 | +| Timeout type | Duration | Purpose | |
| 132 | +|--------------|----------|---------| |
| 133 | +| Request Timeout | 60 seconds | Maximum time to wait for backend response | |
| 134 | +| HTTP Idle Timeout | 5 minutes | Time before closing idle HTTP connections | |
| 135 | +| Stream Idle Timeout | 5 minutes | Time before closing idle HTTP streams | |
| 136 | +| Upstream Connect Timeout | 5 seconds | Time allowed to establish backend connections | |
| 137 | + |
| 138 | +> [!NOTE] |
| 139 | +> The Request Timeout enforces completion within the specified time, regardless of whether data is streaming or the connection is idle. For large file downloads that exceed 60 seconds due to size or transfer speed, increase the timeout value or set it to 0 (unlimited). |
| 140 | +
|
| 141 | +## Related content |
| 142 | + |
| 143 | +- [What is Application Gateway for Containers](overview.md) |
| 144 | +- [Deploy Application Gateway for Containers](quickstart-deploy-application-gateway-for-containers-alb-controller.md) |
0 commit comments