Skip to content
This repository was archived by the owner on Oct 20, 2023. It is now read-only.

Commit 9846a95

Browse files
author
Michelle Noorali
authored
Merge pull request #176 from michelleN/release/v0.4.0
prepare repo for v0.4.0 release
2 parents 9e14bba + a5e8938 commit 9846a95

File tree

4 files changed

+153
-3
lines changed

4 files changed

+153
-3
lines changed

README.md

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,20 @@ of providers. This allows for both standardization for end-users and innovation
1111
by providers of Service Mesh Technology. SMI enables flexibility and
1212
interoperability, and covers the most common service mesh capabilities.
1313

14-
Find the full specification [here](SPEC.md).
14+
### Service Mesh Interface Documents
15+
16+
The following documents are available:
17+
18+
| | Latest Release | Working Draft |
19+
| :---------------------------- | :--------------------------------: | :----------------------------------------: |
20+
| **Core Specification:** |
21+
| SMI Specification | [v0.4.0](/SPEC_LATEST_STABLE.md) | [v0.5.0-WD](/SPEC_WORKING_DRAFT.md) |
22+
| |
23+
| **Specification Components** |
24+
| Traffic Access Control | [v1alpha1](/apis/traffic-access/v1alpha1/traffic-access.md) | [v1alpha2-WD](/apis/traffic-access/traffic-access-WD.md) |
25+
| Traffic Metrics | [v1alpha1](/apis/traffic-metrics/v1alpha1/traffic-metrics.md) | [v1alpha2-WD](/apis/traffic-metrics/traffic-metrics-WD.md) |
26+
| Traffic Specs | [v1alpha2](/apis/traffic-specs/v1alpha2/traffic-specs.md) | [v1alpha3-WD](/apis/traffic-specs/traffic-specs-WD.md) |
27+
| Traffic Split | [v1alpha3](/apis/traffic-split/v1alpha3/traffic-split.md) | [v1alpha4-WD](/apis/traffic-split/traffic-split-WD.md) |
1528

1629
## Ecosystem
1730

SPEC.md renamed to SPEC_LATEST_STABLE.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@
22

33
## Version
44

5-
This is SMI **spec** version **v0.4.0-WD**.
6-
WD stands for `working draft`.
5+
This is SMI **spec** version **v0.4.0**.
76
Learn more about versioning [below](#versioning).
87

98
## Table of Contents

SPEC_WORKING_DRAFT.md

Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
# Service Mesh Interface
2+
3+
## Version
4+
5+
This is SMI **spec** version **v0.5.0-WD**.
6+
Learn more about versioning [below](#versioning).
7+
8+
## Table of Contents
9+
10+
- [Abstract](#abstract)
11+
- [Objective](#objective)
12+
- [Technical Overview](#technical-overview)
13+
- [APIs](#apis)
14+
- [Traffic Access Control](#traffic-access-control)
15+
- [Traffic Split](#traffic-split)
16+
- [Traffic Specs](#traffic-specs)
17+
- [Traffic Metrics](#traffic-metrics)
18+
- [Appendix](#appendix)
19+
- [Terminology](#terminology)
20+
- [API Development Process](#api-development-process)
21+
- [Versioning](#versioning)
22+
23+
## Abstract
24+
25+
The Service Mesh Interface (SMI) is a specification for service meshes that run
26+
on Kubernetes. It defines a common standard that can be implemented by a variety
27+
of providers. This allows for both standardization for end-users and innovation
28+
by providers of Service Mesh Technology. SMI enables flexibility and
29+
interoperability, and covers the most common service mesh capabilities.
30+
31+
## Objective
32+
33+
### Goals
34+
35+
The goal of the SMI API is to provide a common, portable set of Service Mesh
36+
APIs which a Kubernetes user can use in a provider agnostic manner. In this way
37+
people can define applications that use Service Mesh technology without tightly
38+
binding to any specific implementation.
39+
40+
### Non-Goals
41+
42+
It is a non-goal for the SMI project to implement a service mesh itself. It
43+
merely attempts to define the common specification. Likewise it is a non-goal to
44+
define the extent of what it means to be a Service Mesh, but rather a generally
45+
useful subset. If SMI providers want to add provider specific extensions and
46+
APIs beyond the SMI spec, they are welcome to do so. We expect that, over time,
47+
as more functionality becomes commonly accepted as part of what it means to be a
48+
Service Mesh, those definitions will migrate into the SMI specification.
49+
50+
## Technical Overview
51+
52+
The SMI is specified as a collection of Kubernetes APIs via Kubernetes Custom
53+
Resource Definitions (CRD) and Extension API Servers. These APIs can be
54+
installed onto any Kubernetes cluster and manipulated using standard tools.
55+
The APIs require an SMI provider to do something.
56+
57+
To activate these APIs an SMI provider is run in the Kubernetes cluster. For the
58+
resources that enable configuration, the SMI provider reflects back on their
59+
contents and configures the provider's components within a cluster to implement
60+
the desired behavior. In the case of extension APIs, the SMI provider translates
61+
from internal types to those the API expects to return.
62+
63+
This approach to pluggable interfaces is similar to other core Kubernetes APIs
64+
like [NetworkPolicy][1], [Ingress][2] and [CustomMetrics][3].
65+
66+
## APIs
67+
68+
Find each API described at a high level below. Follow the links to see the
69+
individual API specification documents for the details. Each document outlines:
70+
71+
- Specification
72+
- Possible use cases
73+
- Example implementations
74+
- Tradeoffs
75+
76+
_Note: historical versions of the API specification as well as current working
77+
drafts can be found under the [apis/ directory](apis/)_
78+
79+
### Traffic Access Control
80+
81+
Apply policies like identity and transport encryption across services.
82+
83+
The [Traffic Access Control](apis/traffic-access/traffic-access-WD.md) API
84+
describes a resource to configure access to specific pods and routes based
85+
on the identity of a client for locking down applications to only allowed
86+
users and services.
87+
88+
### Traffic Split
89+
90+
Shift traffic between different services.
91+
92+
The [Traffic Split](apis/traffic-split/traffic-split-WD.md) API describes
93+
a resource to incrementally direct percentages of traffic between various services
94+
to assist in building out canary rollouts.
95+
96+
### Traffic Specs
97+
98+
Describe traffic on a per-protocol basis.
99+
100+
The [Traffic Specs](apis/traffic-specs/traffic-specs-WD.md) API describes
101+
a set of resources to define how traffic looks on a per-protocol basis. These
102+
resources work in concert with access control and other types of policy to manage
103+
traffic at a protocol level.
104+
105+
### Traffic Metrics
106+
107+
Capture key metrics like error rate and latency between services.
108+
109+
The [Traffic Metrics](apis/traffic-metrics/traffic-metrics-WD.md) API
110+
exposes common traffic metrics for use by tools such as dashboards and autoscalers.
111+
112+
## Appendix
113+
114+
### Terminology
115+
116+
- **SMI Provider**: An implementor of SMI. This could be a service mesh.
117+
- **API Group**: A set of resources that are exposed together. Each group may have
118+
one or more versions that evolve independently of other API Groups. Group names are
119+
in domain form.
120+
121+
### API Development Process
122+
123+
Please submit an issue or a pull request to this repository to propose a change.
124+
Changes are discussed on the [SMI community meetings](README.md/#communications).
125+
Changes should be made to working draft documents of each API which can be found
126+
in the corresponding directories under [apis/](apis/). Current working drafts
127+
documents have a suffix **-WD.md**
128+
129+
### Versioning
130+
131+
The spec has its own version listed [above](#version). This version describes the
132+
specification in its entirety. Although it is not related to the API specification
133+
versions, the minor version of the spec will be incremented every time any of the
134+
API Specification versions are incremented.
135+
136+
[1]: https://kubernetes.io/docs/concepts/services-networking/network-policies/
137+
[2]: https://kubernetes.io/docs/concepts/services-networking/ingress/
138+
[3]: https://github.com/kubernetes/metrics#custom-metrics-api

0 commit comments

Comments
 (0)