AWS Clusters modules & deployments

Table of contents

Introduction

This repository contains multiple approaches to build and deploy Clusters in AWS, using ECS & EKS services.

As part of the approaches, you can get the following services usages:

  • Cluster using EKS service
  • Node groups with EC2 provisioning
  • AutoScaler to manage horizontal escalation in Node groups
  • Fargate profiles for specific namespaces and/or pods
  • Load Balancer using ALB or NLB
  • TLS certificates for Load Balancer using ACM
  • Global static IP for Application Load Balancer using Global Accelerator
  • Elastic IPs as static IPs for Network Load Balancer
  • ECS Cluster with Elastic IPs and Network Load Balancer using FARGATE

Prerequisites

  • AWS account (obviously). Recommended to use non-root user for credentials
  • AWS-CLI
  • Terraform
  • kubectl
  • TLS certificates (ssl_key, ssl_body, and ssl_chain)

Getting started

Modules

  • ECS Cluster => Create a Cluster using ECS service with a Network Load Balancer for connect a pair of Elastic IPs to be used in an external DNS
  • EKS Cluster => Create a Cluster using EKS service (Kubernetes) with EC2 node pool and a Fargate profile to be used in combination of an Application Load Balancer or a Network Load Balancer
  • EKS Application Load Balancer => Create an Application Load Balancer to allow public traffic to access the EKS cluster as an Ingress, using Global Accelerator to expose the public IPs
  • Global Accelerator => Create an Accelerator using the Global Accelerator service to create a pair of Public IPs with high availability and AnyCast replication
  • EKS Network Load Balancer => Create a Network Load Balancer to allow public traffic to access the EKS cluster, using a pair of Elastic IPs. The Ingress used is a NGINX Controller
  • Elastic IPs => Create a pair of Public IPs to connect an ECS or EKS cluster to external traffic

Samples

Resources