{"id":18960807,"url":"https://github.com/layer5io/meshery-cloud-native-patterns-action","last_synced_at":"2025-04-19T10:49:34.694Z","repository":{"id":45346137,"uuid":"421067345","full_name":"layer5io/meshery-cloud-native-patterns-action","owner":"layer5io","description":"GitHub Action to apply Cloud Native Patterns in CI/CD pipelines","archived":false,"fork":false,"pushed_at":"2024-09-30T13:00:54.000Z","size":198,"stargazers_count":12,"open_issues_count":0,"forks_count":9,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-03-29T07:11:18.286Z","etag":null,"topics":["cloud-native-designs","cloud-native-patterns","hacktoberfest","iac","kubernetes","kubernetes-configuration","meshery"],"latest_commit_sha":null,"homepage":"https://service-mesh-patterns.github.io/service-mesh-patterns/","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/layer5io.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING-gitflow.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null}},"created_at":"2021-10-25T14:53:01.000Z","updated_at":"2024-10-09T02:48:28.000Z","dependencies_parsed_at":"2023-10-13T10:50:59.651Z","dependency_job_id":null,"html_url":"https://github.com/layer5io/meshery-cloud-native-patterns-action","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":"layer5io/layer5-repo-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/layer5io%2Fmeshery-cloud-native-patterns-action","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/layer5io%2Fmeshery-cloud-native-patterns-action/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/layer5io%2Fmeshery-cloud-native-patterns-action/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/layer5io%2Fmeshery-cloud-native-patterns-action/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/layer5io","download_url":"https://codeload.github.com/layer5io/meshery-cloud-native-patterns-action/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249195360,"owners_count":21228184,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloud-native-designs","cloud-native-patterns","hacktoberfest","iac","kubernetes","kubernetes-configuration","meshery"],"created_at":"2024-11-08T14:09:32.610Z","updated_at":"2025-04-16T04:32:19.093Z","avatar_url":"https://github.com/layer5io.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Meshery - Cloud Native Patterns GitHub Action\n\nGitHub Action to deploy [Cloud Native Patterns](https://layer5.io/learn/service-mesh-books/service-mesh-patterns) on CI/CD pipelines.\n\n## Learn More\n\n- [Functionality: Service Mesh Patterns](https://docs.meshery.io/functionality/pattern-management)\n- [Configuring your Deployment with Patterns, Filters and Applications](https://docs.meshery.io/guides/configuration-management#configuring-your-deployment-with-patterns-filters-and-applicatio)\n\n## Supported Service Meshes\n\nAmong hundreds of other cloud, native integrations,\nMeshery supports 10 different service meshes.\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003cstrong\u003eSee all Supported Service Meshes\u003c/strong\u003e\u003c/summary\u003e\n\u003cdiv class=\"container flex\"\u003e\n  \u003cdiv class=\"text editable\"\u003e\n    \u003cp\u003eService mesh adapters provision, configure, and manage their respective service meshes.\n      \u003ctable class=\"adapters\"\u003e\n        \u003cthead style=\"display:none;\"\u003e\n          \u003cth\u003eStatus\u003c/th\u003e\n          \u003cth\u003eAdapter\u003c/th\u003e\n        \u003c/thead\u003e\n        \u003ctbody\u003e\n        \u003ctr\u003e\n          \u003ctd rowspan=\"9\" class=\"stable-adapters\"\u003estable\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n          \u003ctd\u003e\u003ca href=\"https://github.com/layer5io/meshery-istio\"\u003e\n            \u003cimg src='https://docs.meshery.io/assets/img/service-meshes/istio.svg' alt='Meshery Adapter for Istio Service Mesh' align=\"middle\" hspace=\"10px\" vspace=\"5px\" height=\"30px\" \u003e Meshery adapter for Istio\u003c/a\u003e\n          \u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n          \u003ctd\u003e\u003ca href=\"https://github.com/layer5io/meshery-linkerd\"\u003e\n            \u003cimg src='https://docs.meshery.io/assets/img/service-meshes/linkerd.svg' alt='Linkerd' align=\"middle\" hspace=\"5px\" vspace=\"5px\" height=\"30px\" width=\"30px\"\u003e Meshery adapter for Linkerd\u003c/a\u003e\n          \u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n          \u003ctd\u003e\u003ca href=\"https://github.com/layer5io/meshery-consul\"\u003e\n            \u003cimg src='https://docs.meshery.io/assets/img/service-meshes/consul.svg' alt='Consul Connect' align=\"middle\" hspace=\"5px\" vspace=\"5px\" height=\"30px\" width=\"30px\"\u003e Meshery adapter for Consul\u003c/a\u003e\n          \u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n          \u003ctd\u003e\u003ca href=\"https://github.com/layer5io/meshery-octarine\"\u003e\n            \u003cimg src='https://docs.meshery.io/assets/img/service-meshes/octarine.svg' alt='Octarine Service Mesh' align=\"middle\" hspace=\"5px\" vspace=\"5px\" height=\"30px\" width=\"30px\"\u003eMeshery adapter for Octarine\u003c/a\u003e\n          \u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n          \u003ctd\u003e\u003ca href=\"https://github.com/layer5io/meshery-nsm\"\u003e\n            \u003cimg src='https://docs.meshery.io/assets/img/service-meshes/nsm.svg' alt='Network Mesh' align=\"middle\" hspace=\"5px\" vspace=\"5px\" height=\"30px\" width=\"30px\"\u003eMeshery adapter for Network Service Mesh\u003c/a\u003e\n          \u003c/td\u003e\n        \u003c/tr\u003e\n         \u003ctr\u003e\n           \u003ctd\u003e\u003ca href=\"https://github.com/layer5io/meshery-kuma\"\u003e\n             \u003cimg src='https://docs.meshery.io/assets/img/service-meshes/kuma.svg' alt='Kuma Service Mesh' align=\"middle\" hspace=\"5px\" vspace=\"5px\" height=\"30px\" width=\"30px\"\u003eMeshery adapter for Kuma\u003c/a\u003e\n           \u003c/td\u003e\n        \u003c/tr\u003e\n          \u003ctr\u003e\n          \u003ctd\u003e\u003ca href=\"https://github.com/layer5io/meshery-osm\"\u003e\n            \u003cimg src='https://docs.meshery.io/assets/img/service-meshes/osm.svg' alt='Open Service Mesh' align=\"middle\" hspace=\"5px\" vspace=\"5px\" height=\"30px\" width=\"30px\"\u003eMeshery adapter for Open Service Mesh\u003c/a\u003e\n          \u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\u003ctd colspan=\"2\" class=\"stable-adapters\"\u003e\u003c/td\u003e\u003c/tr\u003e\n        \u003ctr\u003e\n          \u003ctd rowspan=\"5\" class=\"beta-adapters\"\u003ebeta\u003c/td\u003e\n        \u003c/tr\u003e\n         \u003ctr\u003e\n          \u003ctd\u003e\u003ca href=\"https://github.com/layer5io/meshery-cpx\"\u003e\n            \u003cimg src='https://docs.meshery.io/assets/img/service-meshes/citrix.svg' alt='Citrix CPX Service Mesh' align=\"middle\" hspace=\"5px\" vspace=\"5px\" height=\"30px\" width=\"30px\"\u003eMeshery adapter for Citrix CPX\u003c/a\u003e\n          \u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n          \u003ctd\u003e\u003ca href=\"https://github.com/layer5io/meshery-traefik-mesh\"\u003e\n            \u003cimg src='https://docs.meshery.io/assets/img/service-meshes/traefik-mesh.svg' alt='Traefik Service Mesh' align=\"middle\" hspace=\"5px\" vspace=\"5px\" height=\"30px\" width=\"30px\"\u003eMeshery adapter for Traefik Mesh\u003c/a\u003e\n          \u003c/td\u003e\n        \u003c/tr\u003e\n           \u003ctr\u003e\n          \u003ctd\u003e\u003ca href=\"https://github.com/meshery/meshery-nginx-sm\"\u003e\n            \u003cimg src='https://docs.meshery.io/assets/img/service-meshes/nginx-sm.svg' alt='NGINX Service Mesh' align=\"middle\" hspace=\"5px\" vspace=\"5px\" height=\"30px\" width=\"30px\"\u003eMeshery adapter for NGINX Service Mesh\u003c/a\u003e\n          \u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\u003ctd colspan=\"2\" class=\"beta-adapters\"\u003e\u003c/td\u003e\u003c/tr\u003e\n        \u003ctr\u003e\n          \u003ctd rowspan=\"3\" class=\"alpha-adapters\"\u003ealpha\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n          \u003ctd\u003e\u003ca href=\"https://github.com/meshery/meshery-tanzu-sm\"\u003e\n            \u003cimg src='https://docs.meshery.io/assets/img/service-meshes/tanzu.svg' alt='Tanzu Service Mesh' align=\"middle\" hspace=\"5px\" vspace=\"5px\" height=\"30px\" width=\"30px\"\u003eMeshery adapter for Tanzu SM\u003c/a\u003e\n          \u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n          \u003ctd\u003e\u003ca href=\"https://github.com/meshery/meshery-app-mesh\"\u003e\n            \u003cimg src='https://docs.meshery.io/assets/img/service-meshes/app-mesh.svg' alt='AWS App Mesh Service Mesh' align=\"middle\" hspace=\"5px\" vspace=\"5px\" height=\"30px\" width=\"30px\"\u003eMeshery adapter for App Mesh\u003c/a\u003e\n          \u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\u003ctd colspan=\"2\" class=\"alpha-adapters\"\u003e\u003c/td\u003e\u003c/tr\u003e\n        \u003c/tbody\u003e\n    \u003c/table\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n \u003c/details\u003e\n\n## Usage\n\nSee [action.yml](action.yml)\n\nUsers 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.\n\n### Sample Configurations\n\n#### Deploying a pattern with URL\n\n```yaml\nname: Apply Service Mesh Pattern with Meshery\non:\n  workflow_dispatch:\n    inputs:\n      provider_token:\n        description: \"Provider token to use\"\n        required: false\n      platform:\n        description: \"Platform to deploy Meshery to\"\n        required: false\n      pattern_url:\n        description: \"URL of the pattern to be deployed\"\n        required: false\n      pattern_file:\n        description: \"Name of the pattern file relative to the .github folder\"\n        required: false\n\njobs:\n  apply-pattern-file:\n    name: Meshery Pattern Apply \n    runs-on: ubuntu-latest\n    steps:\n      - name: Setup Kubernetes\n        uses: manusa/actions-setup-minikube@v2.4.1\n        with:\n          minikube version: 'v1.23.2'\n          kubernetes version: 'v1.22.2'\n          driver: docker\n\n      - name: Apply Pattern\n        uses: layer5io/mesheryctl-service-mesh-patterns-action@master\n        with:\n          provider_token: ${{ github.event.inputs.provider_token }}\n          platform: ${{ github.event.inputs.platform }}\n          pattern_url: ${{ github.event.inputs.pattern_url }}\n```\n\n### Sample Pattern File\n\n```yaml\nname: ImageHubRateLimit\nversion: 0.0.1\nservices:\n  generic-istio-filter:\n    type: EnvoyFilterIstio\n    namespace: istio-test\n    settings:\n      configPatches:\n        - applyTo: HTTP_FILTER\n          match:\n            context: SIDECAR_INBOUND\n            proxy:\n              proxyVersion: '^1\\.9.*'\n            listener:\n              portNumber: 9091\n              filterChain:\n                filter:\n                  name: envoy.http_connection_manager\n                  subFilter:\n                    name: envoy.router\n          patch:\n            operation: INSERT_BEFORE\n            value:\n              name: envoy.filter.http.wasm\n              config_discovery:\n                config_source:\n                  ads: {}\n                  initial_fetch_timeout: 0s\n                type_urls: [\"type.googleapis.com/envoy.extensions.filters.http.wasm.v3.Wasm\"]\n      workloadSelector:\n        labels:\n          app: api\n          version: v1\n\n  ratelimit-filter:\n    type: EnvoyFilterIstio\n    namespace: istio-test\n    settings:\n      configPatches:\n        - applyTo: EXTENSION_CONFIG\n          match:\n            context: SIDECAR_INBOUND\n          patch:\n            operation: ADD\n            value:\n              name: envoy.filter.http.wasm\n              typed_config:\n                \"@type\": type.googleapis.com/udpa.type.v1.TypedStruct\n                type_url: type.googleapis.com/envoy.extensions.filters.http.wasm.v3.Wasm\n                value:\n                  config:\n                    configuration:\n                      \"@type\": type.googleapis.com/google.protobuf.StringValue\n                      value: \"rate_limit_filter\"\n                    root_id: \"rate_limit_filter\"\n                    vm_config:\n                      code:\n                        remote:\n                          http_uri:\n                            uri: https://github.com/layer5io/image-hub/raw/master/rate-limit-filter/pkg/rate_limit_filter_bg.wasm\n                          \n                      runtime: envoy.wasm.runtime.v8\n                      vm_id: rate_limit_filter\n                      configuration:\n                        \"@type\": type.googleapis.com/google.protobuf.StringValue\n                        value: \"WwogIHsKICAgICJuYW1lIjogIi9wdWxsIiwKICAgICJydWxlIjp7CiAgICAgICJydWxlVHlwZSI6ICJyYXRlLWxpbWl0ZXIiLAogICAgICAicGFyYW1ldGVycyI6WwogICAgICAgIHsiaWRlbnRpZmllciI6ICJFbnRlcnByaXNlIiwgImxpbWl0IjogMTAwMH0sCiAgICAgICAgeyJpZGVudGlmaWVyIjogIlRlYW0iLCAibGltaXQiOiAxMDB9LAogICAgICAgIHsiaWRlbnRpZmllciI6ICJQZXJzb25hbCIsICJsaW1pdCI6IDEwfQogICAgICBdCiAgICB9CiAgfSwKICB7CiAgICAibmFtZSI6ICIvYXV0aCIsCiAgICAicnVsZSI6ewogICAgICAicnVsZVR5cGUiOiAibm9uZSIKICAgIH0KICB9LAogIHsKICAgICJuYW1lIjogIi9zaWdudXAiLAogICAgInJ1bGUiOnsKICAgICAgInJ1bGVUeXBlIjogIm5vbmUiCiAgICB9CiAgfSwKICB7CiAgICAibmFtZSI6ICIvdXBncmFkZSIsCiAgICAicnVsZSI6ewogICAgICAicnVsZVR5cGUiOiAibm9uZSIKICAgIH0KICB9Cl0=\"\n                      allow_precompiled: true\n      workloadSelector:\n        labels:\n          app: api\n          version: v1\n    dependsOn:\n      - generic-istio-filter\n```\n\n## Join the Community!\n\n\u003ca name=\"contributing\"\u003e\u003c/a\u003e\u003ca name=\"community\"\u003e\u003c/a\u003e\nOur projects are community-built and welcome collaboration. 👍 Be sure to see the \u003ca href=\"https://docs.google.com/document/d/17OPtDE_rdnPQxmk2Kauhm3GwXF1R5dZ3Cj8qZLKdo5E/edit\"\u003eLayer5 Community Welcome Guide\u003c/a\u003e for a tour of resources available to you and jump into our \u003ca href=\"http://slack.layer5.io\"\u003eSlack\u003c/a\u003e!\n\n\u003cp style=\"clear:both;\"\u003e\n\u003ca href =\"https://layer5.io/community/meshmates\"\u003e\u003cimg alt=\"MeshMates\" src=\".github/readme/images/Layer5-MeshMentors-1.png\" style=\"margin-right:10px; margin-bottom:15px;\" width=\"28%\" align=\"left\"/\u003e\u003c/a\u003e\n\u003ch3\u003eFind your MeshMate\u003c/h3\u003e\n\n\u003cp\u003eMeshMates are experienced Layer5 community members, who will help you learn your way around, discover live projects and expand your community network. \nBecome a \u003cb\u003eMeshtee\u003c/b\u003e today!\u003c/p\u003e\n\nFind out more on the \u003ca href=\"https://layer5.io/community\"\u003eLayer5 community\u003c/a\u003e. \u003cbr /\u003e\n\u003cbr /\u003e\u003cbr /\u003e\u003cbr /\u003e\u003cbr /\u003e\n\u003c/p\u003e\n\n\u003cdiv\u003e\u0026nbsp;\u003c/div\u003e\n\n\u003ca href=\"https://slack.meshery.io\"\u003e\n\n\u003cpicture align=\"right\"\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\".github/readme/images//slack-dark-128.png\"  width=\"110px\" align=\"right\" style=\"margin-left:10px;margin-top:10px;\"\u003e\n  \u003csource media=\"(prefers-color-scheme: light)\" srcset=\".github/readme/images//slack-128.png\" width=\"110px\" align=\"right\" style=\"margin-left:10px;padding-top:5px;\"\u003e\n  \u003cimg alt=\"Shows an illustrated light mode meshery logo in light color mode and a dark mode meshery logo dark color mode.\" src=\".github/readme/images//slack-128.png\" width=\"110px\" align=\"right\" style=\"margin-left:10px;padding-top:13px;\"\u003e\n\u003c/picture\u003e\n\u003c/a\u003e\n\n\n\u003ca href=\"https://meshery.io/community\"\u003e\u003cimg alt=\"Layer5 Cloud Native Community\" src=\".github/readme/images//community.svg\" style=\"margin-right:8px;padding-top:5px;\" width=\"140px\" align=\"left\" /\u003e\u003c/a\u003e\n\n\u003cp\u003e\n✔️ \u003cem\u003e\u003cstrong\u003eJoin\u003c/strong\u003e\u003c/em\u003e any or all of the weekly meetings on \u003ca href=\"https://calendar.google.com/calendar/b/1?cid=bGF5ZXI1LmlvX2VoMmFhOWRwZjFnNDBlbHZvYzc2MmpucGhzQGdyb3VwLmNhbGVuZGFyLmdvb2dsZS5jb20\"\u003ecommunity calendar\u003c/a\u003e.\u003cbr /\u003e\n✔️ \u003cem\u003e\u003cstrong\u003eWatch\u003c/strong\u003e\u003c/em\u003e community \u003ca href=\"https://www.youtube.com/playlist?list=PL3A-A6hPO2IMPPqVjuzgqNU5xwnFFn3n0\"\u003emeeting recordings\u003c/a\u003e.\u003cbr /\u003e\n✔️ \u003cem\u003e\u003cstrong\u003eAccess\u003c/strong\u003e\u003c/em\u003e the \u003ca href=\"https://drive.google.com/drive/u/4/folders/0ABH8aabN4WAKUk9PVA\"\u003eCommunity Drive\u003c/a\u003e by completing a community \u003ca href=\"https://layer5.io/newcomer\"\u003eMember Form\u003c/a\u003e.\u003cbr /\u003e\n✔️ \u003cem\u003e\u003cstrong\u003eDiscuss\u003c/strong\u003e\u003c/em\u003e in the \u003ca href=\"https://discuss.layer5.io\"\u003eCommunity Forum\u003c/a\u003e.\u003cbr /\u003e\n\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n\u003ci\u003eNot sure where to start?\u003c/i\u003e Grab an open issue with the \u003ca href=\"https://github.com/issues?q=is%3Aopen+is%3Aissue+archived%3Afalse+org%3Alayer5io+org%3Ameshery+org%3Aservice-mesh-performance+org%3Aservice-mesh-patterns+label%3A%22help+wanted%22+\"\u003ehelp-wanted label\u003c/a\u003e.\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flayer5io%2Fmeshery-cloud-native-patterns-action","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flayer5io%2Fmeshery-cloud-native-patterns-action","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flayer5io%2Fmeshery-cloud-native-patterns-action/lists"}