DEV Community

Ravindu Fernando
Ravindu Fernando

Posted on • Edited on

A Production Ready EKS Deployment with IaC & GitOps - Part 1 - Introduction

Introduction to AWS EKS Deployment

This series is designed to take you through the process of deploying a production-ready application on AWS EKS (Elastic Kubernetes Service) from scratch. Whether you're a beginner developer or someone looking to refine your skills, this series will help you confidently set up and deploy your application in the least amount of time, without the need to dig through extensive documentation.

What We Will Cover

Series Overview

This article series will guide you through deploying and managing an AWS EKS cluster, integrating essential services, and automating your workflows. Below is an overview of the steps we will take.

1. Configuring Terraform Backend and Validating Pre-requisites

Before deploying our infrastructure, we'll configure the Terraform backend to store our state securely and validate pre-requisites to ensure we have the required permissions and dependencies in place.

2. Provisioning an AWS EKS Cluster with Terraform

Using Terraform, we'll provision an AWS EKS cluster along with essential resources such as Elastic File System (EFS), Storage Classes (SC), and other networking components.

3. Setting Up Cluster Autoscaler

We'll configure Cluster Autoscaler, which dynamically adjusts the number of nodes in your cluster based on workload demands, optimizing resource usage and cost.

4. Deploying & Configuring Karpenter for Node Provisioning

We will deploy Karpenter, an advanced node provisioning tool for Kubernetes, and set up IAM roles, instance profiles, and policies to enable automated scaling.

5. Enabling CloudWatch Container Insights for Monitoring

Once Karpenter is deployed, we'll enable AWS CloudWatch Container Insights to gain visibility into cluster metrics, logs, and resource utilization.

6. Setting Up an Ingress Controller on EKS

We'll configure an Ingress Controller, a crucial component for managing external access to services within the cluster, ensuring your applications are securely exposed.

7. Installing ArgoCD for GitOps-based Deployment

We'll install and configure ArgoCD, a declarative GitOps tool that automates deployments and ensures version-controlled application rollouts.

8. Using EFS Mounts in Containers

You'll learn how to create Persistent Volumes (PVs) and Persistent Volume Claims (PVCs) to mount AWS EFS inside your containers, enabling stateful applications.

9. Deploying a Sample Application with ArgoCD

With our infrastructure ready, we'll deploy a sample application using ArgoCD to demonstrate continuous deployment and GitOps practices.

10. Configuring Application Load Balancer as an Ingress Controller

We'll set up an AWS Application Load Balancer (ALB) as an ingress solution, allowing efficient routing of external traffic to your services.

11. DNS Propagation to Application Load Balancer from a Custom Domain

You'll learn how to configure DNS propagation to map your custom domain to the ALB, making your application accessible via a user-friendly URL.

12. Adding SSL Certificates for Secure Communication

To secure traffic to your application, we'll integrate SSL/TLS certificates, ensuring encrypted connections and HTTPS accessibility.


This structured approach ensures you gain a comprehensive understanding of AWS EKS, from cluster setup to automated deployment and monitoring. Stay tuned as we explore each topic in depth and build a fully functional EKS environment from the ground up! 🚀

Top comments (0)