Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/layer5io/meshery-cloud-native-patterns-action

GitHub Action to apply Cloud Native Patterns in CI/CD pipelines
https://github.com/layer5io/meshery-cloud-native-patterns-action

cloud-native-designs cloud-native-patterns hacktoberfest iac kubernetes kubernetes-configuration meshery

Last synced: 12 days ago
JSON representation

GitHub Action to apply Cloud Native Patterns in CI/CD pipelines

Awesome Lists containing this project

README

        

# Meshery - Cloud Native Patterns GitHub Action

GitHub Action to deploy [Cloud Native Patterns](https://layer5.io/learn/service-mesh-books/service-mesh-patterns) on CI/CD pipelines.

## Learn More

- [Functionality: Service Mesh Patterns](https://docs.meshery.io/functionality/pattern-management)
- [Configuring your Deployment with Patterns, Filters and Applications](https://docs.meshery.io/guides/configuration-management#configuring-your-deployment-with-patterns-filters-and-applicatio)

## Supported Service Meshes

Among hundreds of other cloud, native integrations,
Meshery supports 10 different service meshes.

See all Supported Service Meshes



## Usage

See [action.yml](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.

### Sample Configurations

#### Deploying a pattern with URL

```yaml
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 }}
```

### Sample Pattern File

```yaml
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
```

## 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 Cloud Native 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.