Deploying a Kubernetes cluster on AWS using EKS (Amazon Elastic Kubernetes Service) and configuring a load balancer for it is a common task. `eksctl` is a command-line tool provided by AWS to simplify the creation and management of EKS clusters. In this blog, we'll walk through the steps to create an EKS cluster using `eksctl` and configure a load balancer for it.


                        Fig 1:

### Prerequisites:

1. An AWS account with the necessary permissions to create EKS clusters.

2. AWS CLI installed and configured with appropriate access credentials.

3. `eksctl` installed on your local machine. You can install it using the following command:


```bash

brew install eksctl

```

### Step 1: Create an EKS Cluster

First, create a file named `cluster.yaml` with the following configuration:


```yaml

apiVersion: eksctl.io/v1alpha5

kind: ClusterConfig


metadata:

  name: my-cluster

  region: us-west-2


nodeGroups:

  - name: ng-1

    instanceType: t3.medium

    desiredCapacity: 2

```


This configuration specifies the cluster name, AWS region, and node group settings.


Then, run the following command to create the cluster:


```bash

eksctl create cluster -f cluster.yaml

```


This command will create an EKS cluster named `my-cluster` with a node group consisting of two `t3.medium` instances in the `us-west-2` region.


### Step 2: Deploy an Application to the Cluster


Next, let's deploy a sample application to the EKS cluster. For demonstration purposes, we'll deploy a simple NGINX web server.


Create a file named `nginx-deployment.yaml` with the following content:


```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

```


Run the following command to deploy the NGINX application:


```bash

kubectl apply -f nginx-deployment.yaml

```


### Step 3: Expose the Deployment with a Load Balancer


To expose the NGINX deployment to the internet, we'll create a Kubernetes Service of type `LoadBalancer`.


Create a file named `nginx-service.yaml` with the following content:


```yaml

apiVersion: v1

kind: Service

metadata:

  name: nginx-service

spec:

  selector:

    app: nginx

  ports:

    - protocol: TCP

      port: 80

      targetPort: 80

  type: LoadBalancer

```


Run the following command to create the Service:


```bash

kubectl apply -f nginx-service.yaml

```


### Step 4: Verify the Load Balancer


Run the following command to get the external IP address of the Load Balancer:


```bash

kubectl get svc nginx-service

```


Access the NGINX web server by visiting the external IP address in your web browser.


### Conclusion


In this blog post, we've demonstrated how to create an EKS cluster using `eksctl`, deploy an application to the cluster, and expose it to the internet using a Load Balancer. This is a basic example, but it provides a foundation for deploying and managing applications on EKS. You can further customize and scale your deployments according to your requirements.