Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Open Service Mesh as CNCF Sandbox project #507

Merged
merged 3 commits into from
Sep 8, 2020
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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