GitHub Action to deploy Cloud Native Patterns on CI/CD pipelines.
- Functionality: Service Mesh Patterns
- Configuring your Deployment with Patterns, Filters and Applications
Among hundreds of other cloud, native integrations, Meshery supports 10 different service meshes.
See all Supported Service Meshes
Service mesh adapters provision, configure, and manage their respective service meshes.
See action.yml
Users can define pattern files and store it in a remote location and pass the URL to the action or directly keep the file in the .github
folder and reference it by file name.
name: Apply Service Mesh Pattern with Meshery
on:
workflow_dispatch:
inputs:
provider_token:
description: "Provider token to use"
required: false
platform:
description: "Platform to deploy Meshery to"
required: false
pattern_url:
description: "URL of the pattern to be deployed"
required: false
pattern_file:
description: "Name of the pattern file relative to the .github folder"
required: false
jobs:
apply-pattern-file:
name: Meshery Pattern Apply
runs-on: ubuntu-latest
steps:
- name: Setup Kubernetes
uses: manusa/[email protected]
with:
minikube version: 'v1.23.2'
kubernetes version: 'v1.22.2'
driver: docker
- name: Apply Pattern
uses: layer5io/mesheryctl-service-mesh-patterns-action@master
with:
provider_token: ${{ github.event.inputs.provider_token }}
platform: ${{ github.event.inputs.platform }}
pattern_url: ${{ github.event.inputs.pattern_url }}
name: ImageHubRateLimit
version: 0.0.1
services:
generic-istio-filter:
type: EnvoyFilterIstio
namespace: istio-test
settings:
configPatches:
- applyTo: HTTP_FILTER
match:
context: SIDECAR_INBOUND
proxy:
proxyVersion: '^1\.9.*'
listener:
portNumber: 9091
filterChain:
filter:
name: envoy.http_connection_manager
subFilter:
name: envoy.router
patch:
operation: INSERT_BEFORE
value:
name: envoy.filter.http.wasm
config_discovery:
config_source:
ads: {}
initial_fetch_timeout: 0s
type_urls: ["type.googleapis.com/envoy.extensions.filters.http.wasm.v3.Wasm"]
workloadSelector:
labels:
app: api
version: v1
ratelimit-filter:
type: EnvoyFilterIstio
namespace: istio-test
settings:
configPatches:
- applyTo: EXTENSION_CONFIG
match:
context: SIDECAR_INBOUND
patch:
operation: ADD
value:
name: envoy.filter.http.wasm
typed_config:
"@type": type.googleapis.com/udpa.type.v1.TypedStruct
type_url: type.googleapis.com/envoy.extensions.filters.http.wasm.v3.Wasm
value:
config:
configuration:
"@type": type.googleapis.com/google.protobuf.StringValue
value: "rate_limit_filter"
root_id: "rate_limit_filter"
vm_config:
code:
remote:
http_uri:
uri: https://github.com/layer5io/image-hub/raw/master/rate-limit-filter/pkg/rate_limit_filter_bg.wasm
runtime: envoy.wasm.runtime.v8
vm_id: rate_limit_filter
configuration:
"@type": type.googleapis.com/google.protobuf.StringValue
value: "WwogIHsKICAgICJuYW1lIjogIi9wdWxsIiwKICAgICJydWxlIjp7CiAgICAgICJydWxlVHlwZSI6ICJyYXRlLWxpbWl0ZXIiLAogICAgICAicGFyYW1ldGVycyI6WwogICAgICAgIHsiaWRlbnRpZmllciI6ICJFbnRlcnByaXNlIiwgImxpbWl0IjogMTAwMH0sCiAgICAgICAgeyJpZGVudGlmaWVyIjogIlRlYW0iLCAibGltaXQiOiAxMDB9LAogICAgICAgIHsiaWRlbnRpZmllciI6ICJQZXJzb25hbCIsICJsaW1pdCI6IDEwfQogICAgICBdCiAgICB9CiAgfSwKICB7CiAgICAibmFtZSI6ICIvYXV0aCIsCiAgICAicnVsZSI6ewogICAgICAicnVsZVR5cGUiOiAibm9uZSIKICAgIH0KICB9LAogIHsKICAgICJuYW1lIjogIi9zaWdudXAiLAogICAgInJ1bGUiOnsKICAgICAgInJ1bGVUeXBlIjogIm5vbmUiCiAgICB9CiAgfSwKICB7CiAgICAibmFtZSI6ICIvdXBncmFkZSIsCiAgICAicnVsZSI6ewogICAgICAicnVsZVR5cGUiOiAibm9uZSIKICAgIH0KICB9Cl0="
allow_precompiled: true
workloadSelector:
labels:
app: api
version: v1
dependsOn:
- generic-istio-filter
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 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.
✔️ 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.