-
Vara Bonthu authoredVara Bonthu authored
aws-eks-accelerator-for-terraform
Main Purpose
This project provides a framework for deploying best-practice multi-tenant EKS Clusters, provisioned via Hashicorp Terraform and Helm charts on AWS.
Overview
The AWS EKS Accelerator for Terraform module helps you to provision EKS Clusters, managed node groups with on-demand and spot instances, Fargate profiles, and all the necessary plugins/add-ons for a production-ready EKS cluster. The Terraform Helm provider is used to deploy common Kubernetes add-ons with publicly available Helm Charts. This project leverages the official terraform-aws-eks module to create EKS Clusters
This framework helps you to design and create EKS clusters for different environments in various AWS accounts across multiple regions with a unique Terraform configuration and state file per EKS cluster.
-
The top-level
live
folder contains the configuration for each cluster. Each folder underlive/<region>/application
represents an EKS cluster environment(e.g., dev, test, load etc.). This folder containsbackend.conf
andbase.tfvars
, used to create a unique Terraform state for each cluster environment. Terraform backend configuration can be updated inbackend.conf
and cluster common configuration variables inbase.tfvars
-
vpc.tf
contains all VPC resources -
eks.tf
contains all EKS Cluster resources -
helm.tf
contains resources to invoke helm modules under helm folder -
modules
folder contains all the AWS resource modules -
helm
folder contains all the Helm chart modules -
examples
folder contains sample template files withbase.tfvars
which can be used to deploy clusters with multiple add-on options
EKS Cluster Deployment Options
This module provisions the following EKS resources
EKS Cluster Networking Resources
EKS Cluster resources
- EKS Cluster with multiple networking options
- EKS Addons -
- Managed Node Groups with On-Demand - AWS Managed Node Groups with On-Demand Instances
- Managed Node Groups with Spot - AWS Managed Node Groups with Spot Instances
- Fargate Profiles - AWS Fargate Profiles
- Launch Templates with SSM agent - Deployed through launch templates to Managed Node Groups
- Bottlerocket OS - Managed Node Groups with Bottlerocket OS and Launch Templates
- RBAC for Developers and Administrators with IAM roles
- Amazon Managed Service for Prometheus (AMP) - AMP makes it easy to monitor containerized applications at scale
- Self-managed Node Group with Windows support - Ability to create a self-managed node group for Linux or Windows workloads. See Windows and Linux examples.
Helm Charts
Kubernetes Addons using- Metrics Server
- Cluster Autoscaler
- AWS LB Ingress Controller
- Traefik Ingress Controller
- FluentBit to CloudWatch for Managed Node groups
- FluentBit to CloudWatch for Fargate Containers
- Agones - Host, Run and Scale dedicated game servers on Kubernetes
- Prometheus
- Kube-state-metrics
- Alert-manager
- Prometheus-node-exporter
- Prometheus-pushgateway
- OpenTelemetry
Helm Charts Modules
Helm Chart Module within this framework allows you to deploy Kubernetes apps using Terraform helm chart provider with enabled conditional parameter in base.tfvars
.
You can find the README for each Helm module with instructions on how to download the images from Docker Hub or third-party repos and upload it to your private ECR repo.
For example, ALB Ingress Controller for AWS LB Ingress Controller module.