DEV Community

Yash Sonawane
Yash Sonawane

Posted on

DevOps Made Simple: A Beginner’s Guide to How to Set Up Kubernetes on AWS Using EKS

Introduction

Kubernetes has become the go-to orchestration tool for deploying and managing containerized applications at scale. If you're stepping into the world of DevOps, learning how to set up Kubernetes on AWS using Amazon Elastic Kubernetes Service (EKS) is a valuable skill. AWS EKS simplifies Kubernetes deployment by handling cluster management, security, and scalability.

In this guide, we will walk you through setting up Kubernetes on AWS using EKS step by step. Whether you're a beginner or an aspiring DevOps engineer, this blog will help you understand the concepts and practical implementation.


Understanding Kubernetes and AWS EKS

What is Kubernetes?

Kubernetes (K8s) is an open-source container orchestration platform that automates the deployment, scaling, and management of containerized applications.

What is AWS EKS?

Amazon Elastic Kubernetes Service (EKS) is a managed Kubernetes service by AWS that makes it easier to run Kubernetes workloads without handling the control plane manually.


Prerequisites

Before we begin, ensure you have:

  • An AWS account
  • AWS CLI installed and configured
  • kubectl (Kubernetes CLI) installed
  • eksctl (CLI tool for EKS) installed

Step-by-Step Guide to Setting Up Kubernetes on AWS Using EKS

Step 1: Create an IAM Role for EKS

EKS requires an IAM role with necessary permissions.

aws iam create-role \
  --role-name eksClusterRole \
  --assume-role-policy-document file://eks-trust-policy.json
Enter fullscreen mode Exit fullscreen mode

Attach the required policies:

aws iam attach-role-policy \
  --role-name eksClusterRole \
  --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy
Enter fullscreen mode Exit fullscreen mode

Step 2: Create an EKS Cluster

Run the following command to create an EKS cluster using eksctl:

eksctl create cluster \
  --name my-eks-cluster \
  --region us-east-1 \
  --nodegroup-name standard-workers \
  --node-type t3.medium \
  --nodes 2
Enter fullscreen mode Exit fullscreen mode

This command will create a cluster named my-eks-cluster with two worker nodes.

Step 3: Verify the Cluster Setup

After creation, check if your cluster is running:

aws eks --region us-east-1 update-kubeconfig --name my-eks-cluster
kubectl get nodes
Enter fullscreen mode Exit fullscreen mode

You should see a list of worker nodes.

Step 4: Deploy a Sample Application

Create a sample deployment YAML file (nginx-deployment.yaml):

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80
Enter fullscreen mode Exit fullscreen mode

Deploy the application:

kubectl apply -f nginx-deployment.yaml
kubectl get pods
Enter fullscreen mode Exit fullscreen mode

Step 5: Expose the Application

Create a service to expose the application:

kubectl expose deployment nginx-deployment --type=LoadBalancer --port=80
Enter fullscreen mode Exit fullscreen mode

Get the external IP:

kubectl get services
Enter fullscreen mode Exit fullscreen mode

Once the LoadBalancer is provisioned, you can access the application using the provided external IP.


Real-World Applications of Kubernetes on AWS

  1. Microservices Deployment: Companies like Netflix and Airbnb use Kubernetes for microservices architecture.
  2. Auto-scaling Applications: Automatically scale workloads based on traffic.
  3. CI/CD Pipelines: Kubernetes is often used in DevOps CI/CD pipelines for automated deployments.
  4. Hybrid Cloud Deployments: AWS EKS allows seamless hybrid cloud Kubernetes management.

Common Mistakes & Best Practices

Mistakes to Avoid

  • Not Configuring IAM Properly: Ensure your IAM role has necessary permissions.
  • Ignoring Security Best Practices: Use RBAC (Role-Based Access Control) and AWS Secrets Manager.
  • Overprovisioning Resources: Choose optimal instance types to avoid unnecessary costs.

Best Practices

  • Use Auto Scaling Groups: Enable Kubernetes autoscaling for cost efficiency.
  • Monitor Cluster Health: Use AWS CloudWatch and Prometheus for monitoring.
  • Automate Deployments: Implement GitOps with ArgoCD for streamlined deployments.

Conclusion

Setting up Kubernetes on AWS using EKS may seem complex initially, but by following this step-by-step guide, you can deploy and manage applications efficiently. Kubernetes and AWS EKS empower DevOps engineers to build scalable, resilient, and highly available applications.

Have questions or insights to share? Drop a comment below, and let’s discuss!

🚀 Want to explore more? Check out AWS EKS Documentation for in-depth details.

Retry later

Top comments (0)

Retry later
Retry later