Skip to content

Commit 90de379

Browse files
authored
Point spec files and runtime contract file to the specs repo (#10967)
1 parent e66e402 commit 90de379

File tree

6 files changed

+6
-661
lines changed

6 files changed

+6
-661
lines changed

docs/runtime-contract.md

Lines changed: 1 addition & 537 deletions
Large diffs are not rendered by default.

docs/spec/README.md

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,3 @@
11
# Knative Serving Specification
22

3-
The Knative Serving specifications have been moved. See the links below for
4-
document locations:
5-
6-
- [Knative Serving API Specification](https://github.com/knative/docs/blob/main/docs/serving/spec/).
7-
- [Knative Serving Runtime Specification](https://github.com/knative/serving/blob/main/docs/runtime-contract.md)
8-
- [Knative Serving Conformance Tests](/test/conformance)
9-
10-
Docs in this directory:
11-
12-
- [Motivation and goals](motivation.md)
13-
- [Resource type overview](overview.md)
3+
This file has been moved to the [Knative Specs Repository](https://github.com/knative/specs/blob/main/specs/serving/README.md)

docs/spec/errors.md

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,3 @@
11
# Error Conditions and Reporting
22

3-
This document has been replaced by the
4-
[Error Signalling](https://github.com/knative/docs/blob/main/docs/serving/spec/knative-api-specification-1.0.md#error-signalling)
5-
section of the
6-
[Knative API Specification](https://github.com/knative/docs/blob/main/docs/serving/spec/knative-api-specification-1.0.md).
7-
8-
Specification documents can be found in the
9-
[Knative Docs Repository](https://github.com/knative/docs/tree/main/docs/serving/spec).
3+
This file has been moved to the [Knative Specs Repository](https://github.com/knative/specs/blob/main/specs/serving/errors.md)

docs/spec/motivation.md

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,3 @@
11
# Motivation
22

3-
The goal of the Knative Serving project is to provide a common toolkit and API
4-
framework for serverless workloads.
5-
6-
We define serverless workloads as computing workloads that are:
7-
8-
- Stateless
9-
- Amenable to the process scale-out model
10-
- Primarily driven by application level (L7 -- HTTP, for example) request
11-
traffic
12-
13-
While Kubernetes provides basic primitives like Deployment, and Service in
14-
support of this model, our experience suggests that a more compact and richer
15-
opinionated model has substantial benefit for developers. In particular, by
16-
standardizing on higher-level primitives which perform substantial amounts of
17-
automation of common infrastructure, it should be possible to build consistent
18-
toolkits that provide a richer experience than updating yaml files with
19-
`kubectl`.
3+
This file has been moved to the [Knative Specs Repository](https://github.com/knative/specs/blob/main/specs/serving/motivation.md)

docs/spec/normative_examples.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
# Sample API Usage
22

3-
Serving client documentation can now be found in the
4-
[Knative Client Repository](https://github.com/knative/client).
3+
This file has been moved to the [Knative Specs Repository](https://github.com/knative/specs/blob/main/specs/serving/normative_examples.md)

docs/spec/overview.md

Lines changed: 1 addition & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -1,89 +1,3 @@
11
# Resource Types
22

3-
The primary resources in the Knative Serving API are Routes, Revisions,
4-
Configurations, and Services:
5-
6-
- A **Route** provides a named endpoint and a mechanism for routing traffic to
7-
8-
- **Revisions**, which are immutable snapshots of code + config, created by a
9-
10-
- **Configuration**, which acts as a stream of environments for Revisions.
11-
12-
- **Service** acts as a top-level container for managing a Route and
13-
Configuration which implement a network service.
14-
15-
![Object model](images/object_model.png)
16-
17-
## Route
18-
19-
**Route** provides a network endpoint for a user's service (which consists of a
20-
series of software and configuration Revisions over time). A kubernetes
21-
namespace can have multiple routes. The route provides a long-lived, stable,
22-
named, HTTP-addressable endpoint that is backed by one or more **Revisions**.
23-
The default configuration is for the route to automatically route traffic to the
24-
latest revision created by a **Configuration**. For more complex scenarios, the
25-
API supports splitting traffic on a percentage basis, and CI tools could
26-
maintain multiple configurations for a single route (e.g. "golden path" and
27-
“experiments”) or reference multiple revisions directly to pin revisions during
28-
an incremental rollout and n-way traffic split. The route can optionally assign
29-
addressable subdomains to any or all backing revisions.
30-
31-
## Revision
32-
33-
**Revision** is an immutable snapshot of code and configuration. A revision
34-
references a container image. Revisions are created by updates to a
35-
**Configuration**.
36-
37-
Revisions that are not addressable via a Route may be garbage collected and all
38-
underlying K8s resources will be deleted. Revisions that are addressable via a
39-
Route will have resource utilization proportional to the load they are under.
40-
41-
## Configuration
42-
43-
A **Configuration** describes the desired latest Revision state, and creates and
44-
tracks the status of Revisions as the desired state is updated. A configuration
45-
will reference a container image and associated execution metadata needed by the
46-
Revision. On updates to a Configuration's spec, a new Revision will be created;
47-
the Configuration's controller will track the status of created Revisions and
48-
makes the most recently created and most recently _ready_ Revisions available in
49-
the status section.
50-
51-
## Service
52-
53-
A **Service** encapsulates a **Route** and **Configuration** which together
54-
provide a software component. Service exists to provide a singular abstraction
55-
which can be access controlled, reasoned about, and which encapsulates software
56-
lifecycle decisions such as rollout policy and team resource ownership. Service
57-
acts only as an orchestrator of the underlying Route and Configuration (much as
58-
a kubernetes Deployment orchestrates ReplicaSets). Its usage is optional but
59-
recommended.
60-
61-
The Service's controller will track the statuses of its owned Configuration and
62-
Route, reflecting their statuses and conditions as its own.
63-
64-
The owned Configuration's Ready conditions are surfaced as the Service's
65-
ConfigurationsReady condition. The owned Routes' Ready conditions are surfaced
66-
as the Service's RoutesReady condition.
67-
68-
## Orchestration
69-
70-
Revisions are created indirectly when a Configuration is created or updated.
71-
This provides:
72-
73-
- a single referenceable resource for the route to perform automated rollouts
74-
- a single resource that can be watched to see a history of all the revisions
75-
created
76-
- PATCH semantics for revisions implemented server-side, minimizing
77-
read-modify-write implemented across multiple clients, which could result in
78-
optimistic concurrency errors
79-
- the ability to rollback to a known good configuration
80-
81-
Update operations on the service enable scenarios such as:
82-
83-
- _"Push image, keep config":_ Specifying a new revision with updated image,
84-
inheriting configuration such as env vars from the configuration.
85-
- _"Update config, keep image"_: Specifying a new revision as just a change to
86-
configuration, such as updating an env variable, inheriting all other
87-
configuration and image.
88-
- _"Execute a controlled rollout"_: Updating the service's traffic spec allows
89-
testing of revisions before making them live, and controlled rollouts.
3+
This file has been moved to the [Knative Specs Repository](https://github.com/knative/specs/blob/main/specs/serving/overview.md)

0 commit comments

Comments
 (0)