This is my final project on learning Kubernetes and deploying the k8s cluster to AWS, during my study at George Brown College. This is somewhat the requirements look like:

<aside>

High-Level Tasks

  1. Setup AWS Account, create a new ECR, create a Dockerfile for your web application, then push it to ECR
  2. Create a EKS cluster, then pull images from ECR to deploy the containerized web application to the EKS cluster
  3. Export your application to the internet, use CloudFront to provide global accessibility
  4. Scale your web application using HPA and Cluster Autoscaler

Optional Tasks

  1. Use CloudWatch to monitor the performance and health of the containerized web app
  2. Use CodeBuild & CodePipeline to automate the deployment process and manage the container lifecycles
  3. Use Istio to manage and secure communication between microservices running in the containerized web app </aside>

If you prefer a walkthrough using Terraform, check it out here (TBC 🚧):

Here are the applications that I used to deploy. The main repository also contains manifests for EKS cluster and the eksctl cluster config file itself:

https://github.com/MortredN/eks-demo-coffeeshop


Walkthrough

Step 1: Build images with Dockerfile, then publish to ECR

Step 2: Create a VPC and its resources

Step 3: Create the ekstcl bastion host & the private EKS cluster

Step 4: Create the RDS bastion host & the RDS databases

Step 5: Create the compute objects in the cluster

Step 6: Expose the apps with networking objects and services

Step 7: Add the secrets as environment variables in the cluster

Step 8: Scale the applications in the cluster

Step 9: Enable observability using CloudWatch