This repository demonstrates a production-grade DevOps pipeline for deploying a containerized Go application onto Amazon EKS, using Terraform for Infrastructure as Code, GitOps (Argo CD) for deployments, and Kubernetes add-ons like Cluster Autoscaler and AWS Load Balancer Controller.
It showcases end-to-end automation:
- Provisioning cloud infrastructure (VPC, subnets, EKS, IAM roles)
- Deploying workloads with Helm and GitOps
- Scaling clusters automatically
- Exposing services via AWS ALB
- Managing deployments with ArgoCD
This project highlights modern DevOps + Cloud Native practices: IaC, GitOps, CI/CD, Observability, and Scalability.
+------------------------------------------------------------+
| VPC (10.0.0.0/16) |
| |
| π Internet Gateway (IGW) |
| | |
| +----------------------+ +----------------------+ |
| | Public Subnet A | | Public Subnet B | |
| | (10.0.0.0/19) | | (10.0.32.0/19) | |
| | Load Balancers (ALB) | | Load Balancers (ALB) | |
| +----------------------+ +----------------------+ |
| | | |
| +-----------+-----------+ |
| | |
| π NAT Gateway |
| | |
| +----------------------+ +----------------------+ |
| | Private Subnet A | | Private Subnet B | |
| | (10.0.64.0/19) | | (10.0.96.0/19) | |
| | EKS Worker Nodes | | EKS Worker Nodes | |
| +----------------------+ +----------------------+ |
| |
+------------------------------------------------------------+
Components:
- VPC + Subnets (Terraform
vpc.tf) - EKS Cluster + Node Groups (Terraform
eks.tf) - IAM Roles for Service Accounts (IRSA for Autoscaler & ALB Controller)
- Cluster Autoscaler (Helm chart)
- AWS Load Balancer Controller (Helm chart)
- Argo CD (GitOps controller for app deployments)
- Terraform β Infrastructure as Code (VPC, EKS, IAM, etc.)
- AWS EKS β Managed Kubernetes control plane
- Helm β Kubernetes package management
- Argo CD β GitOps-based Continuous Delivery
- Cluster Autoscaler β Dynamic scaling of worker nodes
- AWS Load Balancer Controller β ALB/NLB for Kubernetes Ingress
- GitHub Actions β CI/CD pipeline automation
- AWS CLI v2 installed & configured
- Terraform >= 1.13.0
- kubectl >= 1.32
- helm >= 3.0
git clone https://github.com/heschmat/devops-eks-portfolio.git
cd devops-eks-portfolioterraform init
terraform apply -var="eks_admin_principal_arn=arn:aws:iam::<account_id>:user/<username>"This provisions:
- VPC with public/private subnets
- EKS cluster with managed node groups
- IAM roles for autoscaler + ALB
aws eks update-kubeconfig --name static-go-app --region us-east-1Terraform will install via Helm:
- Cluster Autoscaler
- AWS Load Balancer Controller
- Argo CD
- GitHub Actions pipeline builds & pushes Docker images to ghcr.io
- Argo CD pulls manifests from GitHub and deploys to EKS.
- Autoscaler adjusts worker nodes based on workload.
- ALB exposes services externally.
- π DevSecOps: Add security scanning (Trivy, Snyk).
- π Observability: Add Prometheus + Grafana dashboards.
- π€ AI/Ops: Experiment with AI-driven anomaly detection & auto-remediation.
- π Multi-cloud: Extend Terraform to Azure/GCP for hybrid workloads!!!
Heschmat DevOps Engineer | Cloud | Kubernetes | Terraform | GitOps