Deployed an open-source 2048 game application to Amazon EKS using AWS Fargate for serverless compute management. Configured IAM roles, OIDC provider, and service accounts to securely integrate the AWS Load Balancer Controller with Kubernetes. Set up ALB ingress controller to manage external HTTPS traffic routing via Ingress resources. Installed and configured Helm to deploy the ALB controller and expose the application via Ingress, enabling external HTTP access through an ALB.
Checkout my blog for step by step guide -> Deploying the Classic 2048 Game on AWS EKS.
- AWS CLI installed and configured
kubectlinstalledeksctlinstalled- Helm installed (for the AWS Load Balancer Controller)
- AWS Account IAM permissions
See installation.md for details.
aws configure
You'll be prompted to enter:
AWS Access Key ID ~ Your Access Key
AWS Secret Access Key ~ Your Secret Access Key
Default region (e.g., us-east-1)
eksctl create cluster --name cluster-2048-game --region us-east-1 --fargate
aws eks update-kubeconfig --name cluster-2048-game --region us-east-1
eksctl create fargateprofile \
--cluster cluster-2048-game \
--region us-west-1 \
--name alb-sample-app \
--namespace game-2048
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.5.4/docs/examples/2048/2048_full.yaml
eksctl utils associate-iam-oidc-provider --cluster cluster_name --approve --region region_name
curl -O <https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.11.0/docs/install/iam_policy.json>
aws iam create-policy \
--policy-name AWSLoadBalancerControllerIAMPolicy \
--policy-document file://iam_policy.json
eksctl create iamserviceaccount \\
--cluster=<your-cluster-name> \\
--namespace=kube-system \\
--name=aws-load-balancer-controller \\
--role-name AmazonEKSLoadBalancerControllerRole \\
--attach-policy-arn=arn:aws:iam::<your-aws-account-id>:policy/AWSLoadBalancerControllerIAMPolicy \\
--approve
Remember to replace with your actual AWS account ID.
# Add the EKS chart repository
helm repo add eks <https://aws.github.io/eks-charts>
# Update the repository
helm repo update eks
# Install the controller
helm install aws-load-balancer-controller eks/aws-load-balancer-controller -n kube-system \\
--set clusterName=<your-cluste-name> \\
--set serviceAccount.create=false \\
--set serviceAccount.name=aws-load-balancer-controller \\
--set region=us-east-1 \\
--set vpcId=<your-vpc-id>
kubectl get deployment -n kube-system aws-load-balancer-controller
kubectl get pods -n kube-system -w
kubectl get ingress -n game-2048
The output should include an ADDRESS field with a DNS name. Open this address in your web browser, and you should see the 2048 game running!
eksctl delete cluster --name demo-cluster --region us-east-1
It can take time sometimes to delete everything, we need to be patient here
For billing Purposes to not get charged, you can check the following and delete anything related to the creation of the services :
- VPC
- Cloud Watch - logs
- EKS
- ECR
- security groups
- IAM Access Keys

