You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/how-it-works.md
+34-1Lines changed: 34 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,7 +8,7 @@ The following diagram details the AWS components this controller creates. It als
8
8
9
9
!!!warning "Note"
10
10
11
-
The controller manages the configurations of the resources it creates, and we do not recommend out-of-band modifications to these resources because the controller may revert the manual changes during reconciliation. We recommend to use configuration options provided as best practice, such as ingress and service annotations, controller command line flagsand IngressClassParams.
11
+
The controller manages the configurations of the resources it creates, and we do not recommend out-of-band modifications to these resources because the controller may revert the manual changes during reconciliation. We recommend to use configuration options provided as best practice, such as ingress and service annotations, controller command line flags, IngressClassParams, and Gateway API resources.
12
12
13
13
### Ingress Creation
14
14
@@ -47,3 +47,36 @@ Ingress traffic starts at the ALB and reaches the Kubernetes nodes through each
47
47
#### IP mode
48
48
Ingress traffic starts at the ALB and reaches the Kubernetes pods directly. CNIs must support directly accessible POD ip via [secondary IP addresses on ENI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html).
49
49
50
+
## Gateway API
51
+
52
+
In addition to Ingress and Service resources, the AWS Load Balancer Controller also supports the [Kubernetes Gateway API](https://gateway-api.sigs.k8s.io/). Gateway API is a more expressive, extensible, and role-oriented API for managing traffic routing in Kubernetes.
53
+
54
+
The controller satisfies Gateway API resources as follows:
55
+
56
+
-**L7 Routes (HTTPRoute, GRPCRoute)**: Provisioned using [Application Load Balancers](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html)
57
+
-**L4 Routes (TCPRoute, UDPRoute, TLSRoute)**: Provisioned using [Network Load Balancers](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html)
58
+
59
+
For more information on Gateway API support, including prerequisites, configuration, and examples, see the [Gateway API Guide](guide/gateway/gateway.md).
60
+
61
+
### How Gateway API Works
62
+
63
+
The AWS Load Balancer Controller runs a continuous reconciliation loop to align the desired state expressed through Gateway API objects with the actual state of AWS Load Balancer infrastructure. The controller runs dedicated controller instances for L4 routing (NLB) and L7 routing (ALB), each following a similar workflow.
64
+
65
+
The following diagram illustrates the Gateway API reconciliation process:
At a high level, the reconciliation loop works as follows:
70
+
71
+
**[1] API Monitoring**: The controller continuously monitors the Kubernetes API for Gateway API resources being created, modified, or deleted.
72
+
73
+
**[2] Queueing**: Identified resources are added to an internal queue for processing.
74
+
75
+
**[3] Processing**: For each item in the queue:
76
+
77
+
- The associated GatewayClass is verified to determine if it is or should be a managed resource.
78
+
- If managed, the Gateway API definition is mapped to AWS resources such as NLB/ALB, Listeners, Listener Rules, Target Groups, and Addons.
79
+
- These mapped resources are compared with the actual state in AWS. For any resource that does not match the desired state, the controller executes the necessary AWS API calls to reconcile the differences.
80
+
81
+
**[4] Status Updates**: After reconciliation, the controller updates the status field of the corresponding Gateway resource. This provides real-time feedback on provisioned AWS resources, such as the load balancer's DNS name and ARN, and whether the Gateway is accepted and programmed.
0 commit comments