Topic 1 Question #1
A company is planning to create a service that requires encryption in transit. The traffic must not be decrypted between the client and the backend of the service. The company will implement the service by using the gRPC protocol over TCP port 443. The service will scale up to thousands of simultaneous connections. The backend of the service will be hosted on an Amazon Elastic Kubernetes Service (Amazon EKS) duster with the Kubernetes Cluster Autoscaler and the Horizontal Pod Autoscaler configured. The company needs to use mutual TLS for two-way authentication between the client and the backend.Which solution will meet these requirements?
- A.
Install the AWS Load Balancer Controller for Kubernetes. Using that controller, configure a Network Load Balancer with a TCP listener on port 443 to forward traffic to the IP addresses of the backend service Pods.
- B.
Install the AWS Load Balancer Controller for Kubernetes. Using that controller, configure an Application Load Balancer with an HTTPS listener on port 443 to forward traffic to the IP addresses of the backend service Pods.
- C.
Create a target group. Add the EKS managed node group's Auto Scaling group as a target Create an Application Load Balancer with an HTTPS listener on port 443 to forward traffic to the target group.
- D.
Create a target group. Add the EKS managed node group’s Auto Scaling group as a target. Create a Network Load Balancer with a TLS listener on port 443 to forward traffic to the target group.
Answer: A
The scenario has four core requirements: 1) No decryption of traffic between the client and backend service, 2) Mutual TLS (mTLS) for two-way authentication directly between clients and backend workloads, 3) Support for gRPC over TCP port 443 with thousands of simultaneous concurrent connections, 4) Native compatibility with EKS Cluster Autoscaler and Horizontal Pod Autoscaler (HPA) workflows. To meet these requirements, the load balancing solution must avoid TLS termination (to prevent intermediate decryption and preserve end-to-end mTLS negotiation), operate at layer 4 to forward raw TCP traffic for gRPC, automatically update target membership as pods scale up or down, and support high connection volume efficiently. The correct approach uses a Network Load Balancer (NLB) with a TCP listener provisioned via the AWS Load Balancer Controller, which registers pod IPs directly as targets to align with Kubernetes orchestration and autoscaling configurations.
Option Analysis:
A. Correct. The AWS Load Balancer Controller natively integrates with EKS to provision and manage AWS load balancers. A TCP listener on NLB operates at layer 4, forwarding raw TCP traffic on port 443 without terminating TLS, so traffic remains encrypted between client and backend, preserving end-to-end mTLS functionality. The controller uses IP target mode to register individual pod IPs directly as NLB targets, automatically updating target membership as HPA scales pods up or down, eliminating manual target management. NLB is optimized for high volumes of concurrent connections, making it suitable for thousands of simultaneous connections, and supports unmodified gRPC traffic over TCP.
B. Incorrect. An Application Load Balancer (ALB) with an HTTPS listener terminates TLS at the load balancer, which decrypts traffic before forwarding it to backends, violating the requirement that traffic is not decrypted between client and backend. TLS termination at ALB also breaks end-to-end mTLS, as mTLS negotiation would occur between the client and ALB instead of the client and backend pods.
C. Incorrect. First, an ALB with an HTTPS listener terminates TLS at the load balancer, decrypting traffic and violating the no intermediate decryption requirement, as well as breaking end-to-end mTLS. Second, targeting the EKS managed node group Auto Scaling group registers nodes as targets instead of individual pods, requiring traffic to route via NodePorts, adding unnecessary network hops, and failing to automatically update targets when HPA scales pods, leading to inefficient routing and potential traffic loss.
D. Incorrect. An NLB with a TLS listener terminates TLS at the load balancer, decrypting traffic and violating the no intermediate decryption requirement, as well as breaking end-to-end mTLS negotiation between clients and backend pods. Additionally, targeting the node group Auto Scaling group instead of individual pod IPs ties target registration to nodes rather than pods, so HPA scaling events do not automatically update target membership, leading to suboptimal routing and compatibility issues with EKS autoscaling configurations.
Key Concepts:
1. Load Balancer TLS Handling: Layer 4 Network Load Balancers with TCP listeners forward traffic without TLS termination, preserving end-to-end encryption, while Application Load Balancers (layer 7) and NLBs with TLS listeners terminate TLS at the load balancer, decrypting traffic before forwarding. This is a critical distinction for use cases requiring end-to-end encryption and mTLS.
2. AWS Load Balancer Controller for EKS: This open-source controller manages AWS load balancers for EKS clusters, supporting IP target mode that registers individual pod IPs directly as load balancer targets. It automatically updates target membership as pods are created or deleted by Kubernetes orchestration, including scaling events from the Horizontal Pod Autoscaler.
3. Mutual TLS (mTLS) Requirements: mTLS requires unbroken TLS negotiation directly between the client and backend service to support two-way certificate authentication. Any intermediate system that terminates TLS breaks this flow, as it becomes the endpoint for TLS negotiation instead of the backend service.
References:
AWS Load Balancer Controller,
https://docs.aws.amazon.com/eks/latest/userguide/aws-load-balancer-controller.html
Network Load Balancer Listeners,
https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-listeners.html