This package provides an AWS Cloud Development Kit - CDK application with a fully functional AWS EKS Cluster with some very interesting production grade perks.
Mainly alongside the cluster there is an AWS EFS Filesystem to provide file persistence plus an AWS Aurora Serverless db cluster to serve as the relational database for the cluster's applications.
The Kubernetes cluster itself comes with the following components:
- AWS LoadBalancer Controller
- AWS Node Termination Handler
- AWS EFS CSI Driver
- Cluster Autoscaler
- Cluster Overprovisioner
- Metrics Server
- Prometheus
- Grafana
- External Secrets
Current Kubernetes version is 1.20
Currently the default VPC setting is used.
All nodes are privisioned in the private subnets of the cluster.
The cluster comes with its default capacity for the control plane components and is meant also for all other control apps (further capacity customization will be added). Currently the default capacity provided by cdk is 2 instances of m5.large
managed node group.
There are 2 managed node groups of SPOT instances meant for applications. The groups are a combination selected from the families m5
, m5d, m5a
, m4, t3
, t3a, t2
of sizes xlarge
and 2xlarge
. The current minimum size is 1 and maximum of 5 instances with desired size of 1 instance.
🛑 IMPORTANT 🛑 These nodes are tainted with NoSchedule
effect and key spotIntance
. Which means in order for pods to be deployed into those nodes they must tolerate this taint.
The applications nodes also have two additional labels:
lifecycle: 'Ec2Spot'
intent: 'apps'