Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Linkerd2 | 9,903 | 12 | a day ago | 108 | March 23, 2022 | 249 | apache-2.0 | Go | ||
Ultralight, security-first service mesh for Kubernetes. Main repo for Linkerd 2.x. | ||||||||||
Easegress | 5,556 | 3 days ago | 33 | August 02, 2023 | 50 | apache-2.0 | Go | |||
A Cloud Native traffic orchestration system | ||||||||||
Linkerd | 5,372 | 11 | 7 months ago | 21 | November 17, 2017 | 146 | apache-2.0 | Scala | ||
Old repo for Linkerd 1.x. See the linkerd2 repo for Linkerd 2.x. | ||||||||||
Mosn | 4,247 | 2 | a month ago | 95 | April 25, 2023 | 268 | apache-2.0 | Go | ||
The Cloud-Native Network Proxy Platform | ||||||||||
Kuma | 3,288 | 2 | a day ago | 162 | April 22, 2021 | 377 | apache-2.0 | Go | ||
🐻 The multi-zone service mesh for containers, Kubernetes and VMs. Built with Envoy. CNCF Sandbox Project. | ||||||||||
Kiali | 3,194 | 2 | 12 | a day ago | 394 | September 20, 2022 | 157 | apache-2.0 | TypeScript | |
Kiali project, observability for the Istio service mesh | ||||||||||
Osm | 2,585 | 9 | 3 months ago | 364 | April 20, 2023 | apache-2.0 | Go | |||
Open Service Mesh (OSM) is a lightweight, extensible, cloud native service mesh that allows users to uniformly manage, secure, and get out-of-the-box observability features for highly dynamic microservice environments. | ||||||||||
Coolstore Microservices | 2,215 | 7 months ago | 25 | mit | C# | |||||
A full-stack .NET microservices build on Dapr and Tye | ||||||||||
Mesh | 1,901 | 6 months ago | 30 | August 19, 2022 | 36 | apache-2.0 | Go | |||
Traefik Mesh - Simpler Service Mesh | ||||||||||
Kubernetes Vagrant Centos Cluster | 1,827 | a year ago | 17 | apache-2.0 | Shell | |||||
Setting up a distributed Kubernetes cluster along with Istio service mesh locally with Vagrant and VirtualBox, only PoC or Demo use. |
The Learn Layer5 sample application is to be available for use across all service meshes that Meshery supports and is to used as:
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
.
The following are the routes defined by the service
app and their functionality.
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
.
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": []
}
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.service-b
made a request to service-c
and the request succeeded, we can see the details in the list of successful responses (RespSucceeded).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
.
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.
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! 🤩
✔️ 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.
Layer5's cloud native application and infrastructure management software enables organizations to expect more from their infrastructure. We embrace developer-defined infrastructure. We empower engineer to change how they write applications, support operators in rethinking how they run modern infrastructure and enable product owners to regain full control over their product portfolio.
License
This repository and site are available as open source under the terms of the Apache 2.0 License.