Amazon Load Balancing and Tetrate Service Express Integration
Deploy and configure Amazon Load Balancers
Tetrate Service Express (TSE) can automatically provision Amazon Load Balancers on behalf of external-facing (service type: LoadBalancer) services. A use case for this integration is described in the publish a service Getting Started example.
How does the Load Balancing integration work?
TSE determines if you have deployed AWS Load Balancer Controller in each EKS cluster. If AWS Load Balancer Controller is present, TSE will generate configuration annotations for this; otherwise, TSE will fall back to the legacy AWS cloud provider load balancer controller.
Tetrate recommends installing AWS Load Balancer Controller on each workload cluster.
For more background information, check out the Amazon resource Network load balancing on Amazon EKS.
With either load balancer controller, TSE selects AWS Network Load Balancer by default for external-facing services. Network Load Balancer provides the best level of compatibility with TSE, and is a cost-effective and lightweight solution.
You can customise the load balancing options using annotations service.beta.kubernetes.io
. These are documented here:
- AWS Load Balancer Controller annotations
- AWS cloud provider load balancer controller annotations (legacy, see compatibility notes)
For example, when deploying an Ingress Gateway, you can enable cross-zone load balancing and support external (internet) clients as follows:
apiVersion: install.tetrate.io/v1alpha1
kind: IngressGateway
metadata:
name: bookinfo-ingress-gw
namespace: bookinfo
spec:
kubeSpec:
service:
type: LoadBalancer
annotations:
service.beta.kubernetes.io/aws-load-balancer-name: my-bookinfo-gw-load-balancer
service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing
service.beta.kubernetes.io/aws-load-balancer-attributes: "load_balancing.cross_zone.enabled=true"