Skip to content
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

Add Meshes: Kuma, App Mesh, Consul, Cilium #52

Closed
wants to merge 9 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ on:
- istio
- linkerd
- osm
- kuma
- appmesh
- cilium
- consul
load_generator:
type: choice
required: false
Expand Down Expand Up @@ -101,7 +105,7 @@ jobs:
shell: bash

- name: Run Benchmark Tests
uses: layer5io/meshery-smp-action@master
uses: gyohuangxin/meshery-smp-action@master
with:
provider_token: ${{ secrets.MESHERY_TOKEN }}
platform: docker
Expand Down
142 changes: 73 additions & 69 deletions .github/workflows/configurable-benchmark-test.yaml
Original file line number Diff line number Diff line change
@@ -1,69 +1,73 @@
# This workflow runs performance benchmarks with Meshery based on the configuration provided
# This workflow needs to be triggered manually by providing the test configuration

name: Configurable Benchmark Test
on:
# for triggering the workflow, provide these inputs
workflow_dispatch:
inputs:
profile_name:
description: "performance profile to use"
required: false
profile_filename:
description: "test configuration file"
required: false
service_mesh:
type: choice
required: false
description: "service mesh being tested"
options:
- istio
- linkerd
- osm
load_generator:
type: choice
required: false
description: "load generator to run tests with"
options:
- fortio
- wrk2
- nighthawk

jobs:
manual-test:
name: Configurable Benchmark Test
runs-on: ubuntu-latest
if: ${{ github.event_name == 'workflow_dispatch' }}
steps:
- name: Setup Kubernetes
uses: manusa/[email protected]
with:
minikube version: v1.23.2
kubernetes version: v1.23.2
driver: docker
apus: 4
memory: 5192

- name: Checkout Code
uses: actions/checkout@v2

- name: Install Service Mesh and Deploy Application
run: |
chmod +x .github/workflows/scripts/${{ github.event.inputs.service_mesh }}_deploy.sh
.github/workflows/scripts/${{ github.event.inputs.service_mesh }}_deploy.sh
shell: bash

- name: Initiate tmate session
uses: mxschmitt/action-tmate@v3

- name: Run Benchmark Tests
uses: layer5io/meshery-smp-action@master
with:
provider_token: ${{ secrets.MESHERY_TOKEN }}
platform: docker
profile_name: ${{ github.event.inputs.profile_name }}
profile_filename: ${{ github.event.inputs.profile_filename }}
endpoint_url: ${{env.ENDPOINT_URL}}
service_mesh: ${{env.SERVICE_MESH}}
load_generator: ${{ github.event.inputs.load_generator }}
test_name: '${{ github.event.inputs.service_mesh }}-${{ github.event.inputs.load_generator }}-${{ github.event.inputs.profile_filename }}${{ github.event.inputs.profile_name }}'
# This workflow runs performance benchmarks with Meshery based on the configuration provided
# This workflow needs to be triggered manually by providing the test configuration

name: Configurable Benchmark Test
on:
# for triggering the workflow, provide these inputs
workflow_dispatch:
inputs:
profile_name:
description: "performance profile to use"
required: false
profile_filename:
description: "test configuration file"
required: false
service_mesh:
type: choice
required: false
description: "service mesh being tested"
options:
- istio
- linkerd
- osm
- kuma
- appmesh
- cilium
- consul
load_generator:
type: choice
required: false
description: "load generator to run tests with"
options:
- fortio
- wrk2
- nighthawk

jobs:
manual-test:
name: Configurable Benchmark Test
runs-on: ubuntu-latest
if: ${{ github.event_name == 'workflow_dispatch' }}
steps:
- name: Setup Kubernetes
uses: manusa/[email protected]
with:
minikube version: v1.23.2
kubernetes version: v1.23.2
driver: docker
apus: 4
memory: 5192

- name: Checkout Code
uses: actions/checkout@v2

- name: Install Service Mesh and Deploy Application
run: |
chmod +x .github/workflows/scripts/${{ github.event.inputs.service_mesh }}_deploy.sh
.github/workflows/scripts/${{ github.event.inputs.service_mesh }}_deploy.sh
shell: bash

- name: Initiate tmate session
uses: mxschmitt/action-tmate@v3

- name: Run Benchmark Tests
uses: layer5io/meshery-smp-action@master
with:
provider_token: ${{ secrets.MESHERY_TOKEN }}
platform: docker
profile_name: ${{ github.event.inputs.profile_name }}
profile_filename: ${{ github.event.inputs.profile_filename }}
endpoint_url: ${{env.ENDPOINT_URL}}
service_mesh: ${{env.SERVICE_MESH}}
load_generator: ${{ github.event.inputs.load_generator }}
test_name: '${{ github.event.inputs.service_mesh }}-${{ github.event.inputs.load_generator }}-${{ github.event.inputs.profile_filename }}${{ github.event.inputs.profile_name }}'
2 changes: 1 addition & 1 deletion .github/workflows/scheduled-benchmarks-self-hosted.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ jobs:
run: echo "::set-output name=date::$(date +'%Y-%m-%d-%H.%M.%S')"

- name: Run Benchmark Tests
uses: layer5io/meshery-smp-action@master
uses: gyohuangxin/meshery-smp-action@master
with:
provider_token: ${{ secrets.MESHERY_TOKEN }}
platform: docker
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/scheduled-benchmarks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ jobs:
strategy:
fail-fast: false
matrix:
service-mesh: ['istio', 'linkerd']
load-generator: ['fortio', 'wrk2']
service-mesh: ['istio', 'linkerd', 'consul', 'kuma', 'appmesh', 'cilium']
load-generator: ['fortio', 'wrk2', 'nighthawk']
steps:
- name: Setup Kubernetes
uses: manusa/[email protected]
Expand Down Expand Up @@ -66,8 +66,8 @@ jobs:
strategy:
fail-fast: false
matrix:
service-mesh: ['istio', 'linkerd', 'osm']
load-generator: ['fortio', 'wrk2']
service-mesh: ['istio', 'linkerd', 'osm', 'consul', 'kuma', 'appmesh', 'cilium']
load-generator: ['fortio', 'wrk2', 'nighthawk']
test-configuration: ['load-test.yaml','soak-test.yaml']
steps:
- name: Setup Kubernetes
Expand Down
28 changes: 28 additions & 0 deletions .github/workflows/scripts/appmesh_deploy.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#!/usr/bin/env bash
# This script is used to deploy Istio on Kubernetes
#
# Also deploys the bookinfo application on Istio and passes the gateway URL to Meshery
# See: https://github.com/service-mesh-performance/service-mesh-performance/blob/master/protos/service_mesh.proto

export MESH_NAME='App Mesh'
export SERVICE_MESH='APP_MESH'

# Check if mesheryctl is present, else install it and deploy Kuma adapter
if ! [ -x "$(command -v mesheryctl)" ]; then
echo 'mesheryctl is not installed. Installing mesheryctl client... Standby... (Starting Meshery as well...)' >&2
curl -L https://meshery.io/install | ADAPTERS=app-mesh PLATFORM=kubernetes bash -
fi

sleep 10

echo 'E' | mesheryctl mesh deploy adapter meshery-app-mesh:10000 --token "./.github/workflows/auth.json"
sleep 50
echo "Onboarding application... Standby for few minutes..."
mesheryctl pattern apply -f "https://raw.githubusercontent.com/service-mesh-patterns/service-mesh-patterns/master/samples/bookInfoPattern.yaml" --token "./.github/workflows/auth.json"

echo "Service Mesh: $MESH_NAME - $SERVICE_MESH"
echo "Endpoint URL: http://localhost:5000"

# Pass the endpoint to be used by Meshery
echo "ENDPOINT_URL=http://localhost:5000" >> $GITHUB_ENV
echo "SERVICE_MESH=$SERVICE_MESH" >> $GITHUB_ENV
29 changes: 29 additions & 0 deletions .github/workflows/scripts/cilium_deploy.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#!/usr/bin/env bash
# This script is used to deploy Istio on Kubernetes
#
# Also deploys the bookinfo application on Istio and passes the gateway URL to Meshery
# See: https://github.com/service-mesh-performance/service-mesh-performance/blob/master/protos/service_mesh.proto

export MESH_NAME='Cilium'
export SERVICE_MESH='CILIUM'

# Check if mesheryctl is present, else install it and deploy Kuma adapter
if ! [ -x "$(command -v mesheryctl)" ]; then
echo 'mesheryctl is not installed. Installing mesheryctl client... Standby... (Starting Meshery as well...)' >&2
curl -L https://meshery.io/install | ADAPTERS=cilium PLATFORM=kubernetes bash -
fi

sleep 10

#mesheryctl system login --provider None
echo 'E' | mesheryctl mesh deploy adapter meshery-cilium:10000 --token "./.github/workflows/auth.json"
sleep 50
echo "Onboarding application... Standby for few minutes..."
mesheryctl pattern apply -f "https://raw.githubusercontent.com/service-mesh-patterns/service-mesh-patterns/master/samples/bookInfoPattern.yaml" --token "./.github/workflows/auth.json"

echo "Service Mesh: $MESH_NAME - $SERVICE_MESH"
echo "Endpoint URL: http://localhost:5000"

# Pass the endpoint to be used by Meshery
echo "ENDPOINT_URL=http://localhost:5000" >> $GITHUB_ENV
echo "SERVICE_MESH=$SERVICE_MESH" >> $GITHUB_ENV
28 changes: 28 additions & 0 deletions .github/workflows/scripts/consul_deploy.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#!/usr/bin/env bash
# This script is used to deploy Istio on Kubernetes
#
# Also deploys the bookinfo application on Istio and passes the gateway URL to Meshery
# See: https://github.com/service-mesh-performance/service-mesh-performance/blob/master/protos/service_mesh.proto

export MESH_NAME='Consul'
export SERVICE_MESH='CONSUL'

# Check if mesheryctl is present, else install it and deploy Kuma adapter
if ! [ -x "$(command -v mesheryctl)" ]; then
echo 'mesheryctl is not installed. Installing mesheryctl client... Standby... (Starting Meshery as well...)' >&2
curl -L https://meshery.io/install | ADAPTERS=consul PLATFORM=kubernetes bash -
fi

sleep 10

echo 'E' | mesheryctl mesh deploy adapter meshery-consul:10000 --token "./.github/workflows/auth.json"
sleep 50
echo "Onboarding application... Standby for few minutes..."
mesheryctl pattern apply -f "https://raw.githubusercontent.com/service-mesh-patterns/service-mesh-patterns/master/samples/bookInfoPattern.yaml" --token "./.github/workflows/auth.json"

echo "Service Mesh: $MESH_NAME - $SERVICE_MESH"
echo "Endpoint URL: http://localhost:5000"

# Pass the endpoint to be used by Meshery
echo "ENDPOINT_URL=http://localhost:5000" >> $GITHUB_ENV
echo "SERVICE_MESH=$SERVICE_MESH" >> $GITHUB_ENV
33 changes: 33 additions & 0 deletions .github/workflows/scripts/kuma_deploy.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#!/usr/bin/env bash
# This script is used to deploy Istio on Kubernetes
#
# Also deploys the bookinfo application on Istio and passes the gateway URL to Meshery
# See: https://github.com/service-mesh-performance/service-mesh-performance/blob/master/protos/service_mesh.proto

export MESH_NAME='Kuma'
export SERVICE_MESH='Kuma'

# Check if mesheryctl is present, else install it and deploy Kuma adapter
if ! [ -x "$(command -v mesheryctl)" ]; then
echo 'mesheryctl is not installed. Installing mesheryctl client... Standby... (Starting Meshery as well...)' >&2
curl -L https://meshery.io/install | ADAPTERS=kuma PLATFORM=kubernetes bash -
fi

sleep 10

echo 'E' | mesheryctl mesh deploy adapter meshery-kuma:10000 --token "./.github/workflows/auth.json"
sleep 50
echo "Deploying demo application on Kuma..."
# Refer to https://kuma.io/docs/1.6.x/quickstart/kubernetes/#set-up-and-run
git clone https://github.com/kumahq/kuma-counter-demo.git && cd kuma-counter-demo
kubectl apply -f demo.yaml
echo "Waiting for the application to be ready..."
sleep 50
kubectl port-forward svc/demo-app -n kuma-demo 5000:5000 &

echo "Service Mesh: $MESH_NAME - $SERVICE_MESH"
echo "Endpoint URL: http://localhost:5000"

# Pass the endpoint to be used by Meshery
echo "ENDPOINT_URL=http://localhost:5000" >> $GITHUB_ENV
echo "SERVICE_MESH=$SERVICE_MESH" >> $GITHUB_ENV