[AIAB-04] Architecture overview and setup

There are two possible architectural configurations, depending on whether you are using a dedicated cluster or running the application on Minikube inside your Akamas-in-a-box machine:

Scenario 1: Dedicated Cluster

In this scenario, you are running the application on a dedicated cluster; it will require at least one node with 4 CPUs and 8 GB of RAM. Akamas will run on a dedicated VM.

Scenario 2: Minikube Cluster

In this scenario, you are running the application on a Minikube cluster installed on your Akamas-in-a-box machine; it will need at least 8 CPUs and 16 GB of RAM (e.g., c5.xlarge on AWS EC2). In the following section, Build Minikube Cluster, you will learn to install it with a single command.

In both scenarios, you will install the following applications in the cluster:

  • the application to tune: Online Boutique

  • the telemetry provider: Prometheus, which provides performance metrics of the application under optimization

  • the load generator: Locust, used to run the load tests

Build Minikube Cluster

Notice that you plan to use your own cluster, please can skip this section and move on to the section Setup Online Boutique.

This section describes how to build a local Kubernetes cluster for the following Akamas optimization study. The local cluster will be installed in the Akamas-in-a-box machine, so this machine needs at least 8 CPUs and 16 GB of RAM (e.g., c5.2xlarge on AWS EC2).

Before proceeding with the installation of the Minikube cluster, please ensure that your Akamas-in-a-box host has all the following prerequisites:

  • Install docker (if you have installed Akamas-in-a-Box, you should have it already installed).

  • Install kubectl.

  • Install minikube (you can stop before verifying the installation).

  • Add your user to the docker group, if it has not been added yet, with the command: sudo usermod -aG docker $USER && newgrp docker.

  • Note down your machine's public IP, as it will be used later in this guide as your CLUSTER_IP. On Linux you can run: dig +short myip.opendns.com @resolver1.opendns.com.

Then make sure Akamas is running. You can verify if Akamas services are up and running by executing the following command:

akamas status

aside negative If you have another minikube cluster running on the same machine, you need to clean your environment with the command minikube delete before creating the new cluster.

At this point, you can create the Minikube cluster with a single command by leveraging the script create-minikube-cluster.sh in the scripts folder of the cloned repo (as described in section Download artifacts) and passing the public IP of your machine as the CLUSTER_IP:

bash kubernetes-online-boutique/scripts/create-minikube-cluster.sh <CLUSTER_IP>

The command may take a few minutes, and will output the message "Cluster created" once the installation process completes correctly.

Now the cluster should be up and running. You can verify this by running any kubectl command, such as:

>>>$ kubectl get namespaces

NAME              STATUS   AGE
default           Active   92m
kube-node-lease   Active   92m
kube-public       Active   92m
kube-system       Active   92m

Last updated