Giter Club home page Giter Club logo

layer5io / meshery-smp-action Goto Github PK

View Code? Open in Web Editor NEW
28.0 28.0 21.0 393 KB

GitHub Action for pipelining microservices and Kubernetes performance testing with Meshery

Home Page: https://layer5.io/projects/nighthawk

License: Apache License 2.0

Makefile 5.88% JavaScript 2.31% Shell 91.81%
gitops-performance hacktoberfest kubernetes load-generation load-testing performance-analysis performance-optimization performance-pipeline performance-testing

meshery-smp-action's People

Contributors

alphax86 avatar arturba avatar asubedy avatar augustasv avatar debjyoti0404 avatar delusionaloptimist avatar fidalmathew avatar gyohuangxin avatar hershd23 avatar imgbotapp avatar leecalcote avatar pottekkat avatar revolyssup avatar sayantan1413 avatar thebeginner86 avatar utkarshmishra12 avatar vedant-kakde avatar warunicorn19 avatar yana-gupta avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

meshery-smp-action's Issues

Rename the profiles of performance tests

Current Behavior

Performance test profiles are named as {service-mesh}-{load-generator}-{test-configuration}.yaml currently, it‘s ugly and hard to understand.
image

The goal of this issue is to discuss and find out the how to make the profile names be in order for people to understand what is being tested.

Add retries and confirmations to ensure CNCF runners and machines are removed.

Description

There are some remaining CNCF runners not being remove after tests done, the number of them gradually increases over time.
We can delete them manually, but it's better to make sure they are properly removed.
image

The same thing happened to equinix servers deletion:
image

Expected Behavior

We should add retries and confirmations to ensure CNCF runners and machines are removed.

Screenshots/Logs

Environment:

  • Meshery Version:
  • Kubernetes Version:
  • Host OS:
  • Browser:

Issue Template Updates for Figma link 

Current Behavior

The project's current issue templates are missing an open invitation link where new contributors can join the community's Figma team and view user interface designs and other UX projects.

Desired Situation

Each template that has a reference to Figma in its resources section should an invite link added.

Implementation

- 🎨 Wireframes and [designs for Meshery UI](https://www.figma.com/file/SMP3zxOjZztdOLtgN4dS2W/Meshery-UI) in Figma [(open invite)](https://www.figma.com/team_invite/redeem/qJy1c95qirjgWQODApilR9)

Acceptance Tests
All references to Figma include the "open invite" link.

Mockups


Contributor Guide

Update the dynamic test name in the scheduled workflow

Current Behavior

The Scheduled Benchmark Tests workflow creates dynamic test names based on the configuration of the test. Current format is shown below.

test_name: '${{ matrix.service-mesh }}-${{ matrix.load-generator }}-${{ github.event.inputs.profile_filename }}${{ github.event.inputs.profile_name }}'

So, a sample test name now is: istio-fortio-load-test.yaml

Desired Behavior

Remove the .yaml from the test name and only include the rest of the file name.


Contributor Guide

Automating initialisation of baremetal for self-hosted-runners

Current Behavior

Currently we are

  1. Doing baremetal initialisation manually by going to the equinix UI.
  2. Doing the setup by manually SSHing and creating users, installing dependencies etc.

The instructions are mentioned here

Desired Behavior

Ideally both these tasks should be automated, using the equinix APIs and tools like terraform

Implementation

We can use tools like terraform and use existing terraform support for equinix APIs to achieve this.
https://github.com/equinix/terraform-provider-equinix
https://github.com/equinix/cloud-provider-equinix-metal
https://github.com/machulav/ec2-github-runner#example

Acceptance Tests

Successful action runs with complete automation would solve this issue

Additional Comments

@leecalcote @gyohuangxin would creating a runner on demand (i.e. after starting a workflow) mean that the self-hosted-runner in itself would not be needed? Given we have to register a self-hosted-runner to a repository first.
https://docs.github.com/en/actions/hosting-your-own-runners/adding-self-hosted-runners


Contributor Guide

The application deployed is not reachable to Meshery

Description

The application deployed by SMP github action is not reachable to Meshery.

Expected Behavior

Root cause:

  1. The default endpoint_url is Istio ingress url + ingress port, which returns 404 status code to Meshery.
  2. minikube tunnel is easy to be killed.

Screenshots/Logs

image

Environment:

  • Meshery Version:
  • Kubernetes Version:
  • Host OS:
  • Browser:

Increase frequency of self-hosted performance tests to once per hour

Current Behavior

Tests run on a 24 hour period.

Desired Behavior

As the project ramps the diversity of testing, it would be good to get these results generated more frequently in order to iterate more quickly on test harness updates and performance test profiles.

Implementation

Increase frequency of self-hosted performance tests to once per hour


Contributor Guide

Fix failing SMP Scheduled benchmark tests

Description

The SMP becnhmark test that run as GitHub Actions are currently failing

Expected Behavior

We would want to figure out what is causing this issue and solve this so that correct and error free performance test are published on the SMP Dashboard

Screenshots/Logs

image

Environment:

  • Meshery Version:
  • Kubernetes Version:
  • Host OS:
  • Browser:

Contributor Guides and Resources

Enable other service meshes performance tests

Current Behavior

We have included Istio, Linkerd, OSM performance tests.

Desired Behavior

We should enable other service meshes performance tests listed on https://smp-spec.io/dashboard.

  • Consul
  • App Mesh
  • Kuma
  • Cilium

Implementation

Writing bash scripts for each mesh is time consuming, so we should use mesheryctl to deploy them.
And we should use mesheryctl app onboard to deploy sample apps if #48 is readay.

Acceptance Tests

Mockups


Contributor Guide

Stability issues wrt Scheduled Benchmark Tests on Self Hosted Runner

Description

Multiple issues of the Scheduled Benchmark Tests on Self Hosted Runner generate different results

While here just one combination failed :- https://github.com/layer5io/meshery-smp-action/runs/7770247406 (linkerd-wrk-soak)

Here a couple failed :- https://github.com/layer5io/meshery-smp-action/actions/runs/2832186044

And here one runner startup itself failed :- https://github.com/layer5io/meshery-smp-action/actions/runs/2833335073

Expected Behavior

The behaviour should be consistent across Scheduled Benchmark Test run on self hosted runners. Given we are working with external hardware where connections can fail, ideally we should have a retry mechanism and we should work to considerably reduce the consistency

Logs

In the logs Auth seems to be a common culprit

Opening Meshery (http://localhost:31391) in browser.
Failed to open Meshery in browser, please point your browser to http://localhost:31391 to access Meshery.
authentication failed: Get "http://localhost:31[39](https://github.com/layer5io/meshery-smp-action/runs/7765562299?check_suite_focus=true#step:5:40)1/api/providers": dial tcp [::1]:31391: connect: connection refused
Verifying prerequisites...
Authentication token not found. please supply a valid user token with the --token (or -t) flag. or login with `mesheryctl system login`
Onboarding application... Standby for few minutes...
Error: Authentication token not found. please supply a valid user token with the --token (or -t) flag. or login with `mesheryctl system login`

This is seen for istio

Opening Meshery (http://192.168.49.2:32398/) in browser.
Failed to open Meshery in browser, please point your browser to http://192.168.49.2:32398/ to access Meshery.
Verifying prerequisites...
Adapter for required mesh not found
Onboarding application... Standby for few minutes...
rpc error: code = Unknown desc = no matches for kind "Gateway" in version "networking.istio.io/v1alpha3"

Error from server (NotFound): namespaces "istio-system" not found
Error from server (NotFound): namespaces "istio-system" not found
Service Mesh: Istio - ISTIO
Gateway URL: [http://192.168.49.2:](http://192.168.49.2/)

Environment:

  • Meshery Version: v0.6.0-rc.6fc
  • Kubernetes Version: minikube 1.23.2
  • Host OS: Ubuntu
  • Browser: N/A

Add sample performance test

Description
Provide a sample performance test which would be done using this action so that users can consider what runner types and benchmark configurations should be used in other tests.

Using `pattern apply` to apply pattern files in the action

Current Behavior

Currently only Istio adapter has a pattern file and hence can use the pattern apply construct. For linkerd and OSM tests we need to use app onboard to apply their demo kubernetes manifests

Desired Behavior

We should run a common pattern apply method across all meshes

Implementation

Acceptance Tests

Runs showing that pattern apply works for all meshes

Mockups


Contributor Guide

Mark test servers for auto-deletion using "end_at" parameter

Current Behavior

Of the scheduled tests that run multiple times a day, they have faced a few challenges. Notably, one of those challenges is in the cleanup phase once a test is complete. Currently, it is frequently the case that any number of bare metal servers that are used for testing or orphaned, and not decommissioned at the end of each test. This leaves an inordinate amount of bare metal servers, unnecessarily unavailable for used by other projects.

@vielmetti has been most helpful in identifying ways to mitigate this from happening.

Desired Behavior

All resources provisioned for a scheduled test are subsequently decommissioned at the end of that same test.

Implementation

Recently @vielmetti point this out:

You can create servers that will auto-delete themselves at a time certain, perfect for test runs. See https://deploy.equinix.com/developers/docs/metal/deploy/spot-market/#spot-market-request-creation. You want the “end_at” parameter on the API endpoint for device creation

Slack Message

Acceptance Tests

  1. Test servers are decommissioned at end of scheduled testing period.

Contributor Guide

Panic error happens when running benchmarking test.

Description

Panic error happens when running benchmarking test either on Github runner or CNCF cluster runner.

Logs for github runner:
https://github.com/layer5io/meshery-smp-action/runs/5493977248?check_suite_focus=true#step:6:1573

Logs for CNCF cluster runner:
https://github.com/gyohuangxin/meshery-smp-action/runs/5462624684?check_suite_focus=true#step:6:1174

Expected Behavior

Screenshots/Logs

Environment:

  • Meshery Version:
  • Kubernetes Version:
  • Host OS:
  • Browser:

[Self hosted] Keep track of machine state to minimise waiting time

Current Behavior

Currently we are arbitrarily waiting 10 minutes waiting for the server to get provisioned and started.

# Wait 10 minutes until the machine is running

Desired Behavior

We want to optimise on our waiting time by keeping track of the state variable by the machine

Implementation

The logic of this can look like

  • If "state" == "provisioning", sleep 10s...
  • If "state" == "active", echo "Machine successfully created!" and continue.
  • If "state" == "failed", echo "Failed to create machine" and exit.

in the above mentioned bash script.

A little experimentation might be required based on the intervals on which we poll. (We do not want cause anything that might come under a DOS attack :) )

Acceptance Tests

A link to the self-hosted workflow run would be key to get your changes accepted


Contributor Guide

Update minikube and kubernetes to latest versions

Current Behavior

These versions are highlighted in the readme as being used by the action currently:

          minikube version: 'v1.21.0'
          kubernetes version: 'v1.20.7'

Desired Behavior

The latest versions of these tools are:

          minikube version: 'v1.30.1'
          kubernetes version: 'v1.27.3'

Implementation

  1. Use the latest versions in the action by default.
  2. Update the scheduled tests to use the latest versions.

Acceptance Tests

  1. New version of this GitHub Action is published to the marketplace.

Contributor Guides and Resources

Run scheduled benchmarks on different sample applications

Current Behavior

Currently the tests are run with the sample application of the particular service mesh. This is different for each service mesh.

Desired Behavior

Add sample application as a configurable item and run tests across multiple applications for each service mesh.

A new field should be added here and the scripts needs to be changed to take in this dynamic value.


Contributor Guide

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.