Skip to content

Commit

Permalink
Merge pull request #507 from bridgetkromhout/adding-openservicemesh
Browse files Browse the repository at this point in the history
Add Open Service Mesh as CNCF Sandbox project
  • Loading branch information
Amye Scavarda Perrin committed Sep 8, 2020
2 parents 398f6be + 1d2fe50 commit 62dfab3
Showing 1 changed file with 155 additions and 0 deletions.
155 changes: 155 additions & 0 deletions proposals/sandbox/openservicemesh.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
# Open Service Mesh CNCF Sandbox Proposal

## Name of project

Open Service Mesh

## Project description

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.

## Overview

Open Service Mesh (OSM) is a lightweight and extensible cloud native service mesh.

OSM takes a simple approach for users to uniformly manage, secure, and get out-of-the box observability features for highly dynamic microservice environments.

Using the CNCF Envoy project, OSM implements Service Mesh Interface (SMI) for securing and managing your microservice applications.

### About Open Service Mesh

OSM runs on Kubernetes. The control plane implements Envoy's xDS and is configured with SMI APIs. OSM injects an Envoy proxy as a sidecar container next to each instance of an application.

The data plane (the set of Envoy proxies running as part OSM) executes rules around access control policies, implements routing configuration, and captures metrics. The control plane continually programs the data plane to ensure policies and routing rules are up to date and ensures the data plane is healthy.

### Features

- Easily and transparently configure traffic shifting for deployments
- Secure end-to-end service to service communication by enabling mTLS
- Define and execute fine grained access control policies for services
- Observability and insights into application metrics for debugging and monitoring services
- Integrate with external certificate management services/solutions with a pluggable interface
- Onboard applications onto the mesh by enabling automatic sidecar injection of Envoy proxy
- Flexible enough to handle both simple and complex scenarios through SMI and Envoy XDS APIs

## Statement on alignment with CNCF charter mission

Open Service Mesh is well-aligned with the CNCF mission to make cloud native computing ubiquitous. OSM enables users to uniformly manage, secure, and observe service-to-service communication in highly dynamic microservice environments. We hope for OSM to be a community-led project that it will spur collaboration on new and existing APIs for Service Mesh Interface (SMI), the service mesh spec which is a CNCF project. We intend for OSM to have open governance and be in a place where we can easily collaborate with the community, which is why we are donating it to the CNCF.

## Comparison with similar projects (inside or outside the CNCF), including what differentiates this project

- **[Linkerd](https://github.com/linkerd/linkerd)** is a service mesh which is an incubating CNCF project and implements SMI APIs but does not use the Envoy data plane.
- **[Kuma](https://github.com/kumahq/kuma)** is a service mesh which is a sandbox CNCF project and uses the Envoy data plane but does not implement SMI APIs.
- **[Istio](https://github.com/istio/istio)** is a non-CNCF project which is a service mesh using the Envoy data plane.

Open Service Mesh implements SMI APIs, uses the Envoy data plane, and plans to be a sandbox CNCF project.

## Sponsor from TOC

Sponsors from the TOC will be added as they are confirmed (as applicable, based on the fact we’re submitting this under the new lightweight sandbox guidelines).

## Preferred maturity level
Sandbox

## License

Currently MIT (https://github.com/openservicemesh/osm/blob/main/LICENSE) - happy to relicense to Apache2 at donation.

## Source control

We use GitHub: https://github.com/openservicemesh/osm

## External dependencies (including licenses)

Currently OSM uses go 1.14 with the following dependencies:

github.com/AlekSi/gocov-xml v0.0.0-20190121064608-3a14fb1c4737
github.com/Azure/azure-sdk-for-go v34.0.0+incompatible
github.com/Azure/go-autorest/autorest v0.10.0
github.com/Azure/go-autorest/autorest/azure/auth v0.1.0
github.com/Azure/go-autorest/autorest/to v0.2.0
github.com/Azure/go-autorest/autorest/validation v0.1.0 // indirect
github.com/Masterminds/semver/v3 v3.1.0
github.com/axw/gocov v1.0.0
github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354 // indirect
github.com/deckarep/golang-set v1.7.1
github.com/envoyproxy/go-control-plane v0.9.6
github.com/golang/protobuf v1.4.2
github.com/golangci/golangci-lint v1.30.0
github.com/google/go-cmp v0.5.0
github.com/google/uuid v1.1.1
github.com/googleapis/gnostic v0.3.1 // indirect
github.com/gorilla/mux v1.7.3
github.com/hashicorp/vault/api v1.0.4
github.com/jinzhu/copier v0.0.0-20190924061706-b57f9002281a
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024
github.com/matm/gocov-html v0.0.0-20200509184451-71874e2e203b
github.com/mitchellh/gox v1.0.1
github.com/onsi/ginkgo v1.13.0
github.com/onsi/gomega v1.10.1
github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4
github.com/pkg/errors v0.9.1
github.com/prometheus/client_golang v1.0.0
github.com/rs/zerolog v1.18.0
github.com/servicemeshinterface/smi-sdk-go v0.4.1
github.com/spf13/cobra v1.0.0
github.com/spf13/pflag v1.0.5
golang.org/x/lint v0.0.0-20200302205851-738671d3881b
google.golang.org/grpc v1.27.0
gopkg.in/yaml.v2 v2.3.0
helm.sh/helm/v3 v3.2.0
k8s.io/api v0.18.0
k8s.io/apimachinery v0.18.0
k8s.io/cli-runtime v0.18.0
k8s.io/client-go v0.18.0
k8s.io/kube-openapi v0.0.0-20200410145947-61e04a5be9a6 // indirect
rsc.io/letsencrypt v0.0.3 // indirect

## Initial committers (how long working on project, companies they represent)

Currently 25 committers over the last 8 months. While the committers thus far are from Microsoft, our intent is community ownership, governance, and contribution.

## Infrastructure requests (CI / CNCF Cluster)

We have no infrastructure requests at this time.

## Communication channels (slack, irc, mailing lists)

So far we have a google group mailing list (https://groups.google.com/g/openservicemesh) and GitHub. We have requested a channel on Kubernetes Slack: https://github.com/kubernetes/community/issues/5009

## Issue tracker

https://github.com/openservicemesh/osm/issues

## Website

https://openservicemesh.io/

## Release methodology and mechanics

Checklist in progress https://github.com/openservicemesh/osm/issues/1406

Here’s what we did for the initial release:

- Enter desired release number on the main branch, like v.0.1.0
- Create a release branch called release-v0.1.0
- Send PRs/commits to that branch which updates the chart AppVersion and default image tag version
- Cut a release by checking out the release branch and pushing a tag v0.1.0 to origin which will kick off the GitHub Action to cut all the artifacts

## Social media accounts

Twitter: @openservicemesh

## Community size and any existing sponsorship

We have about 25 committers from Microsoft thus far, but now that we’re open source we plan to build a broad-based open source community. As for sponsorship, Microsoft currently pays for the project’s GitHub Actions.

## Who is currently known to be using the project? Are they using it in production and at what scale? (It may be hard to obtain accurate data for this, but any supporting evidence of usage is helpful)

As this is a brand new open source project, all usage is yet to come.

## Project logo in svg format

All logos are available in https://github.com/openservicemesh/osm/tree/main/community/logos

The svg main logo is here: https://github.com/openservicemesh/osm/blob/main/community/logos/osm-logo.svg

0 comments on commit 62dfab3

Please sign in to comment.