Title: How to Spin Up an AWS EKS Cluster Using Terraform
Tags: aws, eks, containers, terraform
Published: 2023-09-11 10:01:36


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jhvlw2967id2n45fcsp5.jpeg)
Introduction:

Elastic Kubernetes Service (EKS) is Amazon's managed Kubernetes solution that makes it easier to run Kubernetes on AWS without managing the underlying infrastructure. In this post, we'll walk through the process of deploying an EKS cluster using Terraform.

Prerequisites:

An AWS account
AWS CLI installed and configured
Terraform installed
kubectl installed

Step 1: Set up Terraform:

Before you can use Terraform to create resources in AWS, ensure you've set it up correctly:

`$ terraform init
`



Sure! Here's a basic outline and content for a Dev.to post on creating an AWS EKS Cluster using Terraform:

Title: How to Spin Up an AWS EKS Cluster Using Terraform

Introduction:
Elastic Kubernetes Service (EKS) is Amazon's managed Kubernetes solution that makes it easier to run Kubernetes on AWS without managing the underlying infrastructure. In this post, we'll walk through the process of deploying an EKS cluster using Terraform.

Prerequisites:

An AWS account
AWS CLI installed and configured
Terraform installed
kubectl installed

Step 1: Set up Terraform:

Before you can use Terraform to create resources in AWS, ensure you've set it up correctly:

`$ terraform init`


Step 2: Define Your Infrastructure:

Create a file named eks-cluster.tf and define your AWS provider and EKS resources:

```
provider "aws" {
  region = "us-west-2"
}

module "eks" {
  source          = "terraform-aws-modules/eks/aws"
  cluster_name    = "my-cluster"
  cluster_version = "1.20"
  subnets         = ["subnet-abcde012", "subnet-bcde012a", "subnet-cde012ab"]

  node_groups = {
    eks_nodes = {
      desired_capacity = 2
      max_capacity     = 3
      min_capacity     = 1

      instance_type = "m5.large"
      key_name      = var.key_name
    }
  }
}
```


Step 3: Initialize and Apply:

```
$ terraform init
$ terraform apply
```

After running the terraform apply command, Terraform will show you the changes it plans to make and ask for confirmation. If everything looks good, type yes.


Sure! Here's a basic outline and content for a Dev.to post on creating an AWS EKS Cluster using Terraform:

Title: How to Spin Up an AWS EKS Cluster Using Terraform

Introduction:
Elastic Kubernetes Service (EKS) is Amazon's managed Kubernetes solution that makes it easier to run Kubernetes on AWS without managing the underlying infrastructure. In this post, we'll walk through the process of deploying an EKS cluster using Terraform.

Prerequisites:

An AWS account
AWS CLI installed and configured
Terraform installed
kubectl installed

Step 1: Set up Terraform:
Before you can use Terraform to create resources in AWS, ensure you've set it up correctly:

```
$ terraform init
```

Step 2: Define Your Infrastructure:

Create a file named eks-cluster.tf and define your AWS provider and EKS resources:

```
provider "aws" {
  region = "us-west-2"
}

module "eks" {
  source          = "terraform-aws-modules/eks/aws"
  cluster_name    = "my-cluster"
  cluster_version = "1.20"
  subnets         = ["subnet-abcde012", "subnet-bcde012a", "subnet-cde012ab"]

  node_groups = {
    eks_nodes = {
      desired_capacity = 2
      max_capacity     = 3
      min_capacity     = 1

      instance_type = "m5.large"
      key_name      = var.key_name
    }
  }
}
```

Step 3: Initialize and Apply:

```
$ terraform init
$ terraform apply
```

After running the terraform apply command, Terraform will show you the changes it plans to make and ask for confirmation. If everything looks good, type yes.

Step 4: Configure kubectl:
Once your EKS cluster is up, you need to configure kubectl:

```
$ aws eks --region us-west-2 update-kubeconfig --name my-cluster
```

Step 5: Verify:

```
$ kubectl get nodes
```

Conclusion:

Using Terraform, you can easily deploy an EKS cluster and manage its lifecycle. This method is repeatable, version-controlled, and can be extended with more advanced features and configurations.

Further Reading:

[Terraform AWS EKS Introduction](https://registry.terraform.io/modules/terraform-aws-modules/eks/aws/latest)
[Amazon EKS documentation](https://docs.aws.amazon.com/eks/index.html)

You can now use kubectl to view your nodes: