Terraform

Task 3: Deploying an EKS Cluster Using Terraform

Terraform provides Infrastructure as Code (IaC) to deploy and manage EKS clusters efficiently.


Step 1: Install Terraform

Commands

curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
sudo apt-add-repository "deb https://apt.releases.hashicorp.com $(lsb_release -cs) main"
sudo apt update && sudo apt install terraform
terraform -version

Common Issues & Solutions

Issue
Cause
Solution

terraform: command not found

Path issue.

Run export PATH=$PATH:/usr/local/bin or reinstall Terraform.

Error: Unsupported Terraform version

Older Terraform version.

Run terraform -version and upgrade if needed.


Step 2: Set Up AWS CLI & Configure Credentials

Commands

aws configure
  • Enter Access Key, Secret Key, Region (us-east-2), and output format (json).

Common Issues & Solutions

Issue
Cause
Solution

Error: No AWS credentials found

AWS CLI is not configured.

Run aws configure again or check ~/.aws/credentials.

AccessDenied: Not authorized to perform this action

IAM user lacks permissions.

Attach AdministratorAccess or AmazonEKSFullAccess to IAM user.


Step 3: Create Terraform Configuration for EKS

Commands


Step 4: Define Terraform Files

provider.tf - Configure AWS Provider

variables.tf - Define Input Variables

main.tf - Define EKS Cluster & Nodes

outputs.tf - Get Cluster Details

Common Issues & Solutions

Issue
Cause
Solution

Error: No module found

Missing Terraform module.

Run terraform init to download modules.

No valid credential found

AWS CLI not configured.

Run aws configure again.


Step 5: Initialize Terraform & Deploy Cluster

Commands

Common Issues & Solutions

Issue
Cause
Solution

Error: Provider not installed

Terraform providers missing.

Run terraform init to install.

Insufficient IAM permissions

AWS user lacks permissions.

Attach AdministratorAccess to the user.

Resource already exists

EKS cluster name conflict.

Use a different cluster_name in variables.tf.


Step 6: Configure kubectl to Access EKS

Commands

Common Issues & Solutions

Issue
Cause
Solution

Error from server (Unauthorized)

IAM user lacks EKS access.

Attach AmazonEKSClusterPolicy to the IAM role.

Cluster unreachable

Cluster is still provisioning.

Wait a few minutes and retry kubectl get nodes.


Step 7: Deploy a Sample App

Commands

Common Issues & Solutions

Issue
Cause
Solution

Service stuck in Pending

AWS Load Balancer missing.

Install ALB Ingress Controller or use --type=NodePort.


Step 8: Destroy the Cluster

Command

Common Issues & Solutions

Issue
Cause
Solution

VPC deletion failed

EKS leaves VPC intact.

Delete subnets manually from AWS Console.


Summary

Terraform InstalledEKS Cluster CreatedWorker Nodes AddedSample App DeployedCluster Destroyed When Done


Last updated