Knative Serving Component

Packages:

autoscaling.internal.knative.dev/v1alpha1

Resource Types:

PodAutoscaler

PodAutoscaler is a Knative abstraction that encapsulates the interface by which Knative components instantiate autoscalers. This definition is an abstraction that may be backed by multiple definitions. For more information, see the Knative Pluggability presentation: https://docs.google.com/presentation/d/10KWynvAJYuOEWy69VBa6bHJVCqIsz1TNdEKosNvcpPY/edit

Field Description
apiVersion
string
autoscaling.internal.knative.dev/v1alpha1
kind
string
PodAutoscaler
metadata
Kubernetes meta/v1.ObjectMeta
(Optional) Refer to the Kubernetes API documentation for the fields of the metadata field.
spec
PodAutoscalerSpec
(Optional)

Spec holds the desired state of the PodAutoscaler (from the client).



generation
int64
(Optional)

DeprecatedGeneration was used prior in Kubernetes versions <1.11 when metadata.generation was not being incremented by the api server

This property will be dropped in future Knative releases and should not be used - use metadata.generation

Tracking issue: https://github.com/knative/serving/issues/643

containerConcurrency
int64
(Optional)

ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container of the Revision. Defaults to 0 which means unlimited concurrency.

scaleTargetRef
Kubernetes core/v1.ObjectReference

ScaleTargetRef defines the /scale-able resource that this PodAutoscaler is responsible for quickly right-sizing.

reachability
ReachabilityType
(Optional)

Reachable specifies whether or not the ScaleTargetRef can be reached (ie. has a route). Defaults to ReachabilityUnknown

protocolType
knative.dev/networking/pkg/apis/networking.ProtocolType

The application-layer protocol. Matches ProtocolType inferred from the revision spec.

status
PodAutoscalerStatus
(Optional)

Status communicates the observed state of the PodAutoscaler (from the controller).

Metric

Metric represents a resource to configure the metric collector with.

Field Description
metadata
Kubernetes meta/v1.ObjectMeta
(Optional) Refer to the Kubernetes API documentation for the fields of the metadata field.
spec
MetricSpec
(Optional)

Spec holds the desired state of the Metric (from the client).



stableWindow
time.Duration

StableWindow is the aggregation window for metrics in a stable state.

panicWindow
time.Duration

PanicWindow is the aggregation window for metrics where quick reactions are needed.

scrapeTarget
string

ScrapeTarget is the K8s service that publishes the metric endpoint.

status
MetricStatus
(Optional)

Status communicates the observed state of the Metric (from the controller).

MetricSpec

(Appears on: Metric)

MetricSpec contains all values a metric collector needs to operate.

Field Description
stableWindow
time.Duration

StableWindow is the aggregation window for metrics in a stable state.

panicWindow
time.Duration

PanicWindow is the aggregation window for metrics where quick reactions are needed.

scrapeTarget
string

ScrapeTarget is the K8s service that publishes the metric endpoint.

MetricStatus

(Appears on: Metric)

MetricStatus reflects the status of metric collection for this specific entity.

Field Description
Status
knative.dev/pkg/apis/duck/v1.Status

(Members of Status are embedded into this type.)

PodAutoscalerSpec

(Appears on: PodAutoscaler)

PodAutoscalerSpec holds the desired state of the PodAutoscaler (from the client).

Field Description
generation
int64
(Optional)

DeprecatedGeneration was used prior in Kubernetes versions <1.11 when metadata.generation was not being incremented by the api server

This property will be dropped in future Knative releases and should not be used - use metadata.generation

Tracking issue: https://github.com/knative/serving/issues/643

containerConcurrency
int64
(Optional)

ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container of the Revision. Defaults to 0 which means unlimited concurrency.

scaleTargetRef
Kubernetes core/v1.ObjectReference

ScaleTargetRef defines the /scale-able resource that this PodAutoscaler is responsible for quickly right-sizing.

reachability
ReachabilityType
(Optional)

Reachable specifies whether or not the ScaleTargetRef can be reached (ie. has a route). Defaults to ReachabilityUnknown

protocolType
knative.dev/networking/pkg/apis/networking.ProtocolType

The application-layer protocol. Matches ProtocolType inferred from the revision spec.

PodAutoscalerStatus

(Appears on: PodAutoscaler)

PodAutoscalerStatus communicates the observed state of the PodAutoscaler (from the controller).

Field Description
Status
knative.dev/pkg/apis/duck/v1.Status

(Members of Status are embedded into this type.)

serviceName
string

ServiceName is the K8s Service name that serves the revision, scaled by this PA. The service is created and owned by the ServerlessService object owned by this PA.

metricsServiceName
string

MetricsServiceName is the K8s Service name that provides revision metrics. The service is managed by the PA object.

desiredScale
int32

DesiredScale shows the current desired number of replicas for the revision.

actualScale
int32

ActualScale shows the actual number of replicas for the revision.

PodScalable

PodScalable is a duck type that the resources referenced by the PodAutoscaler’s ScaleTargetRef must implement. They must also implement the /scale sub-resource for use with /scale based implementations (e.g. HPA), but this further constrains the shape the referenced resources may take.

Field Description
metadata
Kubernetes meta/v1.ObjectMeta
Refer to the Kubernetes API documentation for the fields of the metadata field.
spec
PodScalableSpec


replicas
int32
selector
Kubernetes meta/v1.LabelSelector
template
Kubernetes core/v1.PodTemplateSpec
status
PodScalableStatus

PodScalableSpec

(Appears on: PodScalable)

PodScalableSpec is the specification for the desired state of a PodScalable (or at least our shared portion).

Field Description
replicas
int32
selector
Kubernetes meta/v1.LabelSelector
template
Kubernetes core/v1.PodTemplateSpec

PodScalableStatus

(Appears on: PodScalable)

PodScalableStatus is the observed state of a PodScalable (or at least our shared portion).

Field Description
replicas
int32

ReachabilityType (string alias)

(Appears on: PodAutoscalerSpec)

ReachabilityType is the enumeration type for the different states of reachability to the ScaleTarget of a PodAutoscaler


serving.knative.dev/v1

Resource Types:

Configuration

Configuration represents the “floating HEAD” of a linear history of Revisions. Users create new Revisions by updating the Configuration’s spec. The “latest created” revision’s name is available under status, as is the “latest ready” revision’s name. See also: https://github.com/knative/serving/blob/master/docs/spec/overview.md#configuration

Field Description
apiVersion
string
serving.knative.dev/v1
kind
string
Configuration
metadata
Kubernetes meta/v1.ObjectMeta
(Optional) Refer to the Kubernetes API documentation for the fields of the metadata field.
spec
ConfigurationSpec
(Optional)

template
RevisionTemplateSpec
(Optional)

Template holds the latest specification for the Revision to be stamped out.

status
ConfigurationStatus
(Optional)

Revision

Revision is an immutable snapshot of code and configuration. A revision references a container image. Revisions are created by updates to a Configuration.

See also: https://github.com/knative/serving/blob/master/docs/spec/overview.md#revision

Field Description
apiVersion
string
serving.knative.dev/v1
kind
string
Revision
metadata
Kubernetes meta/v1.ObjectMeta
(Optional) Refer to the Kubernetes API documentation for the fields of the metadata field.
spec
RevisionSpec
(Optional)

PodSpec
Kubernetes core/v1.PodSpec

(Members of PodSpec are embedded into this type.)

containerConcurrency
int64
(Optional)

ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container of the Revision. Defaults to 0 which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.

timeoutSeconds
int64
(Optional)

TimeoutSeconds holds the max duration the instance is allowed for responding to a request. If unspecified, a system default will be provided.

status
RevisionStatus
(Optional)

Route

Route is responsible for configuring ingress over a collection of Revisions. Some of the Revisions a Route distributes traffic over may be specified by referencing the Configuration responsible for creating them; in these cases the Route is additionally responsible for monitoring the Configuration for “latest ready revision” changes, and smoothly rolling out latest revisions. See also: https://github.com/knative/serving/blob/master/docs/spec/overview.md#route

Field Description
apiVersion
string
serving.knative.dev/v1
kind
string
Route
metadata
Kubernetes meta/v1.ObjectMeta
(Optional) Refer to the Kubernetes API documentation for the fields of the metadata field.
spec
RouteSpec
(Optional)

Spec holds the desired state of the Route (from the client).



traffic
[]TrafficTarget
(Optional)

Traffic specifies how to distribute traffic over a collection of revisions and configurations.

status
RouteStatus
(Optional)

Status communicates the observed state of the Route (from the controller).

Service

Service acts as a top-level container that manages a Route and Configuration which implement a network service. Service exists to provide a singular abstraction which can be access controlled, reasoned about, and which encapsulates software lifecycle decisions such as rollout policy and team resource ownership. Service acts only as an orchestrator of the underlying Routes and Configurations (much as a kubernetes Deployment orchestrates ReplicaSets), and its usage is optional but recommended.

The Service’s controller will track the statuses of its owned Configuration and Route, reflecting their statuses and conditions as its own.

See also: https://github.com/knative/serving/blob/master/docs/spec/overview.md#service

Field Description
apiVersion
string
serving.knative.dev/v1
kind
string
Service
metadata
Kubernetes meta/v1.ObjectMeta
(Optional) Refer to the Kubernetes API documentation for the fields of the metadata field.
spec
ServiceSpec
(Optional)

ConfigurationSpec
ConfigurationSpec

(Members of ConfigurationSpec are embedded into this type.)

ServiceSpec inlines an unrestricted ConfigurationSpec.

RouteSpec
RouteSpec

(Members of RouteSpec are embedded into this type.)

ServiceSpec inlines RouteSpec and restricts/defaults its fields via webhook. In particular, this spec can only reference this Service’s configuration and revisions (which also influences defaults).

status
ServiceStatus
(Optional)

ConfigurationSpec

(Appears on: Configuration, Configuration, ServiceSpec)

ConfigurationSpec holds the desired state of the Configuration (from the client).

Field Description
template
RevisionTemplateSpec
(Optional)

Template holds the latest specification for the Revision to be stamped out.

ConfigurationStatus

(Appears on: Configuration, Configuration)

ConfigurationStatus communicates the observed state of the Configuration (from the controller).

Field Description
Status
knative.dev/pkg/apis/duck/v1.Status

(Members of Status are embedded into this type.)

ConfigurationStatusFields
ConfigurationStatusFields

(Members of ConfigurationStatusFields are embedded into this type.)

ConfigurationStatusFields

(Appears on: ConfigurationStatus, ServiceStatus)

ConfigurationStatusFields holds the fields of Configuration’s status that are not generally shared. This is defined separately and inlined so that other types can readily consume these fields via duck typing.

Field Description
latestReadyRevisionName
string
(Optional)

LatestReadyRevisionName holds the name of the latest Revision stamped out from this Configuration that has had its “Ready” condition become “True”.

latestCreatedRevisionName
string
(Optional)

LatestCreatedRevisionName is the last revision that was created from this Configuration. It might not be ready yet, for that use LatestReadyRevisionName.

ContainerStatuses

(Appears on: RevisionStatus)

ContainerStatuses holds the information of container name and image digest value

Field Description
name
string
imageDigest
string

RevisionSpec

(Appears on: Revision, Revision, RevisionSpec, RevisionTemplateSpec)

RevisionSpec holds the desired state of the Revision (from the client).

Field Description
PodSpec
Kubernetes core/v1.PodSpec

(Members of PodSpec are embedded into this type.)

containerConcurrency
int64
(Optional)

ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container of the Revision. Defaults to 0 which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.

timeoutSeconds
int64
(Optional)

TimeoutSeconds holds the max duration the instance is allowed for responding to a request. If unspecified, a system default will be provided.

RevisionStatus

(Appears on: Revision, Revision)

RevisionStatus communicates the observed state of the Revision (from the controller).

Field Description
Status
knative.dev/pkg/apis/duck/v1.Status

(Members of Status are embedded into this type.)

serviceName
string
(Optional)

ServiceName holds the name of a core Kubernetes Service resource that load balances over the pods backing this Revision.

logUrl
string
(Optional)

LogURL specifies the generated logging url for this particular revision based on the revision url template specified in the controller’s config.

imageDigest
string
(Optional)

DeprecatedImageDigest holds the resolved digest for the image specified within .Spec.Container.Image. The digest is resolved during the creation of Revision. This field holds the digest value regardless of whether a tag or digest was originally specified in the Container object. It may be empty if the image comes from a registry listed to skip resolution. If multiple containers specified then DeprecatedImageDigest holds the digest for serving container. DEPRECATED: Use ContainerStatuses instead. TODO(savitaashture) Remove deprecatedImageDigest. ref https://kubernetes.io/docs/reference/using-api/deprecation-policy for deprecation.

containerStatuses
[]ContainerStatuses
(Optional)

ContainerStatuses is a slice of images present in .Spec.Container[*].Image to their respective digests and their container name. The digests are resolved during the creation of Revision. ContainerStatuses holds the container name and image digests for both serving and non serving containers. ref: http://bit.ly/image-digests

RevisionTemplateSpec

(Appears on: ConfigurationSpec)

RevisionTemplateSpec describes the data a revision should have when created from a template. Based on: https://github.com/kubernetes/api/blob/e771f807/core/v1/types.go#L3179-L3190

Field Description
metadata
Kubernetes meta/v1.ObjectMeta
(Optional) Refer to the Kubernetes API documentation for the fields of the metadata field.
spec
RevisionSpec
(Optional)

PodSpec
Kubernetes core/v1.PodSpec

(Members of PodSpec are embedded into this type.)

containerConcurrency
int64
(Optional)

ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container of the Revision. Defaults to 0 which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.

timeoutSeconds
int64
(Optional)

TimeoutSeconds holds the max duration the instance is allowed for responding to a request. If unspecified, a system default will be provided.

RouteSpec

(Appears on: Route, Route, ServiceSpec)

RouteSpec holds the desired state of the Route (from the client).

Field Description
traffic
[]TrafficTarget
(Optional)

Traffic specifies how to distribute traffic over a collection of revisions and configurations.

RouteStatus

(Appears on: Route, Route)

RouteStatus communicates the observed state of the Route (from the controller).

Field Description
Status
knative.dev/pkg/apis/duck/v1.Status

(Members of Status are embedded into this type.)

RouteStatusFields
RouteStatusFields

(Members of RouteStatusFields are embedded into this type.)

RouteStatusFields

(Appears on: RouteStatus, ServiceStatus)

RouteStatusFields holds the fields of Route’s status that are not generally shared. This is defined separately and inlined so that other types can readily consume these fields via duck typing.

Field Description
url
knative.dev/pkg/apis.URL
(Optional)

URL holds the url that will distribute traffic over the provided traffic targets. It generally has the form http[s]://{route-name}.{route-namespace}.{cluster-level-suffix}

address
knative.dev/pkg/apis/duck/v1.Addressable
(Optional)

Address holds the information needed for a Route to be the target of an event.

traffic
[]TrafficTarget
(Optional)

Traffic holds the configured traffic distribution. These entries will always contain RevisionName references. When ConfigurationName appears in the spec, this will hold the LatestReadyRevisionName that we last observed.

ServiceSpec

(Appears on: Service, Service)

ServiceSpec represents the configuration for the Service object. A Service’s specification is the union of the specifications for a Route and Configuration. The Service restricts what can be expressed in these fields, e.g. the Route must reference the provided Configuration; however, these limitations also enable friendlier defaulting, e.g. Route never needs a Configuration name, and may be defaulted to the appropriate “run latest” spec.

Field Description
ConfigurationSpec
ConfigurationSpec

(Members of ConfigurationSpec are embedded into this type.)

ServiceSpec inlines an unrestricted ConfigurationSpec.

RouteSpec
RouteSpec

(Members of RouteSpec are embedded into this type.)

ServiceSpec inlines RouteSpec and restricts/defaults its fields via webhook. In particular, this spec can only reference this Service’s configuration and revisions (which also influences defaults).

ServiceStatus

(Appears on: Service, Service)

ServiceStatus represents the Status stanza of the Service resource.

Field Description
Status
knative.dev/pkg/apis/duck/v1.Status

(Members of Status are embedded into this type.)

ConfigurationStatusFields
ConfigurationStatusFields

(Members of ConfigurationStatusFields are embedded into this type.)

In addition to inlining ConfigurationSpec, we also inline the fields specific to ConfigurationStatus.

RouteStatusFields
RouteStatusFields

(Members of RouteStatusFields are embedded into this type.)

In addition to inlining RouteSpec, we also inline the fields specific to RouteStatus.

TrafficTarget

(Appears on: RouteSpec, RouteStatusFields, TrafficTarget)

TrafficTarget holds a single entry of the routing table for a Route.

Field Description
tag
string
(Optional)

Tag is optionally used to expose a dedicated url for referencing this target exclusively.

revisionName
string
(Optional)

RevisionName of a specific revision to which to send this portion of traffic. This is mutually exclusive with ConfigurationName.

configurationName
string
(Optional)

ConfigurationName of a configuration to whose latest revision we will send this portion of traffic. When the “status.latestReadyRevisionName” of the referenced configuration changes, we will automatically migrate traffic from the prior “latest ready” revision to the new one. This field is never set in Route’s status, only its spec. This is mutually exclusive with RevisionName.

latestRevision
bool
(Optional)

LatestRevision may be optionally provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty.

percent
int64
(Optional)

Percent indicates that percentage based routing should be used and the value indicates the percent of traffic that is be routed to this Revision or Configuration. 0 (zero) mean no traffic, 100 means all traffic. When percentage based routing is being used the follow rules apply: - the sum of all percent values must equal 100 - when not specified, the implied value for percent is zero for that particular Revision or Configuration

url
knative.dev/pkg/apis.URL
(Optional)

URL displays the URL for accessing named traffic targets. URL is displayed in status, and is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname, but may not contain anything else (e.g. basic auth, url path, etc.)


serving.knative.dev/v1alpha1

Resource Types:

Configuration

Configuration represents the “floating HEAD” of a linear history of Revisions, and optionally how the containers those revisions reference are built. Users create new Revisions by updating the Configuration’s spec. The “latest created” revision’s name is available under status, as is the “latest ready” revision’s name. See also: https://github.com/knative/serving/blob/master/docs/spec/overview.md#configuration

Field Description
apiVersion
string
serving.knative.dev/v1alpha1
kind
string
Configuration
metadata
Kubernetes meta/v1.ObjectMeta
(Optional) Refer to the Kubernetes API documentation for the fields of the metadata field.
spec
ConfigurationSpec
(Optional)

Spec holds the desired state of the Configuration (from the client).



generation
int64
(Optional)

DeprecatedGeneration was used prior in Kubernetes versions <1.11 when metadata.generation was not being incremented by the api server

This property will be dropped in future Knative releases and should not be used - use metadata.generation

Tracking issue: https://github.com/knative/serving/issues/643

build
k8s.io/apimachinery/pkg/runtime.RawExtension
(Optional)

Build optionally holds the specification for the build to perform to produce the Revision’s container image.

revisionTemplate
RevisionTemplateSpec
(Optional)

DeprecatedRevisionTemplate holds the latest specification for the Revision to be stamped out. If a Build specification is provided, then the DeprecatedRevisionTemplate’s BuildName field will be populated with the name of the Build object created to produce the container for the Revision. DEPRECATED Use Template instead.

template
RevisionTemplateSpec
(Optional)

Template holds the latest specification for the Revision to be stamped out.

status
ConfigurationStatus
(Optional)

Status communicates the observed state of the Configuration (from the controller).

Revision

Revision is an immutable snapshot of code and configuration. A revision references a container image, and optionally a build that is responsible for materializing that container image from source. Revisions are created by updates to a Configuration.

See also: https://github.com/knative/serving/blob/master/docs/spec/overview.md#revision

Field Description
apiVersion
string
serving.knative.dev/v1alpha1
kind
string
Revision
metadata
Kubernetes meta/v1.ObjectMeta
(Optional) Refer to the Kubernetes API documentation for the fields of the metadata field.
spec
RevisionSpec
(Optional)

Spec holds the desired state of the Revision (from the client).



RevisionSpec
RevisionSpec

(Members of RevisionSpec are embedded into this type.)

generation
int64
(Optional)

DeprecatedGeneration was used prior in Kubernetes versions <1.11 when metadata.generation was not being incremented by the api server

This property will be dropped in future Knative releases and should not be used - use metadata.generation

Tracking issue: https://github.com/knative/serving/issues/643

servingState
DeprecatedRevisionServingStateType
(Optional)

DeprecatedServingState holds a value describing the desired state the Kubernetes resources should be in for this Revision. Users must not specify this when creating a revision. These values are no longer updated by the system.

container
Kubernetes core/v1.Container
(Optional)

DeprecatedContainer defines the unit of execution for this Revision. In the context of a Revision, we disallow a number of the fields of this Container, including: name and lifecycle. See also the runtime contract for more information about the execution environment: https://github.com/knative/serving/blob/master/docs/runtime-contract.md

status
RevisionStatus
(Optional)

Status communicates the observed state of the Revision (from the controller).

Route

Route is responsible for configuring ingress over a collection of Revisions. Some of the Revisions a Route distributes traffic over may be specified by referencing the Configuration responsible for creating them; in these cases the Route is additionally responsible for monitoring the Configuration for “latest ready” revision changes, and smoothly rolling out latest revisions. See also: https://github.com/knative/serving/blob/master/docs/spec/overview.md#route

Field Description
apiVersion
string
serving.knative.dev/v1alpha1
kind
string
Route
metadata
Kubernetes meta/v1.ObjectMeta
(Optional) Refer to the Kubernetes API documentation for the fields of the metadata field.
spec
RouteSpec
(Optional)

Spec holds the desired state of the Route (from the client).



generation
int64
(Optional)

DeprecatedGeneration was used prior in Kubernetes versions <1.11 when metadata.generation was not being incremented by the api server

This property will be dropped in future Knative releases and should not be used - use metadata.generation

Tracking issue: https://github.com/knative/serving/issues/643

traffic
[]TrafficTarget
(Optional)

Traffic specifies how to distribute traffic over a collection of Knative Serving Revisions and Configurations.

status
RouteStatus
(Optional)

Status communicates the observed state of the Route (from the controller).

Service

Service acts as a top-level container that manages a set of Routes and Configurations which implement a network service. Service exists to provide a singular abstraction which can be access controlled, reasoned about, and which encapsulates software lifecycle decisions such as rollout policy and team resource ownership. Service acts only as an orchestrator of the underlying Routes and Configurations (much as a kubernetes Deployment orchestrates ReplicaSets), and its usage is optional but recommended.

The Service’s controller will track the statuses of its owned Configuration and Route, reflecting their statuses and conditions as its own.

See also: https://github.com/knative/serving/blob/master/docs/spec/overview.md#service

Field Description
apiVersion
string
serving.knative.dev/v1alpha1
kind
string
Service
metadata
Kubernetes meta/v1.ObjectMeta
(Optional) Refer to the Kubernetes API documentation for the fields of the metadata field.
spec
ServiceSpec
(Optional)

generation
int64
(Optional)

DeprecatedGeneration was used prior in Kubernetes versions <1.11 when metadata.generation was not being incremented by the api server

This property will be dropped in future Knative releases and should not be used - use metadata.generation

Tracking issue: https://github.com/knative/serving/issues/643

runLatest
RunLatestType
(Optional)

DeprecatedRunLatest defines a simple Service. It will automatically configure a route that keeps the latest ready revision from the supplied configuration running.

pinned
PinnedType
(Optional)

DeprecatedPinned is DEPRECATED in favor of ReleaseType

manual
ManualType
(Optional)

DeprecatedManual mode enables users to start managing the underlying Route and Configuration resources directly. This advanced usage is intended as a path for users to graduate from the limited capabilities of Service to the full power of Route.

release
ReleaseType
(Optional)

Release enables gradual promotion of new revisions by allowing traffic to be split between two revisions. This type replaces the deprecated Pinned type.

ConfigurationSpec
ConfigurationSpec

(Members of ConfigurationSpec are embedded into this type.)

We are moving to a shape where the Configuration and Route specifications are inlined into the Service, which gives them compatible shapes. We are staging this change here as a path to this in v1beta1, which drops the “mode” based specifications above. Ultimately all non-v1beta1 fields will be deprecated, and then dropped in v1beta1.

RouteSpec
RouteSpec

(Members of RouteSpec are embedded into this type.)

status
ServiceStatus
(Optional)

CannotConvertError

CannotConvertError is returned when a field cannot be converted.

Field Description
Message
string
Field
string

ConfigurationSpec

(Appears on: Configuration, PinnedType, ReleaseType, RunLatestType, ServiceSpec)

ConfigurationSpec holds the desired state of the Configuration (from the client).

Field Description
generation
int64
(Optional)

DeprecatedGeneration was used prior in Kubernetes versions <1.11 when metadata.generation was not being incremented by the api server

This property will be dropped in future Knative releases and should not be used - use metadata.generation

Tracking issue: https://github.com/knative/serving/issues/643

build
k8s.io/apimachinery/pkg/runtime.RawExtension
(Optional)

Build optionally holds the specification for the build to perform to produce the Revision’s container image.

revisionTemplate
RevisionTemplateSpec
(Optional)

DeprecatedRevisionTemplate holds the latest specification for the Revision to be stamped out. If a Build specification is provided, then the DeprecatedRevisionTemplate’s BuildName field will be populated with the name of the Build object created to produce the container for the Revision. DEPRECATED Use Template instead.

template
RevisionTemplateSpec
(Optional)

Template holds the latest specification for the Revision to be stamped out.

ConfigurationStatus

(Appears on: Configuration)

ConfigurationStatus communicates the observed state of the Configuration (from the controller).

Field Description
Status
knative.dev/pkg/apis/duck/v1.Status

(Members of Status are embedded into this type.)

ConfigurationStatusFields
ConfigurationStatusFields

(Members of ConfigurationStatusFields are embedded into this type.)

ConfigurationStatusFields

(Appears on: ConfigurationStatus, ServiceStatus)

ConfigurationStatusFields holds all of the non-duckv1.Status status fields of a Route. These are defined outline so that we can also inline them into Service, and more easily copy them.

Field Description
latestReadyRevisionName
string
(Optional)

LatestReadyRevisionName holds the name of the latest Revision stamped out from this Configuration that has had its “Ready” condition become “True”.

latestCreatedRevisionName
string
(Optional)

LatestCreatedRevisionName is the last revision that was created from this Configuration. It might not be ready yet, for that use LatestReadyRevisionName.

ContainerStatuses

(Appears on: RevisionStatus)

ContainerStatuses holds the information of container name and image digest value

Field Description
name
string
imageDigest
string

DeprecatedRevisionServingStateType (string alias)

(Appears on: RevisionSpec)

DeprecatedRevisionServingStateType is an enumeration of the levels of serving readiness of the Revision. See also: https://github.com/knative/serving/blob/master/docs/spec/errors.md#error-conditions-and-reporting

ManualType

(Appears on: ServiceSpec)

ManualType contains the options for configuring a manual service. See ServiceSpec for more details.

PinnedType

(Appears on: ServiceSpec)

PinnedType is DEPRECATED. ReleaseType should be used instead. To get the behavior of PinnedType set ReleaseType.Revisions to []string{PinnedType.RevisionName} and ReleaseType.RolloutPercent to 0.

Field Description
revisionName
string
(Optional)

The revision name to pin this service to until changed to a different service type.

configuration
ConfigurationSpec
(Optional)

The configuration for this service.

ReleaseType

(Appears on: ServiceSpec)

ReleaseType contains the options for slowly releasing revisions. See ServiceSpec for more details.

Field Description
revisions
[]string
(Optional)

Revisions is an ordered list of 1 or 2 revisions. The first will have a TrafficTarget with a name of “current” and the second will have a name of “candidate”.

rolloutPercent
int
(Optional)

RolloutPercent is the percent of traffic that should be sent to the “candidate” revision. Valid values are between 0 and 99 inclusive.

configuration
ConfigurationSpec
(Optional)

The configuration for this service. All revisions from this service must come from a single configuration.

RevisionSpec

(Appears on: Revision, RevisionTemplateSpec)

RevisionSpec holds the desired state of the Revision (from the client).

Field Description
RevisionSpec
RevisionSpec

(Members of RevisionSpec are embedded into this type.)

generation
int64
(Optional)

DeprecatedGeneration was used prior in Kubernetes versions <1.11 when metadata.generation was not being incremented by the api server

This property will be dropped in future Knative releases and should not be used - use metadata.generation

Tracking issue: https://github.com/knative/serving/issues/643

servingState
DeprecatedRevisionServingStateType
(Optional)

DeprecatedServingState holds a value describing the desired state the Kubernetes resources should be in for this Revision. Users must not specify this when creating a revision. These values are no longer updated by the system.

container
Kubernetes core/v1.Container
(Optional)

DeprecatedContainer defines the unit of execution for this Revision. In the context of a Revision, we disallow a number of the fields of this Container, including: name and lifecycle. See also the runtime contract for more information about the execution environment: https://github.com/knative/serving/blob/master/docs/runtime-contract.md

RevisionStatus

(Appears on: Revision)

RevisionStatus communicates the observed state of the Revision (from the controller).

Field Description
Status
knative.dev/pkg/apis/duck/v1.Status

(Members of Status are embedded into this type.)

serviceName
string
(Optional)

ServiceName holds the name of a core Kubernetes Service resource that load balances over the pods backing this Revision.

logUrl
string
(Optional)

LogURL specifies the generated logging url for this particular revision based on the revision url template specified in the controller’s config.

imageDigest
string
(Optional)

DeprecatedImageDigest holds the resolved digest for the image specified within .Spec.Container.Image. The digest is resolved during the creation of Revision. This field holds the digest value regardless of whether a tag or digest was originally specified in the Container object. It may be empty if the image comes from a registry listed to skip resolution. If multiple containers specified then DeprecatedImageDigest holds the digest for serving container. DEPRECATED: Use ContainerStatuses instead. TODO(savitaashture) Remove deprecatedImageDigest. ref https://kubernetes.io/docs/reference/using-api/deprecation-policy for deprecation.

containerStatuses
[]ContainerStatuses
(Optional)

ContainerStatuses is a slice of images present in .Spec.Container[*].Image to their respective digests and their container name. The digests are resolved during the creation of Revision. ContainerStatuses holds the container name and image digests for both serving and non serving containers. ref: http://bit.ly/image-digests

RevisionTemplateSpec

(Appears on: ConfigurationSpec)

RevisionTemplateSpec describes the data a revision should have when created from a template. Based on: https://github.com/kubernetes/api/blob/e771f807/core/v1/types.go#L3179-L3190

Field Description
metadata
Kubernetes meta/v1.ObjectMeta
(Optional) Refer to the Kubernetes API documentation for the fields of the metadata field.
spec
RevisionSpec
(Optional)

RevisionSpec
RevisionSpec

(Members of RevisionSpec are embedded into this type.)

generation
int64
(Optional)

DeprecatedGeneration was used prior in Kubernetes versions <1.11 when metadata.generation was not being incremented by the api server

This property will be dropped in future Knative releases and should not be used - use metadata.generation

Tracking issue: https://github.com/knative/serving/issues/643

servingState
DeprecatedRevisionServingStateType
(Optional)

DeprecatedServingState holds a value describing the desired state the Kubernetes resources should be in for this Revision. Users must not specify this when creating a revision. These values are no longer updated by the system.

container
Kubernetes core/v1.Container
(Optional)

DeprecatedContainer defines the unit of execution for this Revision. In the context of a Revision, we disallow a number of the fields of this Container, including: name and lifecycle. See also the runtime contract for more information about the execution environment: https://github.com/knative/serving/blob/master/docs/runtime-contract.md

RouteSpec

(Appears on: Route, ServiceSpec)

RouteSpec holds the desired state of the Route (from the client).

Field Description
generation
int64
(Optional)

DeprecatedGeneration was used prior in Kubernetes versions <1.11 when metadata.generation was not being incremented by the api server

This property will be dropped in future Knative releases and should not be used - use metadata.generation

Tracking issue: https://github.com/knative/serving/issues/643

traffic
[]TrafficTarget
(Optional)

Traffic specifies how to distribute traffic over a collection of Knative Serving Revisions and Configurations.

RouteStatus

(Appears on: Route)

RouteStatus communicates the observed state of the Route (from the controller).

Field Description
Status
knative.dev/pkg/apis/duck/v1.Status

(Members of Status are embedded into this type.)

RouteStatusFields
RouteStatusFields

(Members of RouteStatusFields are embedded into this type.)

RouteStatusFields

(Appears on: RouteStatus, ServiceStatus)

RouteStatusFields holds all of the non-duckv1.Status status fields of a Route. These are defined outline so that we can also inline them into Service, and more easily copy them.

Field Description
url
knative.dev/pkg/apis.URL
(Optional)

URL holds the url that will distribute traffic over the provided traffic targets. It generally has the form http[s]://{route-name}.{route-namespace}.{cluster-level-suffix}

domain
string
(Optional)

DeprecatedDomain holds the top-level domain that will distribute traffic over the provided targets. It generally has the form {route-name}.{route-namespace}.{cluster-level-suffix}

domainInternal
string
(Optional)

DeprecatedDomainInternal holds the top-level domain that will distribute traffic over the provided targets from inside the cluster. It generally has the form {route-name}.{route-namespace}.svc.{cluster-domain-name} DEPRECATED: Use Address instead.

address
knative.dev/pkg/apis/duck/v1alpha1.Addressable
(Optional)

Address holds the information needed for a Route to be the target of an event.

traffic
[]TrafficTarget
(Optional)

Traffic holds the configured traffic distribution. These entries will always contain RevisionName references. When ConfigurationName appears in the spec, this will hold the LatestReadyRevisionName that we last observed.

RunLatestType

(Appears on: ServiceSpec)

RunLatestType contains the options for always having a route to the latest configuration. See ServiceSpec for more details.

Field Description
configuration
ConfigurationSpec
(Optional)

The configuration for this service.

ServiceSpec

(Appears on: Service)

ServiceSpec represents the configuration for the Service object. Exactly one of its members (other than Generation) must be specified. Services can either track the latest ready revision of a configuration or be pinned to a specific revision.

Field Description
generation
int64
(Optional)

DeprecatedGeneration was used prior in Kubernetes versions <1.11 when metadata.generation was not being incremented by the api server

This property will be dropped in future Knative releases and should not be used - use metadata.generation

Tracking issue: https://github.com/knative/serving/issues/643

runLatest
RunLatestType
(Optional)

DeprecatedRunLatest defines a simple Service. It will automatically configure a route that keeps the latest ready revision from the supplied configuration running.

pinned
PinnedType
(Optional)

DeprecatedPinned is DEPRECATED in favor of ReleaseType

manual
ManualType
(Optional)

DeprecatedManual mode enables users to start managing the underlying Route and Configuration resources directly. This advanced usage is intended as a path for users to graduate from the limited capabilities of Service to the full power of Route.

release
ReleaseType
(Optional)

Release enables gradual promotion of new revisions by allowing traffic to be split between two revisions. This type replaces the deprecated Pinned type.

ConfigurationSpec
ConfigurationSpec

(Members of ConfigurationSpec are embedded into this type.)

We are moving to a shape where the Configuration and Route specifications are inlined into the Service, which gives them compatible shapes. We are staging this change here as a path to this in v1beta1, which drops the “mode” based specifications above. Ultimately all non-v1beta1 fields will be deprecated, and then dropped in v1beta1.

RouteSpec
RouteSpec

(Members of RouteSpec are embedded into this type.)

ServiceStatus

(Appears on: Service)

ServiceStatus represents the Status stanza of the Service resource.

Field Description
Status
knative.dev/pkg/apis/duck/v1.Status

(Members of Status are embedded into this type.)

RouteStatusFields
RouteStatusFields

(Members of RouteStatusFields are embedded into this type.)

ConfigurationStatusFields
ConfigurationStatusFields

(Members of ConfigurationStatusFields are embedded into this type.)

TrafficTarget

(Appears on: RouteSpec, RouteStatusFields)

TrafficTarget holds a single entry of the routing table for a Route.

Field Description
name
string
(Optional)

Name is optionally used to expose a dedicated hostname for referencing this target exclusively. It has the form: {name}.${route.status.domain}

TrafficTarget
TrafficTarget

(Members of TrafficTarget are embedded into this type.)

We inherit most of our fields by inlining the v1 type. Ultimately all non-v1 fields will be deprecated.


serving.knative.dev/v1beta1

Resource Types:

Configuration

Configuration represents the “floating HEAD” of a linear history of Revisions. Users create new Revisions by updating the Configuration’s spec. The “latest created” revision’s name is available under status, as is the “latest ready” revision’s name. See also: https://github.com/knative/serving/blob/master/docs/spec/overview.md#configuration

Field Description
apiVersion
string
serving.knative.dev/v1beta1
kind
string
Configuration
metadata
Kubernetes meta/v1.ObjectMeta
(Optional) Refer to the Kubernetes API documentation for the fields of the metadata field.
spec
ConfigurationSpec
(Optional)

template
RevisionTemplateSpec
(Optional)

Template holds the latest specification for the Revision to be stamped out.

status
ConfigurationStatus
(Optional)

Revision

Revision is an immutable snapshot of code and configuration. A revision references a container image. Revisions are created by updates to a Configuration.

See also: https://github.com/knative/serving/blob/master/docs/spec/overview.md#revision

Field Description
apiVersion
string
serving.knative.dev/v1beta1
kind
string
Revision
metadata
Kubernetes meta/v1.ObjectMeta
(Optional) Refer to the Kubernetes API documentation for the fields of the metadata field.
spec
RevisionSpec
(Optional)

PodSpec
Kubernetes core/v1.PodSpec

(Members of PodSpec are embedded into this type.)

containerConcurrency
int64
(Optional)

ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container of the Revision. Defaults to 0 which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.

timeoutSeconds
int64
(Optional)

TimeoutSeconds holds the max duration the instance is allowed for responding to a request. If unspecified, a system default will be provided.

status
RevisionStatus
(Optional)

Route

Route is responsible for configuring ingress over a collection of Revisions. Some of the Revisions a Route distributes traffic over may be specified by referencing the Configuration responsible for creating them; in these cases the Route is additionally responsible for monitoring the Configuration for “latest ready revision” changes, and smoothly rolling out latest revisions. See also: https://github.com/knative/serving/blob/master/docs/spec/overview.md#route

Field Description
apiVersion
string
serving.knative.dev/v1beta1
kind
string
Route
metadata
Kubernetes meta/v1.ObjectMeta
(Optional) Refer to the Kubernetes API documentation for the fields of the metadata field.
spec
RouteSpec
(Optional)

Spec holds the desired state of the Route (from the client).



traffic
[]TrafficTarget
(Optional)

Traffic specifies how to distribute traffic over a collection of revisions and configurations.

status
RouteStatus
(Optional)

Status communicates the observed state of the Route (from the controller).

Service

Service acts as a top-level container that manages a Route and Configuration which implement a network service. Service exists to provide a singular abstraction which can be access controlled, reasoned about, and which encapsulates software lifecycle decisions such as rollout policy and team resource ownership. Service acts only as an orchestrator of the underlying Routes and Configurations (much as a kubernetes Deployment orchestrates ReplicaSets), and its usage is optional but recommended.

The Service’s controller will track the statuses of its owned Configuration and Route, reflecting their statuses and conditions as its own.

See also: https://github.com/knative/serving/blob/master/docs/spec/overview.md#service

Field Description
apiVersion
string
serving.knative.dev/v1beta1
kind
string
Service
metadata
Kubernetes meta/v1.ObjectMeta
(Optional) Refer to the Kubernetes API documentation for the fields of the metadata field.
spec
ServiceSpec
(Optional)

ConfigurationSpec
ConfigurationSpec

(Members of ConfigurationSpec are embedded into this type.)

ServiceSpec inlines an unrestricted ConfigurationSpec.

RouteSpec
RouteSpec

(Members of RouteSpec are embedded into this type.)

ServiceSpec inlines RouteSpec and restricts/defaults its fields via webhook. In particular, this spec can only reference this Service’s configuration and revisions (which also influences defaults).

status
ServiceStatus
(Optional)

Generated with gen-crd-api-reference-docs on git commit d74ecbeb1.