All Projects → layer5io → learn-layer5

layer5io / learn-layer5

Licence: Apache-2.0 license
A sample application for learning how to service mesh and for validating SMI conformance

Programming Languages

go
31211 projects - #10 most used programming language
Mustache
554 projects
Dockerfile
14818 projects
Makefile
30231 projects

Projects that are alternatives of or similar to learn-layer5

meshery-operator
The service mesh operator.
Stars: ✭ 41 (-4.65%)
Mutual labels:  consul, service-mesh, linkerd, istio, kuma, meshery, maesh
meshery
Meshery, the cloud native manager
Stars: ✭ 1,587 (+3590.7%)
Mutual labels:  consul, service-mesh, linkerd, istio, kuma, meshery
service-mesh-patterns
Templates of service mesh configurations imbued with best practices.
Stars: ✭ 68 (+58.14%)
Mutual labels:  consul, service-mesh, istio, kuma, meshery, service-mesh-interface
service-mesh-labs
Lab scenarios for learning how to service mesh.
Stars: ✭ 22 (-48.84%)
Mutual labels:  consul, service-mesh, linkerd, istio, kuma
meshery-consul
Meshery adapter for Consul
Stars: ✭ 50 (+16.28%)
Mutual labels:  consul, service-mesh, smi, meshery
advanced-istio-service-mesh-workshop
Advanced Istio Service Mesh Workshop
Stars: ✭ 28 (-34.88%)
Mutual labels:  service-mesh, istio, meshery, learn-service-mesh
meshery-kuma
Meshery Adapter for Kuma
Stars: ✭ 35 (-18.6%)
Mutual labels:  service-mesh, kuma, meshery
meshery-traefik-mesh
Meshery adapter for Maesh
Stars: ✭ 23 (-46.51%)
Mutual labels:  service-mesh, meshery, maesh
image-hub
Image Hub is a sample application for exploring WebAssembly modules used as Envoy filters.
Stars: ✭ 56 (+30.23%)
Mutual labels:  consul, service-mesh, meshery
Meshery
Meshery, the service mesh management plane
Stars: ✭ 608 (+1313.95%)
Mutual labels:  consul, service-mesh, istio
Layer5
Layer5, the service mesh company, representing every service mesh
Stars: ✭ 137 (+218.6%)
Mutual labels:  consul, service-mesh, istio
istio-talk
A talk on Istio and related demos
Stars: ✭ 11 (-74.42%)
Mutual labels:  service-mesh, istio
hashicorp-labs
Deploy locally on VM an Hashicorp cluster formed by Vault, Consul and Nomad. Ready for deploying and testing your apps.
Stars: ✭ 32 (-25.58%)
Mutual labels:  consul, service-mesh
merbridge
Use eBPF to speed up your Service Mesh like crossing an Einstein-Rosen Bridge.
Stars: ✭ 469 (+990.7%)
Mutual labels:  service-mesh, istio
book-source-code
Accompanying source code for Istio in Action (Manning)
Stars: ✭ 175 (+306.98%)
Mutual labels:  service-mesh, istio
php-nacos
阿里巴巴nacos配置中心-PHP客户端
Stars: ✭ 167 (+288.37%)
Mutual labels:  service-mesh, istio
shopping-cart-k8s
Service Mesh patterns for Microservices
Stars: ✭ 57 (+32.56%)
Mutual labels:  service-mesh, istio
meta-protocol-proxy
A data plane framework that supports any layer-7 protocols.
Stars: ✭ 56 (+30.23%)
Mutual labels:  service-mesh, istio
cf-k8s-networking
building a cloud foundry without gorouter....
Stars: ✭ 33 (-23.26%)
Mutual labels:  service-mesh, istio
ecs-mesh-workshop
This handy workshop help the customers to quickly launch ECS with service mesh support on top of mixed type of instance in all commercial regions (include China), and also provides hands-on tutorials with best practices. It can be customized easily as per need.
Stars: ✭ 17 (-60.47%)
Mutual labels:  service-mesh, linkerd

GitHub contributors GitHub Docker Pulls Go Report Card GitHub issues by-label Website Twitter Follow Slack CII Best Practices

Learn Layer5 (learn to service mesh)

The Learn Layer5 sample application is to be available for use across all service meshes that Meshery supports and is to used as:

Application Architecture

The Learn Layer5 application includes three services: app-a, app-b, and app-c. Though they are different services, they are defined using the same app (source code in ./service). Each service is listening on port 9091/tcp.

Service

The following are the routes defined by the service app and their functionality.

POST /call

This route makes the service make requests to another service. Metrics are collected for this route. sample usage given below:

# Command
curl --location --request POST 'http://service-a:9091/call' \
--header 'Content-Type: application/json' \
--data-raw '{
"url": "http://service-b:9091/call",
"body": "{\r\n\"url\": \"http:\/\/service-c:9091\/echo\",\r\n\"body\": \"\",\r\n\"method\": \"GET\"\r\n}",
"method": "POST",
"headers": {
    "h1":"v1"
}
}'

# No Output
GET /echo HTTP/1.1
Host: service-c:9091
User-Agent: Go-http-client/1.1
Accept-Encoding: gzip
Servicename: Service-B

In the above example, we are making a post request to service-a with the body:

{
  "url": "http://service-b:9091/call",
  "body": "{\r\n\"url\": \"http:\/\/service-c:9091\/echo\",\r\n\"body\": \"\",\r\n\"method\": \"GET\"\r\n}",
  "method": "POST",
  "headers": {
      "h1":"v1"
  }
}

This will make service-a to make a POST request to http://service-b:9091/call with the headers specified above, and the body:

{
  "url": "http://service-c:9091/echo",
  "body":"",
  "method": "GET"
}

This inturn will make service-b to make a GET request to http://service-c:9091/echo.

GET /metrics

Gets the metrics from service-a

# Command
curl --location --request GET 'http://service-b:9091/metrics'
# Output
{
    "ReqReceived": [
        "Service-A"
    ],
    "RespSucceeded": [
        {
            "URL": "http://service-c:9091/echo",
            "Method": "GET",
            "Headers": null
        }
    ],
    "RespFailed": []
}
  • In ReqReceived we see list of requests service-b received and from whom it received. Here we see service-A. Actually each of the service sets a header ServiceName which is read by the service to determine the sender.
  • As service-b made a request to service-c and the request succeeded, we can see the details in the list of successful responses (RespSucceeded).

DELETE /metrics

Clears the counters in service

# Command
curl --location --request DELETE 'http://34.68.35.174:9091/metrics'
# No Output

Note: metrics are collected only for /call and /echo.

Service Mesh Interface (SMI) Conformance

The learn-layer5 application serves as a sample application to validate the conformance of any service mesh with the SMI specifications. To verify SMI conformance, run Meshery and the Meshery adapter for the specific service mesh you wish to test. Invoke the suite of SMI conformance tests on the specific service mesh you would like to validate.

Invoking conformance tests

As a Service Mesh user Meshery allows you to schedule tests and invoke them programmatically. Meshery will store these test results and allow you to retrieve them later.

As a Service Mesh maker Meshery guarantees provenance of these tests and facilitates the public publicing of this suite of tests results into a versioned, public matrix of conformance status (consisting of both supported capabilities and test compliance).



If you’re using Learn Layer5 or if you like the project, please star this repository to show your support! 🤩

Community and Contributing

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! Contributors are expected to adhere to the CNCF Code of Conduct.

Layer5 Service Mesh Community

Layer5 Service Mesh Community

✔️ Join any or all of the weekly meetings on the community calendar.
✔️ Watch community meeting recordings.
✔️ Access the community drive.
✔️ Discuss in the Community Forum.

Not sure where to start? Grab an open issue with the help-wanted label.

About Layer5

Community First

The Layer5 community represents the largest collection of service mesh projects and their maintainers in the world.

Open Source First

We build projects to provide learning environments, deployment and operational best practices, performance benchmarks, create documentation, share networking opportunities, and more. Our shared commitment to the open source spirit pushes Layer5 projects forward.

License

This repository and site are available as open source under the terms of the Apache 2.0 License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].