Skip to content

AWS EKS Fargate Profile with Terraform

Step-01: Introduction

  • Run EKS Workloads on AWS Fargate

Step-02: Review Terraform Manifests

  • Update all the Kubernetes Resources (Deployments, Node Port Services, Ingress Service) with namespace = "fp-ns-app1".
  • All the Kubernetes Workloads (App1, App2 and App3) pods will be scheduled on Fargate Nodes
  • Project Folder: 06-run-on-fargate-terraform-manifests
  • c1-versions.tf
  • c2-remote-state-datasource.tf
  • c3-providers.tf
  • c4-kubernetes-app1-deployment.tf
  • c5-kubernetes-app2-deployment.tf
  • c6-kubernetes-app3-deployment.tf
    # Custom Requests for Fargate Pods in a Kubernetes Deployment 
              resources {
                requests = {
                  "cpu" = "1000m"
                  "memory" = "2048Mi" 
                }
                limits = {
                  "cpu" = "2000m"
                  "memory" = "4096Mi"
                }
              }
    
  • c7-kubernetes-app1-nodeport-service.tf
  • c8-kubernetes-app2-nodeport-service.tf
  • c9-kubernetes-app3-nodeport-service.tf
  • c10-kubernetes-ingress-service.tf
  • c11-acm-certificate.tf

Step-03: Execute Terraform Commands

# Change Directory
cd 06-run-on-fargate-terraform-manifests

# Terraform Initialize
terraform init

# Terraform Validate
terraform validate

# Terraform Plan
terraform plan

# Terraform Apply
terraform apply -auto-approve

Step-04: Verify Kubernetes Resources

# Verify Nodes
kubectl get nodes
Observation:
1. New Fargate nodes will be created

# Verify Deployments
kubectl -n fp-ns-app1 get deploy

# Verify Pods
kubectl -n fp-ns-app1 get pods

# Verify Services
kubectl -n fp-ns-app1 get svc

# Verify Ingress Service
kubectl -n fp-ns-app1 get ingress

# Access Application
http://fargate-profile-demo-501.stacksimplify.com
http://fargate-profile-demo-501.stacksimplify.com/app1/index.html
http://fargate-profile-demo-501.stacksimplify.com/app2/index.html

Step-05: Review Pod Memory and CPU - Default Allocated

  • Fargate Pod vCPU Value vs Memory Value
    # List Pods
    kubectl -n fp-ns-app1 get pods
    
    # Describe Pod
    kubectl -n fp-ns-app1 describe pod <APP1-POD-NAME>
    kubectl -n fp-ns-app1 describe pod app1-nginx-deployment-777cddb9b4-rhrpq
    Observation:
    1. Review Annotations section
    
    # Sample: Default Capacity Allocated
    Annotations:          CapacityProvisioned: 0.25vCPU 0.5GB
    

Step-06: Review Pod Memory and CPU - Custom Kubernetes Requests and Limits

# List Pods
kubectl -n fp-ns-app1 get pods

# Describe Pod
kubectl -n fp-ns-app1 describe pod <APP3-POD-NAME>
kubectl -n fp-ns-app1 describe pod app3-nginx-deployment-b54c5b6bd-m6hh9
Observation:
1. Review Annotations section

# Sample: Customized Capacity Allocated for Fargate Pod
CapacityProvisioned: 1vCPU 3GB

Step-07: Clean-Up

# Change Directory
cd 06-run-on-fargate-terraform-manifests

# Destroy Resources
terraform apply -destroy -auto-approve
rm -rf .terraform*

Step-08: Clean-Up EKS Cluster, LBC Controller, ExternalDNS and Fargate Profile

  • Destroy the Terraform Projects in below four folders
  • Terraform Project Folder: 01-ekscluster-terraform-manifests
  • Terraform Project Folder: 02-lbc-install-terraform-manifests
  • Terraform Project Folder: 03-externaldns-install-terraform-manifests
  • Terraform Project Folder: 04-fargate-profiles-terraform-manifests
  • We are going to use them for all upcoming Usecases.
  • Destroy Resorces Order
  • 04-fargate-profiles-terraform-manifests
  • 03-externaldns-install-terraform-manifests
  • 02-lbc-install-terraform-manifests
  • 01-ekscluster-terraform-manifests
    ##############################################################
    ## Delete Fargate Profile
    # Change Directory
    cd 04-fargate-profiles-terraform-manifests
    
    # Terraform Destroy
    terraform init
    terraform apply -destroy -auto-approve
    ##############################################################
    ## Destroy External DNS
    # Change Directroy
    cd 03-externaldns-install-terraform-manifests
    
    # Terraform Destroy
    terraform init
    terraform apply -destroy -auto-approve
    ##############################################################
    ## Destroy  LBC
    # Change Directroy
    cd 02-lbc-install-terraform-manifests
    
    # Terraform Destroy
    terraform init
    terraform apply -destroy -auto-approve
    ##############################################################
    ## Destroy EKS Cluster
    # Change Directroy
    cd 01-ekscluster-terraform-manifests
    
    # Terraform Destroy
    terraform init
    terraform apply -destroy -auto-approve
    ##############################################################
    
🎉 New Course
Ultimate DevOps Real-World Project Implementation on AWS
$15.99 $84.99 81% OFF
DEVOPS2026FEB
Enroll Now on Udemy →
🎉 Offer