Skip to content

GitHub Action for pipelining microservices and Kubernetes performance testing with Meshery

License

Notifications You must be signed in to change notification settings

lekaf974/meshery-smp-action

 
 

Repository files navigation

Meshery Performance Analysis GitHub Action

A GitHub Action to characterize the performance of a service or microservice using a load generator and statistical analysis. Use Meshery's performance analysis GitHub Action to establish a performance benchmark and visually compare percentiles (e.g. P99) over time. Integrate performance characterization within your CI/CD pipeline and catch regressions before they happen.

This action supports performance analysis of any accessible HTTP/S endpoint. If the system under test is running on Kubernetes, Meshery will collect additional infrastructure (cluster/node) statistics and include in the analysis.

Learn More

Usage

See action.yml

You can use this action by defining your test configuration in a performance profile in Meshery or write your test configurations in SMP compatible format (see example).

You can then pass in either of these to the action to run a performance test.

The results of the tests are updated on the Performance Management dashboard in Meshery.

See Performance Management with Meshery for detailed instructions on setting up Meshery and authenticating the GitHub Action.

SMP Compatible Test Configuration File

# Test configuration file for running performance analysis
# See: https://docs.meshery.io/guides/performance-management
test:
  # The name of the test
  name: Load Test
  labels: {}
  
  # Test configuration to be defined here
  clients:
    - internal: false
      load_generator: fortio
      protocol: 1
      connections: 2
      rps: 10
      headers: {}
      cookies: {}
      body: ''
      content_type: ''
      endpoint_urls:
        - 'https://getnighthawk.dev'
  duration: 60s

# If testing while using a service mesh, see Service Mesh Performance Spec format
# See: https://github.com/service-mesh-performance/service-mesh-performance/blob/master/protos/service_mesh.proto
mesh:
  type: 3 # optional

Sample configuration

See scheduled-benchmarks.yml and configurable-benchmark-test.yml for more sample configurations.

name: Meshery Performance Analysis Action
on:
  push:
    branches:
      'master'

jobs:
  performance-test:
    name: Performance Test
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v2
        with:
          ref: 'perf'

      - name: Deploy k8s-minikube
        uses: manusa/[email protected]
        with:
          minikube version: 'v1.30.1'
          kubernetes version: 'v1.27.3'
          driver: docker

      - name: Run Performance Test
        uses: layer5io/meshery-smp-action@master
        with:
          provider_token: ${{ secrets.PROVIDER_TOKEN }}
          platform: docker
          profile_name: soak-test

Meshery is the canonical implementation of the Service Mesh Performance specification.

Join the Community!

Our projects are community-built and welcome collaboration. 👍 Be sure to see the Layer5 Community Welcome Guide for a tour of resources available to you and jump into our Slack!

MeshMates

Find your MeshMate

MeshMates are experienced Layer5 community members, who will help you learn your way around, discover live projects and expand your community network. Become a Meshtee today!

Find out more on the Layer5 community.




 
Shows an illustrated light mode meshery logo in light color mode and a dark mode meshery logo dark color mode.

Layer5 Service Mesh Community

✔️ Join any or all of the weekly meetings on community calendar.
✔️ Watch community meeting recordings.
✔️ Access the Community Drive by completing a community Member Form.
✔️ Discuss in the Community Forum.

Not sure where to start? Grab an open issue with the help-wanted label.

About

GitHub Action for pipelining microservices and Kubernetes performance testing with Meshery

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Shell 91.8%
  • Makefile 5.9%
  • JavaScript 2.3%