docs/reference/serving.md

64 KiB
Raw Blame History

Packages:

autoscaling.internal.knative.dev

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)

TODO: Generation does not work correctly with CRD. They are scrubbed by the APIserver (https://github.com/kubernetes/kubernetes/issues/58778) So, we add Generation here. Once that gets fixed, remove this and use ObjectMeta.Generation instead.

concurrencyModel
RevisionRequestConcurrencyModelType
(Optional)

ConcurrencyModel specifies the desired concurrency model (Single or Multi) for the scale target. Defaults to Multi. Deprecated in favor of ContainerConcurrency.

containerConcurrency
RevisionContainerConcurrencyType
(Optional)

ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container of the Revision. Defaults to 0 which means unlimited concurrency. This field replaces ConcurrencyModel. A value of 1 is equivalent to Single and 0 is equivalent to Multi.

scaleTargetRef
Kubernetes autoscaling/v1.CrossVersionObjectReference

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

serviceName
string

ServiceName holds the name of a core Kubernetes Service resource that load balances over the pods referenced by the ScaleTargetRef.

status
PodAutoscalerStatus
(Optional)

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

PodAutoscalerSpec

(Appears on: PodAutoscaler)

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

Field Description
generation
int64
(Optional)

TODO: Generation does not work correctly with CRD. They are scrubbed by the APIserver (https://github.com/kubernetes/kubernetes/issues/58778) So, we add Generation here. Once that gets fixed, remove this and use ObjectMeta.Generation instead.

concurrencyModel
RevisionRequestConcurrencyModelType
(Optional)

ConcurrencyModel specifies the desired concurrency model (Single or Multi) for the scale target. Defaults to Multi. Deprecated in favor of ContainerConcurrency.

containerConcurrency
RevisionContainerConcurrencyType
(Optional)

ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container of the Revision. Defaults to 0 which means unlimited concurrency. This field replaces ConcurrencyModel. A value of 1 is equivalent to Single and 0 is equivalent to Multi.

scaleTargetRef
Kubernetes autoscaling/v1.CrossVersionObjectReference

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

serviceName
string

ServiceName holds the name of a core Kubernetes Service resource that load balances over the pods referenced by the ScaleTargetRef.

PodAutoscalerStatus

(Appears on: PodAutoscaler)

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

Field Description
conditions
github.com/knative/pkg/apis/duck/v1alpha1.Conditions
(Optional)

Conditions communicates information about ongoing/complete reconciliation processes that bring the “spec” inline with the observed state of the world.


networking.internal.knative.dev

Resource Types:

ClusterIngress

ClusterIngress is a collection of rules that allow inbound connections to reach the endpoints defined by a backend. An ClusterIngress can be configured to give services externally-reachable urls, load balance traffic offer name based virtual hosting etc.

This is heavily based on K8s Ingress https://godoc.org/k8s.io/api/extensions/v1beta1#Ingress which some highlighted modifications.

Field Description
apiVersion
string
networking.internal.knative.dev/v1alpha1
kind
string
ClusterIngress
metadata
Kubernetes meta/v1.ObjectMeta
(Optional)

Standard objects metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata

Refer to the Kubernetes API documentation for the fields of the metadata field.
spec
IngressSpec
(Optional)

Spec is the desired state of the ClusterIngress. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status



generation
int64
(Optional)

TODO: Generation does not work correctly with CRD. They are scrubbed by the APIserver (https://github.com/kubernetes/kubernetes/issues/58778) So, we add Generation here. Once that gets fixed, remove this and use ObjectMeta.Generation instead.

tls
[]ClusterIngressTLS
(Optional)

TLS configuration. Currently the ClusterIngress only supports a single TLS port, 443. If multiple members of this list specify different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension, if the ingress controller fulfilling the ingress supports SNI.

rules
[]ClusterIngressRule
(Optional)

A list of host rules used to configure the ClusterIngress.

status
IngressStatus
(Optional)

Status is the current state of the ClusterIngress. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status

ClusterIngressBackend

(Appears on: ClusterIngressBackendSplit)

ClusterIngressBackend describes all endpoints for a given service and port.

Field Description
serviceNamespace
string

Specifies the namespace of the referenced service.

NOTE: This differs from K8s Ingress to allow routing to different namespaces.

serviceName
string

Specifies the name of the referenced service.

servicePort
k8s.io/apimachinery/pkg/util/intstr.IntOrString

Specifies the port of the referenced service.

ClusterIngressBackendSplit

(Appears on: HTTPClusterIngressPath)

ClusterIngressBackend describes all endpoints for a given service and port.

Field Description
ClusterIngressBackend
ClusterIngressBackend

(Members of ClusterIngressBackend are embedded into this type.)

Specifies the backend receiving the traffic split.

percent
int

Specifies the split percentage, a number between 0 and 100. If only one split is specified, we default to 100.

NOTE: This differs from K8s Ingress to allow percentage split.

ClusterIngressRule

(Appears on: IngressSpec)

ClusterIngressRule represents the rules mapping the paths under a specified host to the related backend services. Incoming requests are first evaluated for a host match, then routed to the backend associated with the matching ClusterIngressRuleValue.

Field Description
hosts
[]string
(Optional)

Host is the fully qualified domain name of a network host, as defined by RFC 3986. Note the following deviations from the “host” part of the URI as defined in the RFC: 1. IPs are not allowed. Currently a rule value can only apply to the IP in the Spec of the parent ClusterIngress. 2. The : delimiter is not respected because ports are not allowed. Currently the port of an ClusterIngress is implicitly :80 for http and :443 for https. Both these may change in the future. If the host is unspecified, the ClusterIngress routes all traffic based on the specified ClusterIngressRuleValue. If multiple matching Hosts were provided, the first rule will take precedent.

http
HTTPClusterIngressRuleValue

HTTP represents a rule to apply against incoming requests. If the rule is satisfied, the request is routed to the specified backend.

ClusterIngressTLS

(Appears on: IngressSpec)

ClusterIngressTLS describes the transport layer security associated with an ClusterIngress.

Field Description
hosts
[]string
(Optional)

Hosts are a list of hosts included in the TLS certificate. The values in this list must match the name/s used in the tlsSecret. Defaults to the wildcard host setting for the loadbalancer controller fulfilling this ClusterIngress, if left unspecified.

secretName
string

SecretName is the name of the secret used to terminate SSL traffic.

secretNamespace
string

SecretNamespace is the namespace of the secret used to terminate SSL traffic.

serverCertificate
string
(Optional)

ServerCertificate identifies the certificate filename in the secret. Defaults to tls.cert.

privateKey
string
(Optional)

PrivateKey identifies the private key filename in the secret. Defaults to tls.key.

HTTPClusterIngressPath

(Appears on: HTTPClusterIngressRuleValue)

HTTPClusterIngressPath associates a path regex with a backend. Incoming urls matching the path are forwarded to the backend.

Field Description
path
string
(Optional)

Path is an extended POSIX regex as defined by IEEE Std 1003.1, (i.e this follows the egrep/unix syntax, not the perl syntax) matched against the path of an incoming request. Currently it can contain characters disallowed from the conventional “path” part of a URL as defined by RFC 3986. Paths must begin with a /. If unspecified, the path defaults to a catch all sending traffic to the backend.

splits
[]ClusterIngressBackendSplit

Splits defines the referenced service endpoints to which the traffic will be forwarded to.

appendHeaders
map[string]string
(Optional)

AppendHeaders allow specifying additional HTTP headers to add before forwarding a request to the destination service.

NOTE: This differs from K8s Ingress which doesnt allow header appending.

timeout
Kubernetes meta/v1.Duration
(Optional)

Timeout for HTTP requests.

NOTE: This differs from K8s Ingress which doesnt allow setting timeouts.

retries
HTTPRetry
(Optional)

Retry policy for HTTP requests.

NOTE: This differs from K8s Ingress which doesnt allow retry settings.

HTTPClusterIngressRuleValue

(Appears on: ClusterIngressRule)

HTTPClusterIngressRuleValue is a list of http selectors pointing to backends. In the example: http:///? -> backend where where parts of the url correspond to RFC 3986, this resource will be used to match against everything after the last / and before the first ? or #.

Field Description
paths
[]HTTPClusterIngressPath

A collection of paths that map requests to backends.

If they are multiple matching paths, the first match takes precendent.

HTTPRetry

(Appears on: HTTPClusterIngressPath)

HTTPRetry describes the retry policy to use when a HTTP request fails.

Field Description
attempts
int

Number of retries for a given request.

perTryTimeout
Kubernetes meta/v1.Duration

Timeout per retry attempt for a given request. format: 1h/1m/1s/1ms. MUST BE >=1ms.

IngressSpec

(Appears on: ClusterIngress)

IngressSpec describes the ClusterIngress the user wishes to exist.

In general this follow the same shape as K8s Ingress. Some notable differences: - Backends now can have namespace: - Traffic can be split across multiple backends. - Timeout & Retry can be configured. - Headers can be appended.

Field Description
generation
int64
(Optional)

TODO: Generation does not work correctly with CRD. They are scrubbed by the APIserver (https://github.com/kubernetes/kubernetes/issues/58778) So, we add Generation here. Once that gets fixed, remove this and use ObjectMeta.Generation instead.

tls
[]ClusterIngressTLS
(Optional)

TLS configuration. Currently the ClusterIngress only supports a single TLS port, 443. If multiple members of this list specify different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension, if the ingress controller fulfilling the ingress supports SNI.

rules
[]ClusterIngressRule
(Optional)

A list of host rules used to configure the ClusterIngress.

IngressStatus

(Appears on: ClusterIngress)

IngressStatus describe the current state of the ClusterIngress.

Field Description
conditions
github.com/knative/pkg/apis/duck/v1alpha1.Conditions
(Optional)
loadBalancer
LoadBalancerStatus
(Optional)

LoadBalancer contains the current status of the load-balancer.

LoadBalancerIngressStatus

(Appears on: LoadBalancerStatus)

LoadBalancerIngress represents the status of a load-balancer ingress point: traffic intended for the service should be sent to an ingress point.

Field Description
ip
string
(Optional)

IP is set for load-balancer ingress points that are IP based (typically GCE or OpenStack load-balancers)

domain
string
(Optional)

Domain is set for load-balancer ingress points that are DNS based (typically AWS load-balancers)

domainInternal
string
(Optional)

DomainInternal is set if there is a cluster-local DNS name to access the Ingress.

NOTE: This differs from K8s Ingress, since we also desire to have a cluster-local DNS name to allow routing in case of not having a mesh.

LoadBalancerStatus

(Appears on: IngressStatus)

LoadBalancerStatus represents the status of a load-balancer.

Field Description
ingress
[]LoadBalancerIngressStatus
(Optional)

Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points.


serving.knative.dev

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 Configurations spec. The “latest created” revisions name is available under status, as is the “latest ready” revisions 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)

TODO: Generation does not work correctly with CRD. They are scrubbed by the APIserver (https://github.com/kubernetes/kubernetes/issues/58778) So, we add Generation here. Once that gets fixed, remove this and use ObjectMeta.Generation instead.

build
RawExtension
(Optional)

Build optionally holds the specification for the build to perform to produce the Revisions container image.

revisionTemplate
RevisionTemplateSpec
(Optional)

RevisionTemplate holds the latest specification for the Revision to be stamped out. If a Build specification is provided, then the RevisionTemplates BuildName field will be populated with the name of the Build object created to produce the container for the Revision.

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).



generation
int64
(Optional)

TODO: Generation does not work correctly with CRD. They are scrubbed by the APIserver (https://github.com/kubernetes/kubernetes/issues/58778) So, we add Generation here. Once that gets fixed, remove this and use ObjectMeta.Generation instead.

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.

concurrencyModel
RevisionRequestConcurrencyModelType
(Optional)

ConcurrencyModel specifies the desired concurrency model (Single or Multi) for the Revision. Defaults to Multi. Deprecated in favor of ContainerConcurrency.

containerConcurrency
RevisionContainerConcurrencyType
(Optional)

ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container of the Revision. Defaults to 0 which means unlimited concurrency. This field replaces ConcurrencyModel. A value of 1 is equivalent to Single and 0 is equivalent to Multi.

serviceAccountName
string
(Optional)

ServiceAccountName holds the name of the Kubernetes service account as which the underlying K8s resources should be run. If unspecified this will default to the “default” service account for the namespace in which the Revision exists. This may be used to provide access to private container images by following: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#add-imagepullsecrets-to-a-service-account TODO(ZhiminXiang): verify the corresponding service account exists.

buildName
string
(Optional)

BuildName optionally holds the name of the Build responsible for producing the container image for its Revision. DEPRECATED: Use BuildRef instead.

buildRef
Kubernetes core/v1.ObjectReference
(Optional)

BuildRef holds the reference to the build (if there is one) responsible for producing the container image for this Revision. Otherwise, nil

container
Kubernetes core/v1.Container
(Optional)

Container 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, resources, ports, and volumeMounts. TODO(mattmoor): Link to the runtime contract tracked by: https://github.com/knative/serving/issues/627

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)

TODO: Generation does not work correctly with CRD. They are scrubbed by the APIserver (https://github.com/kubernetes/kubernetes/issues/58778) So, we add Generation here. Once that gets fixed, remove this and use ObjectMeta.Generation instead.

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 Services 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)

TODO: Generation does not work correctly with CRD. They are scrubbed by the APIserver (https://github.com/kubernetes/kubernetes/issues/58778) So, we add Generation here. Once that gets fixed, remove this and use ObjectMeta.Generation instead.

runLatest
RunLatestType
(Optional)

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

pinned
PinnedType
(Optional)

Pins this service to a specific revision name. The revision must be owned by the configuration provided. PinnedType is DEPRECATED in favor of ReleaseType

manual
ManualType
(Optional)

Manual 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.

status
ServiceStatus
(Optional)

ConfigurationSpec

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

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

Field Description
generation
int64
(Optional)

TODO: Generation does not work correctly with CRD. They are scrubbed by the APIserver (https://github.com/kubernetes/kubernetes/issues/58778) So, we add Generation here. Once that gets fixed, remove this and use ObjectMeta.Generation instead.

build
RawExtension
(Optional)

Build optionally holds the specification for the build to perform to produce the Revisions container image.

revisionTemplate
RevisionTemplateSpec
(Optional)

RevisionTemplate holds the latest specification for the Revision to be stamped out. If a Build specification is provided, then the RevisionTemplates BuildName field will be populated with the name of the Build object created to produce the container for the Revision.

ConfigurationStatus

(Appears on: Configuration)

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

Field Description
conditions
github.com/knative/pkg/apis/duck/v1alpha1.Conditions
(Optional)

Conditions communicates information about ongoing/complete reconciliation processes that bring the “spec” inline with the observed state of the world.

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.

observedGeneration
int64
(Optional)

ObservedGeneration is the Generation of the Configuration that was last processed by the controller. The observed generation is updated even if the controller failed to process the spec and create the Revision.

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.

RawExtension

(Appears on: ConfigurationSpec)

RawExtension is modeled after runtime.RawExtension, and should be replaced with it (or an alias) once we can stop supporting embedded BuildSpecs.

Field Description
Raw
[]byte

Field order is the precedence for JSON marshaling if multiple fields are set.

Object
k8s.io/apimachinery/pkg/runtime.Object
BuildSpec
github.com/knative/build/pkg/apis/build/v1alpha1.BuildSpec

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.

RevisionContainerConcurrencyType (int64 alias)

(Appears on: PodAutoscalerSpec, RevisionSpec)

RevisionContainerConcurrencyType is an integer expressing a number of in-flight (concurrent) requests.

RevisionRequestConcurrencyModelType (string alias)

(Appears on: PodAutoscalerSpec, RevisionSpec)

RevisionRequestConcurrencyModelType is an enumeration of the concurrency models supported by a Revision. Deprecated in favor of RevisionContainerConcurrencyType.

RevisionSpec

(Appears on: Revision, RevisionTemplateSpec)

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

Field Description
generation
int64
(Optional)

TODO: Generation does not work correctly with CRD. They are scrubbed by the APIserver (https://github.com/kubernetes/kubernetes/issues/58778) So, we add Generation here. Once that gets fixed, remove this and use ObjectMeta.Generation instead.

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.

concurrencyModel
RevisionRequestConcurrencyModelType
(Optional)

ConcurrencyModel specifies the desired concurrency model (Single or Multi) for the Revision. Defaults to Multi. Deprecated in favor of ContainerConcurrency.

containerConcurrency
RevisionContainerConcurrencyType
(Optional)

ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container of the Revision. Defaults to 0 which means unlimited concurrency. This field replaces ConcurrencyModel. A value of 1 is equivalent to Single and 0 is equivalent to Multi.

serviceAccountName
string
(Optional)

ServiceAccountName holds the name of the Kubernetes service account as which the underlying K8s resources should be run. If unspecified this will default to the “default” service account for the namespace in which the Revision exists. This may be used to provide access to private container images by following: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#add-imagepullsecrets-to-a-service-account TODO(ZhiminXiang): verify the corresponding service account exists.

buildName
string
(Optional)

BuildName optionally holds the name of the Build responsible for producing the container image for its Revision. DEPRECATED: Use BuildRef instead.

buildRef
Kubernetes core/v1.ObjectReference
(Optional)

BuildRef holds the reference to the build (if there is one) responsible for producing the container image for this Revision. Otherwise, nil

container
Kubernetes core/v1.Container
(Optional)

Container 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, resources, ports, and volumeMounts. TODO(mattmoor): Link to the runtime contract tracked by: https://github.com/knative/serving/issues/627

RevisionStatus

(Appears on: Revision)

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

Field Description
serviceName
string
(Optional)

ServiceName holds the name of a core Kubernetes Service resource that load balances over the pods backing this Revision. When the Revision is Active, this service would be an appropriate ingress target for targeting the revision.

conditions
github.com/knative/pkg/apis/duck/v1alpha1.Conditions
(Optional)

Conditions communicates information about ongoing/complete reconciliation processes that bring the “spec” inline with the observed state of the world.

observedGeneration
int64
(Optional)

ObservedGeneration is the Generation of the Configuration that was last processed by the controller. The observed generation is updated even if the controller failed to process the spec and create the Revision.

logUrl
string
(Optional)

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

imageDigest
string
(Optional)

ImageDigest 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.

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)

generation
int64
(Optional)

TODO: Generation does not work correctly with CRD. They are scrubbed by the APIserver (https://github.com/kubernetes/kubernetes/issues/58778) So, we add Generation here. Once that gets fixed, remove this and use ObjectMeta.Generation instead.

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.

concurrencyModel
RevisionRequestConcurrencyModelType
(Optional)

ConcurrencyModel specifies the desired concurrency model (Single or Multi) for the Revision. Defaults to Multi. Deprecated in favor of ContainerConcurrency.

containerConcurrency
RevisionContainerConcurrencyType
(Optional)

ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container of the Revision. Defaults to 0 which means unlimited concurrency. This field replaces ConcurrencyModel. A value of 1 is equivalent to Single and 0 is equivalent to Multi.

serviceAccountName
string
(Optional)

ServiceAccountName holds the name of the Kubernetes service account as which the underlying K8s resources should be run. If unspecified this will default to the “default” service account for the namespace in which the Revision exists. This may be used to provide access to private container images by following: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#add-imagepullsecrets-to-a-service-account TODO(ZhiminXiang): verify the corresponding service account exists.

buildName
string
(Optional)

BuildName optionally holds the name of the Build responsible for producing the container image for its Revision. DEPRECATED: Use BuildRef instead.

buildRef
Kubernetes core/v1.ObjectReference
(Optional)

BuildRef holds the reference to the build (if there is one) responsible for producing the container image for this Revision. Otherwise, nil

container
Kubernetes core/v1.Container
(Optional)

Container 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, resources, ports, and volumeMounts. TODO(mattmoor): Link to the runtime contract tracked by: https://github.com/knative/serving/issues/627

RouteSpec

(Appears on: Route)

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

Field Description
generation
int64
(Optional)

TODO: Generation does not work correctly with CRD. They are scrubbed by the APIserver (https://github.com/kubernetes/kubernetes/issues/58778) So, we add Generation here. Once that gets fixed, remove this and use ObjectMeta.Generation instead.

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
domain
string
(Optional)

Domain 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)

DomainInternal 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.local DEPRECATED: Use Address instead.

address
github.com/knative/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.

conditions
github.com/knative/pkg/apis/duck/v1alpha1.Conditions
(Optional)

Conditions communicates information about ongoing/complete reconciliation processes that bring the “spec” inline with the observed state of the world.

observedGeneration
int64
(Optional)

ObservedGeneration is the Generation of the Configuration that was last processed by the controller. The observed generation is updated even if the controller failed to process the spec and create the Revision.

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)

TODO: Generation does not work correctly with CRD. They are scrubbed by the APIserver (https://github.com/kubernetes/kubernetes/issues/58778) So, we add Generation here. Once that gets fixed, remove this and use ObjectMeta.Generation instead.

runLatest
RunLatestType
(Optional)

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

pinned
PinnedType
(Optional)

Pins this service to a specific revision name. The revision must be owned by the configuration provided. PinnedType is DEPRECATED in favor of ReleaseType

manual
ManualType
(Optional)

Manual 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.

ServiceStatus

(Appears on: Service)

Field Description
conditions
github.com/knative/pkg/apis/duck/v1alpha1.Conditions
(Optional)
domain
string
(Optional)

From RouteStatus. Domain 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)

From RouteStatus. DomainInternal 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.local DEPRECATED: Use Address instead.

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

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

traffic
[]TrafficTarget
(Optional)

From RouteStatus. 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.

latestReadyRevisionName
string
(Optional)

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

latestCreatedRevisionName
string
(Optional)

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

observedGeneration
int64
(Optional)

ObservedGeneration is the Generation of the Service that was last processed by the controller.

TrafficTarget

(Appears on: RouteSpec, RouteStatus, ServiceStatus)

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}

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 Routes status, only its spec. This is mutually exclusive with RevisionName.

percent
int

Percent specifies percent of the traffic to this Revision or Configuration. This defaults to zero if unspecified.


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