Kubernetes End-to-End Project: EKS Installation and Application Deployment with Ingress
Before starting, ensure the following tools are installed and configured on your system:
- kubectl: To interact with the Kubernetes cluster.
- eksctl: A command-line tool to manage EKS clusters efficiently.
- AWS CLI: To interact with AWS resources programmatically. Ensure these tools are properly installed and authenticated with AWS credentials.
We'll create the EKS cluster using eksctl, a preferred tool in many organizations for its automation
of manual configurations.
Run the following command to create the cluster with Fargate:
eksctl create cluster \
--name my-new-cluster \
--region us-east-1 \
--fargateThis command automatically handles configurations that would otherwise be done manually through
the AWS console.
Once the cluster is created, you'll see confirmation similar to the screenshot below.

Update the kubectl context to interact with the newly created cluster:
aws eks update-kubeconfig \
--name my-new-cluster \
--region us-east-1Create a Fargate profile for application deployment. This profile defines namespaces for pods running on Fargate:
eksctl create fargateprofile \
--cluster my-new-cluster \
--region us-east-1 \
--name alb-sample-app \
--namespace game-2048The output will confirm the successful creation of the Fargate profile, including details about the
namespaces.

Deploy a sample gaming application along with its service and ingress configuration using the provided YAML file:
kubectl apply -f
https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.5.4/docs/exampl
es/2048/2048_full.yamlThis file can be viewed in a browser to understand its structure. Ingress is used to route traffic within the cluster to the appropriate services.
Before installing the AWS Load Balancer (ALB) controller, create an IAM OIDC provider:
eksctl utils associate-iam-oidc-provider \
--cluster my-new-cluster \
--approveThis step integrates the IAM identity provider with the cluster.
Download the IAM policy:
curl -O
https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.5.4/docs/install/i
am_policy.jsonCreate the policy in AWS:
aws iam create-policy \
--policy-name AWSLoadBalancerControllerIAMPolicy \
--policy-document file://iam_policy.jsonAssociate an IAM role with the ALB controller service account:
eksctl create iamserviceaccount \
--cluster=my-new-cluster \
--namespace=kube-system \
--name=aws-load-balancer-controller \
--role-name AmazonEKSLoadBalancerControllerRole \
--attach-policy-arn=arn:aws:iam::<your-aws-account-id>:policy/AWSLoadBalancerControllerIAMPoli
cy \
--approve- Add the Helm repository:
helm repo add eks https://aws.github.io/eks-charts- Update the repository:
helm repo update eks- Install the ALB controller:
helm install aws-load-balancer-controller eks/aws-load-balancer-controller \
-n kube-system \
--set clusterName=my-new-cluster \
--set serviceAccount.create=false \
--set serviceAccount.name=aws-load-balancer-controller \
--set region=us-east-1 \
--set vpcId=vpc-00d5e88fcbe0493e6Check if all the pods in the kube-system namespace are running:
kubectl get pods -n kube-system- Navigate to the Load Balancer section in the AWS Management Console.
- Locate the DNS name of the ALB created for your application.
- Copy the DNS name and paste it into your browser's address bar.
You should see the deployed game application interface.

This project demonstrates the following:
- Setting up an Amazon EKS cluster using
eksctl. - Configuring and deploying a sample application on Kubernetes with Fargate.
- Integrating AWS ALB for traffic management within the cluster.
- Accessing the deployed application through an ingress controller. This comprehensive workflow highlights your proficiency in Kubernetes and AWS, making it a valuable addition to your professional portfolio.
