Skip to content

Commit c899460

Browse files
authored
Merge pull request #309095 from mbender-ms/agic-clarity-components
AGIC | Maintenance | CAMP | Assisted with clarify and improving Acrolinx on article
2 parents b2871ac + 002cfea commit c899460

1 file changed

Lines changed: 42 additions & 45 deletions

File tree

articles/application-gateway/for-containers/application-gateway-for-containers-components.md

Lines changed: 42 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -5,88 +5,85 @@ services: application-gateway
55
author: mbender-ms
66
ms.service: azure-appgw-for-containers
77
ms.topic: concept-article
8-
ms.date: 12/4/2025
8+
ms.date: 12/05/2025
99
ms.author: mbender
1010
# 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."
1111
---
1212

1313
# Application Gateway for Containers components
1414

15-
This article provides detailed descriptions and requirements for components of Application Gateway for Containers. Information about how Application Gateway for Containers accepts incoming requests and routes them to a backend target is provided. For a general overview of Application Gateway for Containers, see [What is Application Gateway for Containers](overview.md).
15+
This article provides detailed descriptions and requirements for components of Application Gateway for Containers. It explains how Application Gateway for Containers accepts incoming requests and routes them to a backend target. For a general overview of Application Gateway for Containers, see [What is Application Gateway for Containers](overview.md).
1616

1717
### Core components
1818

1919
- An Application Gateway for Containers resource is an Azure parent resource that deploys the control plane.
20-
- The control plane is responsible for orchestrating proxy configuration based on customer intent.
21-
- Application Gateway for Containers has two child resources; associations and frontends.
22-
- Child resources are exclusive to only their parent Application Gateway for Containers and may not be referenced by another Application Gateway for Container resource.
20+
- The control plane orchestrates proxy configuration based on customer intent.
21+
- Application Gateway for Containers has two child resources: associations and frontends.
22+
- Child resources belong exclusively to their parent Application Gateway for Containers and can't be shared with other Application Gateway for Containers resources.
2323

2424
### Application Gateway for Containers frontends
2525

2626
- An Application Gateway for Containers frontend resource is an Azure child resource of the Application Gateway for Containers parent resource.
27-
- An Application Gateway for Containers frontend defines the entry point client traffic should be received by a given Application Gateway for Containers.
28-
- Each frontend provides a unique FQDN that can be referenced by a customer's CNAME record.
29-
- A frontend can't be associated to more than one Application Gateway for Containers.
30-
- Private IP addresses are currently unsupported.
31-
- A single Application Gateway for Containers can support more than one frontends.
32-
33-
>[!Tip]
34-
>A frontend represents a unique entry point for client traffic. Multiple hostnames (such as contoso.com and fabrikam.com) can resolve to the same frontend. If isolation is required, for example, to use the same hostname across different environments, create separate frontends. This allows each environment to reference the same hostname while maintaining distinct routing behavior.
27+
- An Application Gateway for Containers frontend defines the entry point client traffic uses for a given Application Gateway for Containers.
28+
- You can't associate a frontend with more than one Application Gateway for Containers.
29+
- You can create a CNAME record by using the unique FQDN that each frontend provides.
30+
- Private IP addresses aren't currently supported.
31+
- A single Application Gateway for Containers can support more than one frontend.
3532

3633
### Application Gateway for Containers associations
3734

3835
- An Application Gateway for Containers association resource is an Azure child resource of the Application Gateway for Containers parent resource.
39-
- An Application Gateway for Containers association defines a connection point into a virtual network. An association is a 1:1 mapping of an association resource to an Azure Subnet that has been delegated.
40-
- Application Gateway for Containers is designed to allow for more than one associations.
41-
- At this time, the current number of associations is currently limited to 1.
36+
- An Application Gateway for Containers association defines a connection point into a virtual network. An association is a 1:1 mapping of an association resource to a delegated Azure Subnet.
37+
- Application Gateway for Containers is designed to allow for more than one association.
38+
- At this time, the current number of associations is limited to 1.
4239
- During creation of an association, the underlying data plane is provisioned and connected to a subnet within the defined virtual network's subnet.
4340
- Each association should assume at least 256 addresses are available in the subnet at time of provisioning.
44-
- A minimum /24 subnet mask for each deployment (assuming no resources have previously been provisioned in the subnet).
45-
- If n number of Application Gateway for Containers are provisioned, with the assumption each Application Gateway for Containers contains one association, and the intent is to share the same subnet, the available required addresses should be n*256.
41+
- A minimum /24 subnet mask for each deployment (assuming no resources are previously provisioned in the subnet).
42+
- If you plan to deploy multiple Application Gateway for Containers resources that share the same subnet, calculate the required addresses as *n×256*, where *n* equals the number of Application Gateway for Containers resources. This assumes each contains one association.
4643
- All Application Gateway for Containers association resources should match the same region as the Application Gateway for Containers parent resource.
4744

4845
### Application Gateway for Containers ALB Controller
4946

50-
- An Application Gateway for Containers ALB Controller is a Kubernetes deployment that orchestrates configuration and deployment of Application Gateway for Containers by watching Kubernetes both Custom Resources and Resource configurations, such as, but not limited to, Ingress, Gateway, and ApplicationLoadBalancer. It uses both ARM / Application Gateway for Containers configuration APIs to propagate configuration to the Application Gateway for Containers Azure deployment.
51-
- ALB Controller is deployed / installed via Helm.
47+
- An Application Gateway for Containers ALB Controller is a Kubernetes deployment that orchestrates configuration and deployment of Application Gateway for Containers by watching Kubernetes both Custom Resources and Resource configurations, such as, but not limited to, Ingress, Gateway, and ApplicationLoadBalancer. It uses both ARM and Application Gateway for Containers configuration APIs to propagate configuration to the Application Gateway for Containers Azure deployment.
48+
- Deploy or install ALB Controller with Helm.
5249
- ALB Controller consists of two running pods.
53-
- alb-controller pod is responsible for orchestrating customer intent to Application Gateway for Containers load balancing configuration.
54-
- alb-controller-bootstrap pod is responsible for management of CRDs.
50+
- alb-controller pod orchestrates customer intent to Application Gateway for Containers load balancing configuration.
51+
- alb-controller-bootstrap pod manages CRDs.
5552

5653
### Application Gateway for Containers security policy
5754

5855
- An Application Gateway for Containers security policy defines security configurations, such as WAF, for the ALB Controller to consume.
59-
- More than one security policy may be referred by a single Application Gateway for Containers resource.
56+
- A single Application Gateway for Containers resource can refer to more than one security policy.
6057
- At this time, the only security policy type offered is `waf` for web application firewall capabilities.
6158
- The `waf` security policy is a one-to-one mapping between the security policy resource and a Web Application Firewall policy.
62-
- Only one web application firewall policy may be referenced in any number of security policies for a defined Application Gateway for Containers resource.
59+
- You can reference only one web application firewall policy in any number of security policies for a defined Application Gateway for Containers resource.
6360

6461
## Azure / general concepts
6562

6663
### Private IP address
6764

68-
- A private IP address isn't explicitly defined as an Azure Resource Manager resource. A private IP address would refer to a specific host address within a given virtual network's subnet.
65+
- A private IP address isn't explicitly defined as an Azure Resource Manager resource. A private IP address refers to a specific host address within a given virtual network's subnet.
6966

7067
### Subnet delegation
7168

72-
- Microsoft.ServiceNetworking/trafficControllers is the namespace adopted by Application Gateway for Containers and may be delegated to a virtual network's subnet.
73-
- When delegation occurs, provisioning of Application Gateway for Containers resources doesn't happen, nor is there an exclusive mapping to an Application Gateway for Containers association resource.
74-
- Any number of subnets can have a subnet delegation that is the same or different to Application Gateway for Containers. Once defined, no other resources, other than the defined service, can be provisioned into the subnet unless explicitly defined by the service's implementation.
69+
- Microsoft.ServiceNetworking/trafficControllers is the namespace adopted by Application Gateway for Containers and you can delegate it to a virtual network's subnet.
70+
- When you delegate, you don't provision Application Gateway for Containers resources, nor is there an exclusive mapping to an Application Gateway for Containers association resource.
71+
- Any number of subnets can have a subnet delegation that is the same or different to Application Gateway for Containers. Once defined, you can't provision other resources into the subnet unless explicitly defined by the service's implementation.
7572

7673
### User-assigned managed identity
7774

7875
- Managed identities for Azure resources eliminate the need to manage credentials in code.
79-
- A User Managed Identity is required for each Azure Load Balancer Controller to make changes to Application Gateway for Containers.
76+
- You need a user-assigned managed identity for each Azure Load Balancer Controller to make changes to Application Gateway for Containers.
8077
- _AppGw for Containers Configuration Manager_ is a built-in RBAC role that allows ALB Controller to access and configure the Application Gateway for Containers resource.
8178

82-
> [!Note]
83-
> The _AppGw for Containers Configuration Manager_ role has [data action permissions](../../role-based-access-control/role-definitions.md#control-and-data-actions) that the Owner and Contributor roles do not have. It is critical proper permissions are delegated to prevent issues with ALB Controller making changes to the Application Gateway for Containers service.
79+
> [!NOTE]
80+
> The _AppGw for Containers Configuration Manager_ role has [data action permissions](../../role-based-access-control/role-definitions.md#control-and-data-actions) that the Owner and Contributor roles don't have. It's critical to delegate proper permissions to prevent issues with ALB Controller making changes to the Application Gateway for Containers service.
8481
8582
## How Application Gateway for Containers accepts a request
8683

87-
Each Application Gateway for Containers frontend provides a generated Fully Qualified Domain Name managed by Azure. The FQDN may be used as-is or customers may opt to mask the FQDN with a CNAME record.
84+
Each Application Gateway for Containers frontend provides a generated fully qualified domain name managed by Azure. You can use the FQDN as-is or mask it with a CNAME record.
8885

89-
Before a client sends a request to Application Gateway for Containers, the client resolves a CNAME that points to the frontend's FQDN; or the client may directly resolve the FQDN provided by Application Gateway for Containers by using a DNS server.
86+
Before a client sends a request to Application Gateway for Containers, the client resolves a CNAME that points to the frontend's FQDN, or the client directly resolves the FQDN provided by Application Gateway for Containers by using a DNS server.
9087

9188
The DNS resolver translates the DNS record to an IP address.
9289

@@ -98,34 +95,34 @@ A set of routing rules evaluates how the request for that hostname should be ini
9895

9996
### HTTP/2 Requests
10097

101-
Application Gateway for Containers supports both HTTP/2 and HTTP/1.1 protocols for communication between the client and the frontend. The HTTP/2 setting is always enabled and can't be changed. If clients prefer to use HTTP/1.1 for their communication to the frontend of Application Gateway for Containers, they may continue to negotiate accordingly.
98+
Application Gateway for Containers supports both HTTP/2 and HTTP/1.1 protocols for communication between the client and the frontend. The HTTP/2 setting is always enabled and can't be changed. If clients prefer to use HTTP/1.1 for their communication to the frontend of Application Gateway for Containers, they can continue to negotiate accordingly.
10299

103100
Communication between Application Gateway for Containers and the backend target is always via HTTP/1.1, except for gRPC, which uses HTTP/2.
104101

105102
### Modifications to the request
106103

107-
Application Gateway for Containers inserts three extra headers to all requests before requests are initiated from Application Gateway for Containers to a backend target:
104+
Application Gateway for Containers inserts three extra headers to all requests before it initiates requests to a backend target:
108105

109106
- x-forwarded-for
110107
- x-forwarded-proto
111108
- x-request-id
112109

113-
**x-forwarded-for** is the original requester's client IP address. If the request is coming through a proxy, the header value appends the address received, comma delimited. In example: 1.2.3.4,5.6.7.8; where 1.2.3.4 is the client IP address to the proxy in front of Application Gateway for Containers, and 5.6.7.8 is the address of the proxy forwarding traffic to Application Gateway for Containers.
110+
**x-forwarded-for** is the original requester's client IP address. If the request comes through a proxy, the header value appends the address it receives, comma delimited. For example: 1.2.3.4,5.6.7.8; where 1.2.3.4 is the client IP address to the proxy in front of Application Gateway for Containers, and 5.6.7.8 is the address of the proxy forwarding traffic to Application Gateway for Containers.
114111

115-
**x-forwarded-proto** returns the protocol received by Application Gateway for Containers from the client. The value is either http or https.
112+
**x-forwarded-proto** returns the protocol Application Gateway for Containers receives from the client. The value is either http or https.
116113

117-
**x-request-id** is a unique guid generated by Application Gateway for Containers for each client request and presented in the forwarded request to the backend target. The guid consists of 32 alphanumeric characters, separated by dashes (for example: aaaa0000-bb11-2222-33cc-444444dddddd). This guid can be used to correlate a request received by Application Gateway for Containers and initiated to a backend target as defined in access logs.
114+
**x-request-id** is a unique guid that Application Gateway for Containers generates for each client request and presents in the forwarded request to the backend target. The guid consists of 32 alphanumeric characters, separated by dashes (for example: aaaa0000-bb11-2222-33cc-444444dddddd). You can use this guid to correlate a request that Application Gateway for Containers receives and initiates to a backend target as defined in access logs.
118115

119116
## Request timeouts
120117

121-
Application Gateway for Containers enforces the following timeouts as requests are initiated and maintained between the client, Application Gateway for Containers, and backend.
118+
Application Gateway for Containers enforces the following timeouts as it initiates and maintains requests between the client, Application Gateway for Containers, and backend.
122119

123120
| Timeout | Duration | Description |
124121
| ------- | --------- | ----------- |
125-
| Request Timeout | 60 seconds | time for which Application Gateway for Containers waits for the backend target response. |
126-
| HTTP Idle Timeout | 5 minutes | idle timeout before closing an HTTP connection. |
127-
| Stream Idle Timeout | 5 minutes | idle timeout before closing an individual stream carried by an HTTP connection. |
128-
| Upstream Connect Timeout | 5 seconds | time for establishing a connection to the backend target. |
122+
| Request Timeout | 60 seconds | Time that Application Gateway for Containers waits for the backend target response. |
123+
| HTTP Idle Timeout | 5 minutes | Idle timeout before closing an HTTP connection. |
124+
| Stream Idle Timeout | 5 minutes | Idle timeout before closing an individual stream carried by an HTTP connection. |
125+
| Upstream Connect Timeout | 5 seconds | Time for establishing a connection to the backend target. |
129126

130-
>[!Note]
131-
>Request timeout strictly enforces the request to complete in the defined time irrespective if data is actively streaming or the request has started to idle. For example, if you are serving large file downloads and you expect tranfers to take greater than 60 seconds due to size or slow transfer rates, consider increasing the request timeout value or setting it to 0.
127+
> [!NOTE]
128+
> Request timeout strictly enforces the request to complete in the defined time irrespective if data is actively streaming or the request is idle. For example, if you're serving large file downloads and you expect transfers to take greater than 60 seconds due to size or slow transfer rates, consider increasing the request timeout value or setting it to 0.

0 commit comments

Comments
 (0)