Skip to content

AppMesh on k8s load test #518

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 7 commits into
base: main
Choose a base branch
from
Open

AppMesh on k8s load test #518

wants to merge 7 commits into from

Conversation

rakeb
Copy link
Contributor

@rakeb rakeb commented Dec 9, 2022

Issue #, if available:

Description of changes: Added a walkthrough for how to load test AppMesh on EKS. This walkthrough can be used as a tool for further load testing on different mesh configuration. It uses Fortio for load generation.

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

@rakeb rakeb requested a review from a team as a code owner December 9, 2022 18:19
Copy link
Contributor

@joesbigidea joesbigidea left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good but I think there are some gaps in the documentation


## Step 1: Prerequisites
1. [Walkthrough: App Mesh with EKS](../eks/)
1. Make sure you have "appmesh-prometheus" installed. You may follow this [live docs](https://aws.github.io/aws-app-mesh-controller-for-k8s/) _Guide_ section for further installation support.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It might be easier for the customer if you just link directly to the App Mesh Prometheus chart: https://github.com/aws/eks-charts/tree/master/stable/appmesh-prometheus

We need to set a few environment variables before starting the load tests.

```bash
export CONTROLLER_PATH=<Path to the controller directory e.g., /home/userName/workplace/appmesh-controller/aws-app-mesh-controller-for-k8s>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you may need to break this down a bit. It's not going to be clear to people that they need to clone the controller repo just based on this comment. I'd say add cloning the controller repo to the prerequisites

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure


## Step 4: Running the Load Test
Run the driver script using the below command -:
> sh scripts/driver.sh
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is going to require setup of the controller dev environment, tools such as Ginkgo. We probably need some instructions for that.

1. Make sure you have "appmesh-prometheus" installed. You may follow this [live docs](https://aws.github.io/aws-app-mesh-controller-for-k8s/) _Guide_ section for further installation support.
2. Alternatively, you can follow this doc: [Getting started with AWS App Mesh and Kubernetes](https://docs.aws.amazon.com/app-mesh/latest/userguide/getting-started-kubernetes.html) to install appmesh-controller and EKS cluster using `eksctl`.
2. Clone this repository and navigate to the `walkthroughs/howto-k8s-appmesh-load-test` folder, all the commands henceforth are assumed to be run from the same directory as this README.
3. Make sure you have the latest version of [AWS CLI v2](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) installed.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

v1 also works (with new features like multiple listener) as long as you have the latest

nodeGroups:
- name: ng-1
instanceType: m5.4xlarge
desiredCapacity: 10
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is such a big group intentional? I usually see at most 5 in other examples.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is just an example cluster config showing customer how to use a cluster config as a file to create cluster with various properties such as different instance size.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah then maybe 2-3 nodes are quite enough (reduce cost)

PROMETHEUS_QUERY_ENDPOINT = 'http://localhost:9090/api/v1/query_range'

# give your s3 bucket a unique name
S3_BUCKET = "mazharis-appmeshloadtester"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe should not put alias here?

Copy link
Contributor

@joesbigidea joesbigidea left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would recommend running this on a fresh account with a fresh machine (maybe Cloud9?) to make sure that it's not accidentally depending on anything that isn't going to be automatically available to end users.

@@ -39,6 +39,17 @@ if [ -z "${VPC_ID}" ]; then
err "VPC_ID is not set"
fi

# Check creds
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

isengard is an internal tool, it won't be available

@joesbigidea
Copy link
Contributor

On the load test flow diagram what are the numbers communicating? The ordering seems strange

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants