KLUE is a emulation tool that allows developers to test and validate cloud infrastructure changes without incurring unnecessary expenses. It enables seamless Kubernetes experimentation, helping teams optimize configurations, improve scalability, and reduce cloud costs.
Before testing your solutions and configurations, follow these steps to properly set up your environment.
To create your emulated cluster, you first need access to AWS and must install the required dependencies:
- EKSCTL – Follow this installation guide
- KUBECTL – Install via this tutorial
- AWS CLI – Install using this guide
- HELM – Kubernetes package manager, install via this guide
- AWS SSO Configuration – Follow this tutorial to configure your default profile
Variable | Description |
---|---|
CLUSTER_NAME |
Name of your cluster |
EKS_VERSION |
EKS version to install |
CLUSTER_CREATION_ARN |
ARN with permissions to create the cluster |
INSTANCE_ROLE_ARN |
ARN with permissions to launch and manage instances |
INSTANCE_PROFILE_ARN |
Profile ARN with instance management permissions |
SERVICE_ROLE_ARN |
Service ARN with instance management permissions |
REGION |
AWS Region |
ENVIRONMENT |
Environment tag for ASG |
PRODUCT |
Product tag |
APPLICATION_NAME |
Required tag to create the ASG |
AWS_PROFILE |
AWS SSO profile name |
CLUSTER_CONFIG_FILE |
Path of the cluster configuration file |
NODEGROUP_CONFIG_FILE |
Path of the nodegroup configuration file |
NODECLASS_CONFIG_FILE |
Path of the nodeclass configuration file |
NODEPOOL_CONFIG_FILE |
Path of the nodepool configuration file |
CALICO_CONFIG_FILE |
Path of the Calico configuration file |
CLUSTER_CNI |
Set to AmazonVPC (VPC CNI) or Calico (Calico CNI) |
QUEUE_NAME |
Name of the queue (if not using an existing one) |
KARPENTER_VERSION |
Karpenter Version |
KARPENTER_NAMESPACE |
Namespace to install Karpenter |
CALICO_NAMESPACE |
Namespace to install Calico |
Once you have these dependencies installed, copy the env.example
file to your .env
using:
cp .env.example .env
After this, init the submodule repositories prometheus
and karpenter-code
using
git submodule update --init --recursive
Please visit the README.md
in trace-emulator/data
to understand how your files should be structured.
Before running an emulation, grant execution permission to the execute_emulation.sh file by running:
chmod +x execute_emulation.sh
There are multiple ways to run our emulation tool. One method is by using an existing cluster with at least one node:
./execute_emulation.sh --sim --use-cluster <cluster-context> --trace-path <trace-path>
You can also create a new cluster with one node. To do that, you must have the roles set in your .env file:
./execute_emulation.sh --sim --new-cluster --trace-path <trace-path>
If you are unsure about the flags, please use the following command:
./execute_emulation.sh --help
Note: If you want to use our solution to generate the input files for the infrastructure and workload manager, please read the README here.
- Kayky Fidelis – Undergraduate Student, Federal University of Campina Grande (UFCG) – LinkedIn
- Geraldo Sobreira – Undergraduate Student, Federal University of Campina Grande (UFCG) – LinkedIn
- Eric Matozo – Master's Student, Federal University of Campina Grande (UFCG) – LinkedIn
- Giovanni Farias – PhD, Federal University of Campina Grande (UFCG)
- Fábio Morais – PhD, Federal University of Campina Grande (UFCG)