AWS Elastic Kubernetes Services (EKS)

What is Amazon EKS?

Amazon EKS is a managed Kubernetes service that makes it easy to run Kubernetes on AWS without needing to install and operate your own Kubernetes control plane or nodes. EKS is certified Kubernetes conformant, so you can use existing tooling and plugins from the Kubernetes community.

Deploying and Managing Applications on Amazon EKS

Amazon Elastic Kubernetes Service (EKS) simplifies the process of running Kubernetes on AWS without needing to install and operate your own Kubernetes control plane. In this blog post, we will cover the basics of Amazon EKS, its benefits, and a step-by-step guide to deploying a sample application.

Benefits of Amazon EKS

  1. Fully Managed: AWS handles the heavy lifting of managing the Kubernetes control plane, ensuring high availability and scalability.
  2. Secure: Integrates with AWS Identity and Access Management (IAM), AWS Virtual Private Cloud (VPC), and AWS Key Management Service (KMS) for secure access control.
  3. Scalable: Easily scales your applications up and down based on demand, providing flexibility and cost efficiency.
  4. Compatible: Works with your existing Kubernetes applications and tools, meaning you can migrate your workloads without significant changes.

Sample Architecture

Below is the sample architecture that will create an EKS Cluster and deploy a sample microservice.

<<Architecture Diagram>>

Prerequisites

Before we begin, make sure you have the following:

  • An AWS account.
  • AWS CLI installed and configured.
  • kubectl command-line tool installed.
  • eksctl command-line tool installed.

Step-by-Step Guide to Deploy a Sample Application on Amazon EKS

Step 1: Create an EKS Cluster

First, we’ll use eksctl to create a new EKS cluster. Open your terminal and run the following command:

eksctl create cluster –name my-cluster –region us-west-2 –nodegroup-name my-nodes –node-type t3.medium –nodes 3 –nodes-min 1 –nodes-max 4

This command creates a cluster named my-cluster in the us-west-2 region with a node group named my-nodes consisting of three t3.medium instances.

Step 2: Configure kubectl for EKS

After the cluster is created, you need to configure kubectl to interact with the EKS cluster. Run the following command:

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

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

Step 3: Deploy a Sample Application

Now that your cluster is set up, let’s deploy a sample Nginx application. Create a file named nginx-deployment.yaml with the following content:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      – name: nginx
        image: nginx:1.19.6
        ports:
        – containerPort: 80

Deploy the application by running:

kubectl apply -f nginx-deployment.yaml

Step 4: Expose the Deployment

Next, expose the Nginx deployment to make it accessible. Create a file named nginx-service.yaml with the following content:

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  type: LoadBalancer
  selector:
    app: nginx
  ports:
  – protocol: TCP
    port: 80
    targetPort: 80

Apply the service configuration:

kubectl apply -f nginx-service.yaml

Step 5: Verify the Deployment

To verify that the Nginx deployment is up and running, you can run:

kubectl get deployments
kubectl get pods
kubectl get services

The output should show the Nginx pods running and the service exposing them.

Step 6: Cleanup

Once you’re done with the tutorial, you can delete the resources to avoid incurring charges. First, delete the service and deployment:

kubectl delete -f nginx-service.yaml
kubectl delete -f nginx-deployment.yaml

Then, delete the EKS cluster:

eksctl delete cluster –name my-cluster

Conclusion

Amazon EKS provides a powerful and flexible way to run Kubernetes applications on AWS. With its managed control plane, integration with AWS services, and scalability, EKS is an excellent choice for deploying containerized applications. This guide covered the basics of creating an EKS cluster, deploying a sample application, and managing Kubernetes resources. Happy deploying!