Skip to content

Commit

Permalink
Merge pull request #56 from hershd23/add_onboard
Browse files Browse the repository at this point in the history
Replace `kubectl apply` with `mesheryctl pattern apply`
  • Loading branch information
leecalcote authored Jun 27, 2022
2 parents ff8544b + eb4e7e5 commit 33a35e8
Show file tree
Hide file tree
Showing 6 changed files with 109 additions and 96 deletions.
1 change: 1 addition & 0 deletions .github/workflows/auth.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"meshery-provider":"None","token":""}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ on:
options:
- istio
- linkerd
- osm
load_generator:
type: choice
required: false
Expand Down
133 changes: 69 additions & 64 deletions .github/workflows/configurable-benchmark-test.yaml
Original file line number Diff line number Diff line change
@@ -1,64 +1,69 @@
# 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
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
start args: "--v=5"

- 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: 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
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 }}'
24 changes: 13 additions & 11 deletions .github/workflows/scripts/istio_deploy.sh
Original file line number Diff line number Diff line change
@@ -1,24 +1,27 @@
#!/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='Istio'
export SERVICE_MESH='ISTIO'

curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.11.4 sh -
cd istio-1.11.4
export PATH=$PWD/bin:$PATH
istioctl install --set profile=demo -y
kubectl label namespace default istio-injection=enabled
# Check if mesheryctl is present, else install it
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=istio PLATFORM=kubernetes bash -
fi

kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
sleep 10
#mesheryctl system login --provider None
echo 'E' | mesheryctl mesh deploy adapter meshery-istio:10000 --token "./.github/workflows/auth.json"
sleep 100
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"

# Wait for the application to be ready
sleep 100
sleep 50

# Get the gateway URL and export it and
# Expose the service inside the cluster
Expand All @@ -31,6 +34,5 @@ minikube tunnel &> /dev/null &

echo "Service Mesh: $MESH_NAME - $SERVICE_MESH"
echo "Gateway URL: $GATEWAY_URL"

echo "ENDPOINT_URL=$GATEWAY_URL/productpage" >> $GITHUB_ENV
echo "SERVICE_MESH=$SERVICE_MESH" >> $GITHUB_ENV
21 changes: 12 additions & 9 deletions .github/workflows/scripts/linkerd_deploy.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,19 @@
export MESH_NAME='Linkerd'
export SERVICE_MESH='LINKERD'

curl -fsL https://run.linkerd.io/install | sh
export PATH=$PATH:/home/runner/.linkerd2/bin
linkerd version
linkerd check --pre
linkerd install | kubectl apply -f -
linkerd check
# Check if mesheryctl is present, else install it
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=linkerd PLATFORM=kubernetes bash -
fi

curl -fsL https://run.linkerd.io/emojivoto.yml | kubectl apply -f -
kubectl -n emojivoto port-forward svc/web-svc 8080:80 &> /dev/null &
kubectl get -n emojivoto deploy -o yaml | linkerd inject - | kubectl apply -f -
curl -fsL https://run.linkerd.io/emojivoto.yml --output emojivoto.yml
sleep 10
mesheryctl system login --provider None
mesheryctl mesh deploy adapter meshery-linkerd:10001
echo "Onboarding application... Standby for few minutes..."
mesheryctl app onboard -f "./emojivoto.yml"
#mesheryctl pattern apply -f "./emojivoto.yml"

# Wait for the application to be ready
sleep 100
Expand Down
25 changes: 13 additions & 12 deletions .github/workflows/scripts/osm_deploy.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,19 @@
export MESH_NAME='Open Service Mesh'
export SERVICE_MESH='OPEN_SERVICE_MESH'

system=$(uname -s)
release=v1.0.0
curl -L https://github.com/openservicemesh/osm/releases/download/${release}/osm-${release}-${system,,}-amd64.tar.gz | tar -vxzf -
./${system,,}-amd64/osm install \
--set=OpenServiceMesh.enablePermissiveTrafficPolicy=true \
--set=OpenServiceMesh.deployPrometheus=true \
--set=OpenServiceMesh.deployGrafana=true \
--set=OpenServiceMesh.deployJaeger=true

kubectl create namespace bookstore
./${system,,}-amd64/osm namespace add bookstore
kubectl apply -f https://raw.githubusercontent.com/openservicemesh/osm/release-v0.11/docs/example/manifests/apps/bookstore.yaml
# Check if mesheryctl is present, else install it
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=osm PLATFORM=kubernetes bash -
fi

curl -fsL https://raw.githubusercontent.com/openservicemesh/osm-docs/main/manifests/apps/bookstore.yaml --output bookstore.yaml
sleep 10
mesheryctl system login --provider None
mesheryctl mesh deploy adapter meshery-osm:10009
echo "Onboarding application... Standby for few minutes..."
mesheryctl app onboard -f "./bookstore.yaml"
#mesheryctl pattern apply -f "https://raw.githubusercontent.com/openservicemesh/osm-docs/main/manifests/apps/bookstore.yaml" --token "./.github/workflows/auth.json"

sleep 100

Expand Down

0 comments on commit 33a35e8

Please sign in to comment.