apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"apiextensions.k8s.io/v1","kind":"CustomResourceDefinition","metadata":{"labels":{"duck.knative.dev/addressable":"true","duck.knative.dev/podspecable":"true","knative.dev/crd-install":"true","serving.knative.dev/release":"v0.24.0"},"name":"services.serving.knative.dev"},"spec":{"group":"serving.knative.dev","names":{"categories":["all","knative","serving"],"kind":"Service","plural":"services","shortNames":["kservice","ksvc"],"singular":"service"},"scope":"Namespaced","versions":[{"additionalPrinterColumns":[{"jsonPath":".status.url","name":"URL","type":"string"},{"jsonPath":".status.latestCreatedRevisionName","name":"LatestCreated","type":"string"},{"jsonPath":".status.latestReadyRevisionName","name":"LatestReady","type":"string"},{"jsonPath":".status.conditions[?(@.type==''Ready'')].status","name":"Ready","type":"string"},{"jsonPath":".status.conditions[?(@.type==''Ready'')].reason","name":"Reason","type":"string"}],"name":"v1","schema":{"openAPIV3Schema":{"description":"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.
\n The Service''s controller will track the statuses of its owned Configuration
and Route, reflecting their statuses and conditions as its own. \n See also:
https://github.com/knative/serving/blob/main/docs/spec/overview.md#service","properties":{"apiVersion":{"description":"APIVersion
defines the versioned schema of this representation of an object. Servers should
convert recognized schemas to the latest internal value, and may reject unrecognized
values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources","type":"string"},"kind":{"description":"Kind
is a string value representing the REST resource this object represents. Servers
may infer this from the endpoint the client submits requests to. Cannot be updated.
In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string"},"metadata":{"type":"object"},"spec":{"description":"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.","properties":{"template":{"description":"Template
holds the latest specification for the Revision to be stamped out.","properties":{"metadata":{"properties":{"annotations":{"additionalProperties":{"type":"string"},"type":"object"},"finalizers":{"items":{"type":"string"},"type":"array"},"labels":{"additionalProperties":{"type":"string"},"type":"object"},"name":{"type":"string"},"namespace":{"type":"string"}},"type":"object","x-kubernetes-preserve-unknown-fields":true},"spec":{"description":"RevisionSpec
holds the desired state of the Revision (from the client).","properties":{"containerConcurrency":{"description":"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.","format":"int64","type":"integer"},"containers":{"description":"List
of containers belonging to the pod. Containers cannot currently be added or
removed. There must be at least one container in a Pod. Cannot be updated.","items":{"description":"A
single application container that you want to run within a pod.","properties":{"args":{"description":"Arguments
to the entrypoint. The docker image''s CMD is used if this is not provided.
Variable references $(VAR_NAME) are expanded using the container''s environment.
If a variable cannot be resolved, the reference in the input string will be
unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME).
Escaped references will never be expanded, regardless of whether the variable
exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell","items":{"type":"string"},"type":"array"},"command":{"description":"Entrypoint
array. Not executed within a shell. The docker image''s ENTRYPOINT is used if
this is not provided. Variable references $(VAR_NAME) are expanded using the
container''s environment. If a variable cannot be resolved, the reference in
the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with
a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless
of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell","items":{"type":"string"},"type":"array"},"env":{"description":"List
of environment variables to set in the container. Cannot be updated.","items":{"description":"EnvVar
represents an environment variable present in a Container.","properties":{"name":{"description":"Name
of the environment variable. Must be a C_IDENTIFIER.","type":"string"},"value":{"description":"Variable
references $(VAR_NAME) are expanded using the previous defined environment variables
in the container and any service environment variables. If a variable cannot
be resolved, the reference in the input string will be unchanged. The $(VAR_NAME)
syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references
will never be expanded, regardless of whether the variable exists or not. Defaults
to \"\".","type":"string"},"valueFrom":{"description":"Source for the environment
variable''s value. Cannot be used if value is not empty.","properties":{"configMapKeyRef":{"description":"Selects
a key of a ConfigMap.","properties":{"key":{"description":"The key to select.","type":"string"},"name":{"description":"Name
of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
TODO: Add other useful fields. apiVersion, kind, uid?","type":"string"},"optional":{"description":"Specify
whether the ConfigMap or its key must be defined","type":"boolean"}},"required":["key"],"type":"object"},"secretKeyRef":{"description":"Selects
a key of a secret in the pod''s namespace","properties":{"key":{"description":"The
key of the secret to select from. Must be a valid secret key.","type":"string"},"name":{"description":"Name
of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
TODO: Add other useful fields. apiVersion, kind, uid?","type":"string"},"optional":{"description":"Specify
whether the Secret or its key must be defined","type":"boolean"}},"required":["key"],"type":"object"}},"type":"object","x-kubernetes-preserve-unknown-fields":true}},"required":["name"],"type":"object"},"type":"array"},"envFrom":{"description":"List
of sources to populate environment variables in the container. The keys defined
within a source must be a C_IDENTIFIER. All invalid keys will be reported as
an event when the container is starting. When a key exists in multiple sources,
the value associated with the last source will take precedence. Values defined
by an Env with a duplicate key will take precedence. Cannot be updated.","items":{"description":"EnvFromSource
represents the source of a set of ConfigMaps","properties":{"configMapRef":{"description":"The
ConfigMap to select from","properties":{"name":{"description":"Name of the referent.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
TODO: Add other useful fields. apiVersion, kind, uid?","type":"string"},"optional":{"description":"Specify
whether the ConfigMap must be defined","type":"boolean"}},"type":"object"},"prefix":{"description":"An
optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.","type":"string"},"secretRef":{"description":"The
Secret to select from","properties":{"name":{"description":"Name of the referent.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
TODO: Add other useful fields. apiVersion, kind, uid?","type":"string"},"optional":{"description":"Specify
whether the Secret must be defined","type":"boolean"}},"type":"object"}},"type":"object"},"type":"array"},"image":{"description":"Docker
image name. More info: https://kubernetes.io/docs/concepts/containers/images
This field is optional to allow higher level config management to default or
override container images in workload controllers like Deployments and StatefulSets.","type":"string"},"imagePullPolicy":{"description":"Image
pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest
tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images","type":"string"},"livenessProbe":{"description":"Periodic
probe of container liveness. Container will be restarted if the probe fails.
Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes","properties":{"exec":{"description":"One
and only one of the following should be specified. Exec specifies the action
to take.","properties":{"command":{"description":"Command is the command line
to execute inside the container, the working directory for the command is root
(''/'') in the container''s filesystem. The command is simply exec''d, it is
not run inside a shell, so traditional shell instructions (''|'', etc) won''t
work. To use a shell, you need to explicitly call out to that shell. Exit status
of 0 is treated as live/healthy and non-zero is unhealthy.","items":{"type":"string"},"type":"array"}},"type":"object"},"failureThreshold":{"description":"Minimum
consecutive failures for the probe to be considered failed after having succeeded.
Defaults to 3. Minimum value is 1.","format":"int32","type":"integer"},"httpGet":{"description":"HTTPGet
specifies the http request to perform.","properties":{"host":{"description":"Host
name to connect to, defaults to the pod IP. You probably want to set \"Host\"
in httpHeaders instead.","type":"string"},"httpHeaders":{"description":"Custom
headers to set in the request. HTTP allows repeated headers.","items":{"description":"HTTPHeader
describes a custom header to be used in HTTP probes","properties":{"name":{"description":"The
header field name","type":"string"},"value":{"description":"The header field
value","type":"string"}},"required":["name","value"],"type":"object"},"type":"array"},"path":{"description":"Path
to access on the HTTP server.","type":"string"},"scheme":{"description":"Scheme
to use for connecting to the host. Defaults to HTTP.","type":"string"}},"type":"object","x-kubernetes-preserve-unknown-fields":true},"initialDelaySeconds":{"description":"Number
of seconds after the container has started before liveness probes are initiated.
More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes","format":"int32","type":"integer"},"periodSeconds":{"description":"How
often (in seconds) to perform the probe.","format":"int32","type":"integer"},"successThreshold":{"description":"Minimum
consecutive successes for the probe to be considered successful after having
failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is
1.","format":"int32","type":"integer"},"tcpSocket":{"description":"TCPSocket
specifies an action involving a TCP port. TCP hooks not yet supported TODO:
implement a realistic TCP lifecycle hook","properties":{"host":{"description":"Optional:
Host name to connect to, defaults to the pod IP.","type":"string"}},"type":"object","x-kubernetes-preserve-unknown-fields":true},"timeoutSeconds":{"description":"Number
of seconds after which the probe times out. Defaults to 1 second. Minimum value
is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes","format":"int32","type":"integer"}},"type":"object"},"name":{"description":"Name
of the container specified as a DNS_LABEL. Each container in a pod must have
a unique name (DNS_LABEL). Cannot be updated.","type":"string"},"ports":{"description":"List
of ports to expose from the container. Exposing a port here gives the system
additional information about the network connections a container uses, but is
primarily informational. Not specifying a port here DOES NOT prevent that port
from being exposed. Any port which is listening on the default \"0.0.0.0\" address
inside a container will be accessible from the network. Cannot be updated.","items":{"description":"ContainerPort
represents a network port in a single container.","properties":{"containerPort":{"description":"Number
of port to expose on the pod''s IP address. This must be a valid port number,
0 \u003c x \u003c 65536.","format":"int32","type":"integer"},"name":{"description":"If
specified, this must be an IANA_SVC_NAME and unique within the pod. Each named
port in a pod must have a unique name. Name for the port that can be referred
to by services.","type":"string"},"protocol":{"default":"TCP","description":"Protocol
for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".","type":"string"}},"required":["containerPort"],"type":"object","x-kubernetes-preserve-unknown-fields":true},"type":"array","x-kubernetes-list-map-keys":["containerPort","protocol"],"x-kubernetes-list-type":"map"},"readinessProbe":{"description":"Periodic
probe of container service readiness. Container will be removed from service
endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes","properties":{"exec":{"description":"One
and only one of the following should be specified. Exec specifies the action
to take.","properties":{"command":{"description":"Command is the command line
to execute inside the container, the working directory for the command is root
(''/'') in the container''s filesystem. The command is simply exec''d, it is
not run inside a shell, so traditional shell instructions (''|'', etc) won''t
work. To use a shell, you need to explicitly call out to that shell. Exit status
of 0 is treated as live/healthy and non-zero is unhealthy.","items":{"type":"string"},"type":"array"}},"type":"object"},"failureThreshold":{"description":"Minimum
consecutive failures for the probe to be considered failed after having succeeded.
Defaults to 3. Minimum value is 1.","format":"int32","type":"integer"},"httpGet":{"description":"HTTPGet
specifies the http request to perform.","properties":{"host":{"description":"Host
name to connect to, defaults to the pod IP. You probably want to set \"Host\"
in httpHeaders instead.","type":"string"},"httpHeaders":{"description":"Custom
headers to set in the request. HTTP allows repeated headers.","items":{"description":"HTTPHeader
describes a custom header to be used in HTTP probes","properties":{"name":{"description":"The
header field name","type":"string"},"value":{"description":"The header field
value","type":"string"}},"required":["name","value"],"type":"object"},"type":"array"},"path":{"description":"Path
to access on the HTTP server.","type":"string"},"scheme":{"description":"Scheme
to use for connecting to the host. Defaults to HTTP.","type":"string"}},"type":"object","x-kubernetes-preserve-unknown-fields":true},"initialDelaySeconds":{"description":"Number
of seconds after the container has started before liveness probes are initiated.
More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes","format":"int32","type":"integer"},"periodSeconds":{"description":"How
often (in seconds) to perform the probe.","format":"int32","type":"integer"},"successThreshold":{"description":"Minimum
consecutive successes for the probe to be considered successful after having
failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is
1.","format":"int32","type":"integer"},"tcpSocket":{"description":"TCPSocket
specifies an action involving a TCP port. TCP hooks not yet supported TODO:
implement a realistic TCP lifecycle hook","properties":{"host":{"description":"Optional:
Host name to connect to, defaults to the pod IP.","type":"string"}},"type":"object","x-kubernetes-preserve-unknown-fields":true},"timeoutSeconds":{"description":"Number
of seconds after which the probe times out. Defaults to 1 second. Minimum value
is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes","format":"int32","type":"integer"}},"type":"object"},"resources":{"description":"Compute
Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/","properties":{"limits":{"additionalProperties":{"anyOf":[{"type":"integer"},{"type":"string"}],"pattern":"^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$","x-kubernetes-int-or-string":true},"description":"Limits
describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/","type":"object"},"requests":{"additionalProperties":{"anyOf":[{"type":"integer"},{"type":"string"}],"pattern":"^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$","x-kubernetes-int-or-string":true},"description":"Requests
describes the minimum amount of compute resources required. If Requests is omitted
for a container, it defaults to Limits if that is explicitly specified, otherwise
to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/","type":"object"}},"type":"object"},"securityContext":{"description":"Security
options the pod should run with. More info: https://kubernetes.io/docs/concepts/policy/security-context/
More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/","properties":{"capabilities":{"description":"The
capabilities to add/drop when running containers. Defaults to the default set
of capabilities granted by the container runtime.","properties":{"drop":{"description":"Removed
capabilities","items":{"description":"Capability represent POSIX capabilities
type","type":"string"},"type":"array"}},"type":"object","x-kubernetes-preserve-unknown-fields":true},"readOnlyRootFilesystem":{"description":"Whether
this container has a read-only root filesystem. Default is false.","type":"boolean"},"runAsUser":{"description":"The
UID to run the entrypoint of the container process. Defaults to user specified
in image metadata if unspecified. May also be set in PodSecurityContext. If
set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext
takes precedence.","format":"int64","type":"integer"}},"type":"object","x-kubernetes-preserve-unknown-fields":true},"terminationMessagePath":{"description":"Optional:
Path at which the file to which the container''s termination message will be
written is mounted into the container''s filesystem. Message written is intended
to be brief final status, such as an assertion failure message. Will be truncated
by the node if greater than 4096 bytes. The total message length across all
containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot
be updated.","type":"string"},"terminationMessagePolicy":{"description":"Indicate
how the termination message should be populated. File will use the contents
of terminationMessagePath to populate the container status message on both success
and failure. FallbackToLogsOnError will use the last chunk of container log
output if the termination message file is empty and the container exited with
an error. The log output is limited to 2048 bytes or 80 lines, whichever is
smaller. Defaults to File. Cannot be updated.","type":"string"},"volumeMounts":{"description":"Pod
volumes to mount into the container''s filesystem. Cannot be updated.","items":{"description":"VolumeMount
describes a mounting of a Volume within a container.","properties":{"mountPath":{"description":"Path
within the container at which the volume should be mounted. Must not contain
'':''.","type":"string"},"name":{"description":"This must match the Name of
a Volume.","type":"string"},"readOnly":{"description":"Mounted read-only if
true, read-write otherwise (false or unspecified). Defaults to false.","type":"boolean"},"subPath":{"description":"Path
within the volume from which the container''s volume should be mounted. Defaults
to \"\" (volume''s root).","type":"string"}},"required":["mountPath","name"],"type":"object"},"type":"array"},"workingDir":{"description":"Container''s
working directory. If not specified, the container runtime''s default will be
used, which might be configured in the container image. Cannot be updated.","type":"string"}},"type":"object","x-kubernetes-preserve-unknown-fields":true},"type":"array"},"enableServiceLinks":{"description":"EnableServiceLinks
indicates whether information about services should be injected into pod''s
environment variables, matching the syntax of Docker links. Optional: Defaults
to true.","type":"boolean"},"imagePullSecrets":{"description":"ImagePullSecrets
is an optional list of references to secrets in the same namespace to use for
pulling any of the images used by this PodSpec. If specified, these secrets
will be passed to individual puller implementations for them to use. For example,
in the case of docker, only DockerConfig type secrets are honored. More info:
https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod","items":{"description":"LocalObjectReference
contains enough information to let you locate the referenced object inside the
same namespace.","properties":{"name":{"description":"Name of the referent.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
TODO: Add other useful fields. apiVersion, kind, uid?","type":"string"}},"type":"object"},"type":"array"},"serviceAccountName":{"description":"ServiceAccountName
is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/","type":"string"},"timeoutSeconds":{"description":"TimeoutSeconds
is the maximum duration in seconds that the request routing layer will wait
for a request delivered to a container to begin replying (send network traffic).
If unspecified, a system default will be provided.","format":"int64","type":"integer"},"volumes":{"description":"List
of volumes that can be mounted by containers belonging to the pod. More info:
https://kubernetes.io/docs/concepts/storage/volumes","items":{"description":"Volume
represents a named volume in a pod that may be accessed by any container in
the pod.","properties":{"configMap":{"description":"ConfigMap represents a configMap
that should populate this volume","properties":{"defaultMode":{"description":"Optional:
mode bits used to set permissions on created files by default. Must be an octal
value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts
both octal and decimal values, JSON requires decimal values for mode bits. Defaults
to 0644. Directories within the path are not affected by this setting. This
might be in conflict with other options that affect the file mode, like fsGroup,
and the result can be other mode bits set.","format":"int32","type":"integer"},"items":{"description":"If
unspecified, each key-value pair in the Data field of the referenced ConfigMap
will be projected into the volume as a file whose name is the key and content
is the value. If specified, the listed keys will be projected into the specified
paths, and unlisted keys will not be present. If a key is specified which is
not present in the ConfigMap, the volume setup will error unless it is marked
optional. Paths must be relative and may not contain the ''..'' path or start
with ''..''.","items":{"description":"Maps a string key to a path within a volume.","properties":{"key":{"description":"The
key to project.","type":"string"},"mode":{"description":"Optional: mode bits
used to set permissions on this file. Must be an octal value between 0000 and
0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal
values, JSON requires decimal values for mode bits. If not specified, the volume
defaultMode will be used. This might be in conflict with other options that
affect the file mode, like fsGroup, and the result can be other mode bits set.","format":"int32","type":"integer"},"path":{"description":"The
relative path of the file to map the key to. May not be an absolute path. May
not contain the path element ''..''. May not start with the string ''..''.","type":"string"}},"required":["key","path"],"type":"object"},"type":"array"},"name":{"description":"Name
of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
TODO: Add other useful fields. apiVersion, kind, uid?","type":"string"},"optional":{"description":"Specify
whether the ConfigMap or its keys must be defined","type":"boolean"}},"type":"object"},"name":{"description":"Volume''s
name. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"projected":{"description":"Items
for all in one resources secrets, configmaps, and downward API","properties":{"defaultMode":{"description":"Mode
bits used to set permissions on created files by default. Must be an octal value
between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both
octal and decimal values, JSON requires decimal values for mode bits. Directories
within the path are not affected by this setting. This might be in conflict
with other options that affect the file mode, like fsGroup, and the result can
be other mode bits set.","format":"int32","type":"integer"},"sources":{"description":"list
of volume projections","items":{"description":"Projection that may be projected
along with other supported volume types","properties":{"configMap":{"description":"information
about the configMap data to project","properties":{"items":{"description":"If
unspecified, each key-value pair in the Data field of the referenced ConfigMap
will be projected into the volume as a file whose name is the key and content
is the value. If specified, the listed keys will be projected into the specified
paths, and unlisted keys will not be present. If a key is specified which is
not present in the ConfigMap, the volume setup will error unless it is marked
optional. Paths must be relative and may not contain the ''..'' path or start
with ''..''.","items":{"description":"Maps a string key to a path within a volume.","properties":{"key":{"description":"The
key to project.","type":"string"},"mode":{"description":"Optional: mode bits
used to set permissions on this file. Must be an octal value between 0000 and
0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal
values, JSON requires decimal values for mode bits. If not specified, the volume
defaultMode will be used. This might be in conflict with other options that
affect the file mode, like fsGroup, and the result can be other mode bits set.","format":"int32","type":"integer"},"path":{"description":"The
relative path of the file to map the key to. May not be an absolute path. May
not contain the path element ''..''. May not start with the string ''..''.","type":"string"}},"required":["key","path"],"type":"object"},"type":"array"},"name":{"description":"Name
of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
TODO: Add other useful fields. apiVersion, kind, uid?","type":"string"},"optional":{"description":"Specify
whether the ConfigMap or its keys must be defined","type":"boolean"}},"type":"object"},"secret":{"description":"information
about the secret data to project","properties":{"items":{"description":"If unspecified,
each key-value pair in the Data field of the referenced Secret will be projected
into the volume as a file whose name is the key and content is the value. If
specified, the listed keys will be projected into the specified paths, and unlisted
keys will not be present. If a key is specified which is not present in the
Secret, the volume setup will error unless it is marked optional. Paths must
be relative and may not contain the ''..'' path or start with ''..''.","items":{"description":"Maps
a string key to a path within a volume.","properties":{"key":{"description":"The
key to project.","type":"string"},"mode":{"description":"Optional: mode bits
used to set permissions on this file. Must be an octal value between 0000 and
0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal
values, JSON requires decimal values for mode bits. If not specified, the volume
defaultMode will be used. This might be in conflict with other options that
affect the file mode, like fsGroup, and the result can be other mode bits set.","format":"int32","type":"integer"},"path":{"description":"The
relative path of the file to map the key to. May not be an absolute path. May
not contain the path element ''..''. May not start with the string ''..''.","type":"string"}},"required":["key","path"],"type":"object"},"type":"array"},"name":{"description":"Name
of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
TODO: Add other useful fields. apiVersion, kind, uid?","type":"string"},"optional":{"description":"Specify
whether the Secret or its key must be defined","type":"boolean"}},"type":"object"},"serviceAccountToken":{"description":"information
about the serviceAccountToken data to project","properties":{"audience":{"description":"Audience
is the intended audience of the token. A recipient of a token must identify
itself with an identifier specified in the audience of the token, and otherwise
should reject the token. The audience defaults to the identifier of the apiserver.","type":"string"},"expirationSeconds":{"description":"ExpirationSeconds
is the requested duration of validity of the service account token. As the token
approaches expiration, the kubelet volume plugin will proactively rotate the
service account token. The kubelet will start trying to rotate the token if
the token is older than 80 percent of its time to live or if the token is older
than 24 hours.Defaults to 1 hour and must be at least 10 minutes.","format":"int64","type":"integer"},"path":{"description":"Path
is the path relative to the mount point of the file to project the token into.","type":"string"}},"required":["path"],"type":"object"}},"type":"object"},"type":"array"}},"type":"object"},"secret":{"description":"Secret
represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret","properties":{"defaultMode":{"description":"Optional:
mode bits used to set permissions on created files by default. Must be an octal
value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts
both octal and decimal values, JSON requires decimal values for mode bits. Defaults
to 0644. Directories within the path are not affected by this setting. This
might be in conflict with other options that affect the file mode, like fsGroup,
and the result can be other mode bits set.","format":"int32","type":"integer"},"items":{"description":"If
unspecified, each key-value pair in the Data field of the referenced Secret
will be projected into the volume as a file whose name is the key and content
is the value. If specified, the listed keys will be projected into the specified
paths, and unlisted keys will not be present. If a key is specified which is
not present in the Secret, the volume setup will error unless it is marked optional.
Paths must be relative and may not contain the ''..'' path or start with ''..''.","items":{"description":"Maps
a string key to a path within a volume.","properties":{"key":{"description":"The
key to project.","type":"string"},"mode":{"description":"Optional: mode bits
used to set permissions on this file. Must be an octal value between 0000 and
0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal
values, JSON requires decimal values for mode bits. If not specified, the volume
defaultMode will be used. This might be in conflict with other options that
affect the file mode, like fsGroup, and the result can be other mode bits set.","format":"int32","type":"integer"},"path":{"description":"The
relative path of the file to map the key to. May not be an absolute path. May
not contain the path element ''..''. May not start with the string ''..''.","type":"string"}},"required":["key","path"],"type":"object"},"type":"array"},"optional":{"description":"Specify
whether the Secret or its keys must be defined","type":"boolean"},"secretName":{"description":"Name
of the secret in the pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret","type":"string"}},"type":"object"}},"required":["name"],"type":"object"},"type":"array"}},"required":["containers"],"type":"object","x-kubernetes-preserve-unknown-fields":true}},"type":"object"},"traffic":{"description":"Traffic
specifies how to distribute traffic over a collection of revisions and configurations.","items":{"description":"TrafficTarget
holds a single entry of the routing table for a Route.","properties":{"configurationName":{"description":"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.","type":"string"},"latestRevision":{"description":"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.","type":"boolean"},"percent":{"description":"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","format":"int64","type":"integer"},"revisionName":{"description":"RevisionName
of a specific revision to which to send this portion of traffic. This is mutually
exclusive with ConfigurationName.","type":"string"},"tag":{"description":"Tag
is optionally used to expose a dedicated url for referencing this target exclusively.","type":"string"},"url":{"description":"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.)","type":"string"}},"type":"object"},"type":"array"}},"type":"object"},"status":{"description":"ServiceStatus
represents the Status stanza of the Service resource.","properties":{"address":{"description":"Address
holds the information needed for a Route to be the target of an event.","properties":{"url":{"type":"string"}},"type":"object"},"annotations":{"additionalProperties":{"type":"string"},"description":"Annotations
is additional Status fields for the Resource to save some additional State as
well as convey more information to the user. This is roughly akin to Annotations
on any k8s resource, just the reconciler conveying richer information outwards.","type":"object"},"conditions":{"description":"Conditions
the latest available observations of a resource''s current state.","items":{"description":"Condition
defines a readiness condition for a Knative resource. See: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#typical-status-properties","properties":{"lastTransitionTime":{"description":"LastTransitionTime
is the last time the condition transitioned from one status to another. We use
VolatileTime in place of metav1.Time to exclude this from creating equality.Semantic
differences (all other things held constant).","format":"date-time","type":"string"},"message":{"description":"A
human readable message indicating details about the transition.","type":"string"},"reason":{"description":"The
reason for the condition''s last transition.","type":"string"},"severity":{"description":"Severity
with which to treat failures of this type of condition. When this is not specified,
it defaults to Error.","type":"string"},"status":{"description":"Status of the
condition, one of True, False, Unknown.","type":"string"},"type":{"description":"Type
of condition.","type":"string"}},"required":["status","type"],"type":"object"},"type":"array"},"latestCreatedRevisionName":{"description":"LatestCreatedRevisionName
is the last revision that was created from this Configuration. It might not
be ready yet, for that use LatestReadyRevisionName.","type":"string"},"latestReadyRevisionName":{"description":"LatestReadyRevisionName
holds the name of the latest Revision stamped out from this Configuration that
has had its \"Ready\" condition become \"True\".","type":"string"},"observedGeneration":{"description":"ObservedGeneration
is the ''Generation'' of the Service that was last processed by the controller.","format":"int64","type":"integer"},"traffic":{"description":"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.","items":{"description":"TrafficTarget
holds a single entry of the routing table for a Route.","properties":{"configurationName":{"description":"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.","type":"string"},"latestRevision":{"description":"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.","type":"boolean"},"percent":{"description":"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","format":"int64","type":"integer"},"revisionName":{"description":"RevisionName
of a specific revision to which to send this portion of traffic. This is mutually
exclusive with ConfigurationName.","type":"string"},"tag":{"description":"Tag
is optionally used to expose a dedicated url for referencing this target exclusively.","type":"string"},"url":{"description":"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.)","type":"string"}},"type":"object"},"type":"array"},"url":{"description":"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}","type":"string"}},"type":"object"}},"type":"object"}},"served":true,"storage":true,"subresources":{"status":{}}}]}}
'
creationTimestamp: '2021-08-30T18:59:46Z'
generation: 1
labels:
duck.knative.dev/addressable: 'true'
duck.knative.dev/podspecable: 'true'
knative.dev/crd-install: 'true'
serving.knative.dev/release: v0.24.0
managedFields:
- apiVersion: apiextensions.k8s.io/v1
fieldsType: FieldsV1
fieldsV1:
f:status:
f:acceptedNames:
f:categories: {}
f:kind: {}
f:listKind: {}
f:plural: {}
f:shortNames: {}
f:singular: {}
f:conditions:
k:{"type":"Established"}:
.: {}
f:lastTransitionTime: {}
f:message: {}
f:reason: {}
f:status: {}
f:type: {}
k:{"type":"NamesAccepted"}:
.: {}
f:lastTransitionTime: {}
f:message: {}
f:reason: {}
f:status: {}
f:type: {}
manager: k3s
operation: Update
time: '2021-08-30T18:59:46Z'
- apiVersion: apiextensions.k8s.io/v1
fieldsType: FieldsV1
fieldsV1:
f:metadata:
f:annotations:
.: {}
f:kubectl.kubernetes.io/last-applied-configuration: {}
f:labels:
.: {}
f:duck.knative.dev/addressable: {}
f:duck.knative.dev/podspecable: {}
f:knative.dev/crd-install: {}
f:serving.knative.dev/release: {}
f:spec:
f:conversion:
.: {}
f:strategy: {}
f:group: {}
f:names:
f:categories: {}
f:kind: {}
f:listKind: {}
f:plural: {}
f:shortNames: {}
f:singular: {}
f:scope: {}
f:versions: {}
manager: manifestival
operation: Update
time: '2021-08-30T18:59:49Z'
name: services.serving.knative.dev
resourceVersion: '5635'
uid: 3b06aef0-1db4-4396-9a2a-9292f3ca6789
spec:
conversion:
strategy: None
group: serving.knative.dev
names:
categories:
- all
- knative
- serving
kind: Service
listKind: ServiceList
plural: services
shortNames:
- kservice
- ksvc
singular: service
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .status.url
name: URL
type: string
- jsonPath: .status.latestCreatedRevisionName
name: LatestCreated
type: string
- jsonPath: .status.latestReadyRevisionName
name: LatestReady
type: string
- jsonPath: .status.conditions[?(@.type=='Ready')].status
name: Ready
type: string
- jsonPath: .status.conditions[?(@.type=='Ready')].reason
name: Reason
type: string
name: v1
schema:
openAPIV3Schema:
description: "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.\
\ \n The Service's controller will track the statuses of its owned Configuration\
\ and Route, reflecting their statuses and conditions as its own. \n See\
\ also: https://github.com/knative/serving/blob/main/docs/spec/overview.md#service"
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation
of an object. Servers should convert recognized schemas to the latest
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this
object represents. Servers may infer this from the endpoint the client
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: 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.
properties:
template:
description: Template holds the latest specification for the Revision
to be stamped out.
properties:
metadata:
properties:
annotations:
additionalProperties:
type: string
type: object
finalizers:
items:
type: string
type: array
labels:
additionalProperties:
type: string
type: object
name:
type: string
namespace:
type: string
type: object
x-kubernetes-preserve-unknown-fields: true
spec:
description: RevisionSpec holds the desired state of the Revision
(from the client).
properties:
containerConcurrency:
description: 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.
format: int64
type: integer
containers:
description: List of containers belonging to the pod. Containers
cannot currently be added or removed. There must be at least
one container in a Pod. Cannot be updated.
items:
description: A single application container that you want
to run within a pod.
properties:
args:
description: 'Arguments to the entrypoint. The docker
image''s CMD is used if this is not provided. Variable
references $(VAR_NAME) are expanded using the container''s
environment. If a variable cannot be resolved, the
reference in the input string will be unchanged. The
$(VAR_NAME) syntax can be escaped with a double $$,
ie: $$(VAR_NAME). Escaped references will never be
expanded, regardless of whether the variable exists
or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'
items:
type: string
type: array
command:
description: 'Entrypoint array. Not executed within
a shell. The docker image''s ENTRYPOINT is used if
this is not provided. Variable references $(VAR_NAME)
are expanded using the container''s environment. If
a variable cannot be resolved, the reference in the
input string will be unchanged. The $(VAR_NAME) syntax
can be escaped with a double $$, ie: $$(VAR_NAME).
Escaped references will never be expanded, regardless
of whether the variable exists or not. Cannot be updated.
More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'
items:
type: string
type: array
env:
description: List of environment variables to set in
the container. Cannot be updated.
items:
description: EnvVar represents an environment variable
present in a Container.
properties:
name:
description: Name of the environment variable.
Must be a C_IDENTIFIER.
type: string
value:
description: 'Variable references $(VAR_NAME)
are expanded using the previous defined environment
variables in the container and any service environment
variables. If a variable cannot be resolved,
the reference in the input string will be unchanged.
The $(VAR_NAME) syntax can be escaped with a
double $$, ie: $$(VAR_NAME). Escaped references
will never be expanded, regardless of whether
the variable exists or not. Defaults to "".'
type: string
valueFrom:
description: Source for the environment variable's
value. Cannot be used if value is not empty.
properties:
configMapKeyRef:
description: Selects a key of a ConfigMap.
properties:
key:
description: The key to select.
type: string
name:
description: 'Name of the referent. More
info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
TODO: Add other useful fields. apiVersion,
kind, uid?'
type: string
optional:
description: Specify whether the ConfigMap
or its key must be defined
type: boolean
required:
- key
type: object
secretKeyRef:
description: Selects a key of a secret in
the pod's namespace
properties:
key:
description: The key of the secret to
select from. Must be a valid secret
key.
type: string
name:
description: 'Name of the referent. More
info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
TODO: Add other useful fields. apiVersion,
kind, uid?'
type: string
optional:
description: Specify whether the Secret
or its key must be defined
type: boolean
required:
- key
type: object
type: object
x-kubernetes-preserve-unknown-fields: true
required:
- name
type: object
type: array
envFrom:
description: List of sources to populate environment
variables in the container. The keys defined within
a source must be a C_IDENTIFIER. All invalid keys
will be reported as an event when the container is
starting. When a key exists in multiple sources, the
value associated with the last source will take precedence.
Values defined by an Env with a duplicate key will
take precedence. Cannot be updated.
items:
description: EnvFromSource represents the source of
a set of ConfigMaps
properties:
configMapRef:
description: The ConfigMap to select from
properties:
name:
description: 'Name of the referent. More info:
https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
TODO: Add other useful fields. apiVersion,
kind, uid?'
type: string
optional:
description: Specify whether the ConfigMap
must be defined
type: boolean
type: object
prefix:
description: An optional identifier to prepend
to each key in the ConfigMap. Must be a C_IDENTIFIER.
type: string
secretRef:
description: The Secret to select from
properties:
name:
description: 'Name of the referent. More info:
https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
TODO: Add other useful fields. apiVersion,
kind, uid?'
type: string
optional:
description: Specify whether the Secret must
be defined
type: boolean
type: object
type: object
type: array
image:
description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images
This field is optional to allow higher level config
management to default or override container images
in workload controllers like Deployments and StatefulSets.'
type: string
imagePullPolicy:
description: 'Image pull policy. One of Always, Never,
IfNotPresent. Defaults to Always if :latest tag is
specified, or IfNotPresent otherwise. Cannot be updated.
More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'
type: string
livenessProbe:
description: 'Periodic probe of container liveness.
Container will be restarted if the probe fails. Cannot
be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
properties:
exec:
description: One and only one of the following should
be specified. Exec specifies the action to take.
properties:
command:
description: Command is the command line to
execute inside the container, the working
directory for the command is root ('/') in
the container's filesystem. The command is
simply exec'd, it is not run inside a shell,
so traditional shell instructions ('|', etc)
won't work. To use a shell, you need to explicitly
call out to that shell. Exit status of 0 is
treated as live/healthy and non-zero is unhealthy.
items:
type: string
type: array
type: object
failureThreshold:
description: Minimum consecutive failures for the
probe to be considered failed after having succeeded.
Defaults to 3. Minimum value is 1.
format: int32
type: integer
httpGet:
description: HTTPGet specifies the http request
to perform.
properties:
host:
description: Host name to connect to, defaults
to the pod IP. You probably want to set "Host"
in httpHeaders instead.
type: string
httpHeaders:
description: Custom headers to set in the request.
HTTP allows repeated headers.
items:
description: HTTPHeader describes a custom
header to be used in HTTP probes
properties:
name:
description: The header field name
type: string
value:
description: The header field value
type: string
required:
- name
- value
type: object
type: array
path:
description: Path to access on the HTTP server.
type: string
scheme:
description: Scheme to use for connecting to
the host. Defaults to HTTP.
type: string
type: object
x-kubernetes-preserve-unknown-fields: true
initialDelaySeconds:
description: 'Number of seconds after the container
has started before liveness probes are initiated.
More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
format: int32
type: integer
periodSeconds:
description: How often (in seconds) to perform the
probe.
format: int32
type: integer
successThreshold:
description: Minimum consecutive successes for the
probe to be considered successful after having
failed. Defaults to 1. Must be 1 for liveness
and startup. Minimum value is 1.
format: int32
type: integer
tcpSocket:
description: 'TCPSocket specifies an action involving
a TCP port. TCP hooks not yet supported TODO:
implement a realistic TCP lifecycle hook'
properties:
host:
description: 'Optional: Host name to connect
to, defaults to the pod IP.'
type: string
type: object
x-kubernetes-preserve-unknown-fields: true
timeoutSeconds:
description: 'Number of seconds after which the
probe times out. Defaults to 1 second. Minimum
value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
format: int32
type: integer
type: object
name:
description: Name of the container specified as a DNS_LABEL.
Each container in a pod must have a unique name (DNS_LABEL).
Cannot be updated.
type: string
ports:
description: List of ports to expose from the container.
Exposing a port here gives the system additional information
about the network connections a container uses, but
is primarily informational. Not specifying a port
here DOES NOT prevent that port from being exposed.
Any port which is listening on the default "0.0.0.0"
address inside a container will be accessible from
the network. Cannot be updated.
items:
description: ContainerPort represents a network port
in a single container.
properties:
containerPort:
description: Number of port to expose on the pod's
IP address. This must be a valid port number,
0 < x < 65536.
format: int32
type: integer
name:
description: If specified, this must be an IANA_SVC_NAME
and unique within the pod. Each named port in
a pod must have a unique name. Name for the
port that can be referred to by services.
type: string
protocol:
default: TCP
description: Protocol for port. Must be UDP, TCP,
or SCTP. Defaults to "TCP".
type: string
required:
- containerPort
type: object
x-kubernetes-preserve-unknown-fields: true
type: array
x-kubernetes-list-map-keys:
- containerPort
- protocol
x-kubernetes-list-type: map
readinessProbe:
description: 'Periodic probe of container service readiness.
Container will be removed from service endpoints if
the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
properties:
exec:
description: One and only one of the following should
be specified. Exec specifies the action to take.
properties:
command:
description: Command is the command line to
execute inside the container, the working
directory for the command is root ('/') in
the container's filesystem. The command is
simply exec'd, it is not run inside a shell,
so traditional shell instructions ('|', etc)
won't work. To use a shell, you need to explicitly
call out to that shell. Exit status of 0 is
treated as live/healthy and non-zero is unhealthy.
items:
type: string
type: array
type: object
failureThreshold:
description: Minimum consecutive failures for the
probe to be considered failed after having succeeded.
Defaults to 3. Minimum value is 1.
format: int32
type: integer
httpGet:
description: HTTPGet specifies the http request
to perform.
properties:
host:
description: Host name to connect to, defaults
to the pod IP. You probably want to set "Host"
in httpHeaders instead.
type: string
httpHeaders:
description: Custom headers to set in the request.
HTTP allows repeated headers.
items:
description: HTTPHeader describes a custom
header to be used in HTTP probes
properties:
name:
description: The header field name
type: string
value:
description: The header field value
type: string
required:
- name
- value
type: object
type: array
path:
description: Path to access on the HTTP server.
type: string
scheme:
description: Scheme to use for connecting to
the host. Defaults to HTTP.
type: string
type: object
x-kubernetes-preserve-unknown-fields: true
initialDelaySeconds:
description: 'Number of seconds after the container
has started before liveness probes are initiated.
More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
format: int32
type: integer
periodSeconds:
description: How often (in seconds) to perform the
probe.
format: int32
type: integer
successThreshold:
description: Minimum consecutive successes for the
probe to be considered successful after having
failed. Defaults to 1. Must be 1 for liveness
and startup. Minimum value is 1.
format: int32
type: integer
tcpSocket:
description: 'TCPSocket specifies an action involving
a TCP port. TCP hooks not yet supported TODO:
implement a realistic TCP lifecycle hook'
properties:
host:
description: 'Optional: Host name to connect
to, defaults to the pod IP.'
type: string
type: object
x-kubernetes-preserve-unknown-fields: true
timeoutSeconds:
description: 'Number of seconds after which the
probe times out. Defaults to 1 second. Minimum
value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
format: int32
type: integer
type: object
resources:
description: 'Compute Resources required by this container.
Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
properties:
limits:
additionalProperties:
anyOf:
- type: integer
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
description: 'Limits describes the maximum amount
of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
type: object
requests:
additionalProperties:
anyOf:
- type: integer
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
description: 'Requests describes the minimum amount
of compute resources required. If Requests is
omitted for a container, it defaults to Limits
if that is explicitly specified, otherwise to
an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
type: object
type: object
securityContext:
description: 'Security options the pod should run with.
More info: https://kubernetes.io/docs/concepts/policy/security-context/
More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/'
properties:
capabilities:
description: The capabilities to add/drop when running
containers. Defaults to the default set of capabilities
granted by the container runtime.
properties:
drop:
description: Removed capabilities
items:
description: Capability represent POSIX capabilities
type
type: string
type: array
type: object
x-kubernetes-preserve-unknown-fields: true
readOnlyRootFilesystem:
description: Whether this container has a read-only
root filesystem. Default is false.
type: boolean
runAsUser:
description: The UID to run the entrypoint of the
container process. Defaults to user specified
in image metadata if unspecified. May also be
set in PodSecurityContext. If set in both SecurityContext
and PodSecurityContext, the value specified in
SecurityContext takes precedence.
format: int64
type: integer
type: object
x-kubernetes-preserve-unknown-fields: true
terminationMessagePath:
description: 'Optional: Path at which the file to which
the container''s termination message will be written
is mounted into the container''s filesystem. Message
written is intended to be brief final status, such
as an assertion failure message. Will be truncated
by the node if greater than 4096 bytes. The total
message length across all containers will be limited
to 12kb. Defaults to /dev/termination-log. Cannot
be updated.'
type: string
terminationMessagePolicy:
description: Indicate how the termination message should
be populated. File will use the contents of terminationMessagePath
to populate the container status message on both success
and failure. FallbackToLogsOnError will use the last
chunk of container log output if the termination message
file is empty and the container exited with an error.
The log output is limited to 2048 bytes or 80 lines,
whichever is smaller. Defaults to File. Cannot be
updated.
type: string
volumeMounts:
description: Pod volumes to mount into the container's
filesystem. Cannot be updated.
items:
description: VolumeMount describes a mounting of a
Volume within a container.
properties:
mountPath:
description: Path within the container at which
the volume should be mounted. Must not contain
':'.
type: string
name:
description: This must match the Name of a Volume.
type: string
readOnly:
description: Mounted read-only if true, read-write
otherwise (false or unspecified). Defaults to
false.
type: boolean
subPath:
description: Path within the volume from which
the container's volume should be mounted. Defaults
to "" (volume's root).
type: string
required:
- mountPath
- name
type: object
type: array
workingDir:
description: Container's working directory. If not specified,
the container runtime's default will be used, which
might be configured in the container image. Cannot
be updated.
type: string
type: object
x-kubernetes-preserve-unknown-fields: true
type: array
enableServiceLinks:
description: 'EnableServiceLinks indicates whether information
about services should be injected into pod''s environment
variables, matching the syntax of Docker links. Optional:
Defaults to true.'
type: boolean
imagePullSecrets:
description: 'ImagePullSecrets is an optional list of references
to secrets in the same namespace to use for pulling any
of the images used by this PodSpec. If specified, these
secrets will be passed to individual puller implementations
for them to use. For example, in the case of docker, only
DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod'
items:
description: LocalObjectReference contains enough information
to let you locate the referenced object inside the same
namespace.
properties:
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
TODO: Add other useful fields. apiVersion, kind, uid?'
type: string
type: object
type: array
serviceAccountName:
description: 'ServiceAccountName is the name of the ServiceAccount
to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/'
type: string
timeoutSeconds:
description: TimeoutSeconds is the maximum duration in seconds
that the request routing layer will wait for a request delivered
to a container to begin replying (send network traffic).
If unspecified, a system default will be provided.
format: int64
type: integer
volumes:
description: 'List of volumes that can be mounted by containers
belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes'
items:
description: Volume represents a named volume in a pod that
may be accessed by any container in the pod.
properties:
configMap:
description: ConfigMap represents a configMap that should
populate this volume
properties:
defaultMode:
description: 'Optional: mode bits used to set permissions
on created files by default. Must be an octal
value between 0000 and 0777 or a decimal value
between 0 and 511. YAML accepts both octal and
decimal values, JSON requires decimal values for
mode bits. Defaults to 0644. Directories within
the path are not affected by this setting. This
might be in conflict with other options that affect
the file mode, like fsGroup, and the result can
be other mode bits set.'
format: int32
type: integer
items:
description: If unspecified, each key-value pair
in the Data field of the referenced ConfigMap
will be projected into the volume as a file whose
name is the key and content is the value. If specified,
the listed keys will be projected into the specified
paths, and unlisted keys will not be present.
If a key is specified which is not present in
the ConfigMap, the volume setup will error unless
it is marked optional. Paths must be relative
and may not contain the '..' path or start with
'..'.
items:
description: Maps a string key to a path within
a volume.
properties:
key:
description: The key to project.
type: string
mode:
description: 'Optional: mode bits used to
set permissions on this file. Must be an
octal value between 0000 and 0777 or a decimal
value between 0 and 511. YAML accepts both
octal and decimal values, JSON requires
decimal values for mode bits. If not specified,
the volume defaultMode will be used. This
might be in conflict with other options
that affect the file mode, like fsGroup,
and the result can be other mode bits set.'
format: int32
type: integer
path:
description: The relative path of the file
to map the key to. May not be an absolute
path. May not contain the path element '..'.
May not start with the string '..'.
type: string
required:
- key
- path
type: object
type: array
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
TODO: Add other useful fields. apiVersion, kind,
uid?'
type: string
optional:
description: Specify whether the ConfigMap or its
keys must be defined
type: boolean
type: object
name:
description: 'Volume''s name. Must be a DNS_LABEL and
unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
type: string
projected:
description: Items for all in one resources secrets,
configmaps, and downward API
properties:
defaultMode:
description: Mode bits used to set permissions on
created files by default. Must be an octal value
between 0000 and 0777 or a decimal value between
0 and 511. YAML accepts both octal and decimal
values, JSON requires decimal values for mode
bits. Directories within the path are not affected
by this setting. This might be in conflict with
other options that affect the file mode, like
fsGroup, and the result can be other mode bits
set.
format: int32
type: integer
sources:
description: list of volume projections
items:
description: Projection that may be projected
along with other supported volume types
properties:
configMap:
description: information about the configMap
data to project
properties:
items:
description: If unspecified, each key-value
pair in the Data field of the referenced
ConfigMap will be projected into the
volume as a file whose name is the key
and content is the value. If specified,
the listed keys will be projected into
the specified paths, and unlisted keys
will not be present. If a key is specified
which is not present in the ConfigMap,
the volume setup will error unless it
is marked optional. Paths must be relative
and may not contain the '..' path or
start with '..'.
items:
description: Maps a string key to a
path within a volume.
properties:
key:
description: The key to project.
type: string
mode:
description: 'Optional: mode bits
used to set permissions on this
file. Must be an octal value between
0000 and 0777 or a decimal value
between 0 and 511. YAML accepts
both octal and decimal values,
JSON requires decimal values for
mode bits. If not specified, the
volume defaultMode will be used.
This might be in conflict with
other options that affect the
file mode, like fsGroup, and the
result can be other mode bits
set.'
format: int32
type: integer
path:
description: The relative path of
the file to map the key to. May
not be an absolute path. May not
contain the path element '..'.
May not start with the string
'..'.
type: string
required:
- key
- path
type: object
type: array
name:
description: 'Name of the referent. More
info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
TODO: Add other useful fields. apiVersion,
kind, uid?'
type: string
optional:
description: Specify whether the ConfigMap
or its keys must be defined
type: boolean
type: object
secret:
description: information about the secret
data to project
properties:
items:
description: If unspecified, each key-value
pair in the Data field of the referenced
Secret will be projected into the volume
as a file whose name is the key and
content is the value. If specified,
the listed keys will be projected into
the specified paths, and unlisted keys
will not be present. If a key is specified
which is not present in the Secret,
the volume setup will error unless it
is marked optional. Paths must be relative
and may not contain the '..' path or
start with '..'.
items:
description: Maps a string key to a
path within a volume.
properties:
key:
description: The key to project.
type: string
mode:
description: 'Optional: mode bits
used to set permissions on this
file. Must be an octal value between
0000 and 0777 or a decimal value
between 0 and 511. YAML accepts
both octal and decimal values,
JSON requires decimal values for
mode bits. If not specified, the
volume defaultMode will be used.
This might be in conflict with
other options that affect the
file mode, like fsGroup, and the
result can be other mode bits
set.'
format: int32
type: integer
path:
description: The relative path of
the file to map the key to. May
not be an absolute path. May not
contain the path element '..'.
May not start with the string
'..'.
type: string
required:
- key
- path
type: object
type: array
name:
description: 'Name of the referent. More
info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
TODO: Add other useful fields. apiVersion,
kind, uid?'
type: string
optional:
description: Specify whether the Secret
or its key must be defined
type: boolean
type: object
serviceAccountToken:
description: information about the serviceAccountToken
data to project
properties:
audience:
description: Audience is the intended
audience of the token. A recipient of
a token must identify itself with an
identifier specified in the audience
of the token, and otherwise should reject
the token. The audience defaults to
the identifier of the apiserver.
type: string
expirationSeconds:
description: ExpirationSeconds is the
requested duration of validity of the
service account token. As the token
approaches expiration, the kubelet volume
plugin will proactively rotate the service
account token. The kubelet will start
trying to rotate the token if the token
is older than 80 percent of its time
to live or if the token is older than
24 hours.Defaults to 1 hour and must
be at least 10 minutes.
format: int64
type: integer
path:
description: Path is the path relative
to the mount point of the file to project
the token into.
type: string
required:
- path
type: object
type: object
type: array
type: object
secret:
description: 'Secret represents a secret that should
populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'
properties:
defaultMode:
description: 'Optional: mode bits used to set permissions
on created files by default. Must be an octal
value between 0000 and 0777 or a decimal value
between 0 and 511. YAML accepts both octal and
decimal values, JSON requires decimal values for
mode bits. Defaults to 0644. Directories within
the path are not affected by this setting. This
might be in conflict with other options that affect
the file mode, like fsGroup, and the result can
be other mode bits set.'
format: int32
type: integer
items:
description: If unspecified, each key-value pair
in the Data field of the referenced Secret will
be projected into the volume as a file whose name
is the key and content is the value. If specified,
the listed keys will be projected into the specified
paths, and unlisted keys will not be present.
If a key is specified which is not present in
the Secret, the volume setup will error unless
it is marked optional. Paths must be relative
and may not contain the '..' path or start with
'..'.
items:
description: Maps a string key to a path within
a volume.
properties:
key:
description: The key to project.
type: string
mode:
description: 'Optional: mode bits used to
set permissions on this file. Must be an
octal value between 0000 and 0777 or a decimal
value between 0 and 511. YAML accepts both
octal and decimal values, JSON requires
decimal values for mode bits. If not specified,
the volume defaultMode will be used. This
might be in conflict with other options
that affect the file mode, like fsGroup,
and the result can be other mode bits set.'
format: int32
type: integer
path:
description: The relative path of the file
to map the key to. May not be an absolute
path. May not contain the path element '..'.
May not start with the string '..'.
type: string
required:
- key
- path
type: object
type: array
optional:
description: Specify whether the Secret or its keys
must be defined
type: boolean
secretName:
description: 'Name of the secret in the pod''s namespace
to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'
type: string
type: object
required:
- name
type: object
type: array
required:
- containers
type: object
x-kubernetes-preserve-unknown-fields: true
type: object
traffic:
description: Traffic specifies how to distribute traffic over a collection
of revisions and configurations.
items:
description: TrafficTarget holds a single entry of the routing table
for a Route.
properties:
configurationName:
description: 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.
type: string
latestRevision:
description: 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.
type: boolean
percent:
description: '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'
format: int64
type: integer
revisionName:
description: RevisionName of a specific revision to which to
send this portion of traffic. This is mutually exclusive
with ConfigurationName.
type: string
tag:
description: Tag is optionally used to expose a dedicated url
for referencing this target exclusively.
type: string
url:
description: 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.)
type: string
type: object
type: array
type: object
status:
description: ServiceStatus represents the Status stanza of the Service
resource.
properties:
address:
description: Address holds the information needed for a Route to be
the target of an event.
properties:
url:
type: string
type: object
annotations:
additionalProperties:
type: string
description: Annotations is additional Status fields for the Resource
to save some additional State as well as convey more information
to the user. This is roughly akin to Annotations on any k8s resource,
just the reconciler conveying richer information outwards.
type: object
conditions:
description: Conditions the latest available observations of a resource's
current state.
items:
description: 'Condition defines a readiness condition for a Knative
resource. See: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#typical-status-properties'
properties:
lastTransitionTime:
description: LastTransitionTime is the last time the condition
transitioned from one status to another. We use VolatileTime
in place of metav1.Time to exclude this from creating equality.Semantic
differences (all other things held constant).
format: date-time
type: string
message:
description: A human readable message indicating details about
the transition.
type: string
reason:
description: The reason for the condition's last transition.
type: string
severity:
description: Severity with which to treat failures of this type
of condition. When this is not specified, it defaults to Error.
type: string
status:
description: Status of the condition, one of True, False, Unknown.
type: string
type:
description: Type of condition.
type: string
required:
- status
- type
type: object
type: array
latestCreatedRevisionName:
description: LatestCreatedRevisionName is the last revision that was
created from this Configuration. It might not be ready yet, for
that use LatestReadyRevisionName.
type: string
latestReadyRevisionName:
description: LatestReadyRevisionName holds the name of the latest
Revision stamped out from this Configuration that has had its "Ready"
condition become "True".
type: string
observedGeneration:
description: ObservedGeneration is the 'Generation' of the Service
that was last processed by the controller.
format: int64
type: integer
traffic:
description: 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.
items:
description: TrafficTarget holds a single entry of the routing table
for a Route.
properties:
configurationName:
description: 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.
type: string
latestRevision:
description: 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.
type: boolean
percent:
description: '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'
format: int64
type: integer
revisionName:
description: RevisionName of a specific revision to which to
send this portion of traffic. This is mutually exclusive
with ConfigurationName.
type: string
tag:
description: Tag is optionally used to expose a dedicated url
for referencing this target exclusively.
type: string
url:
description: 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.)
type: string
type: object
type: array
url:
description: 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}
type: string
type: object
type: object
served: true
storage: true
subresources:
status: {}
status:
acceptedNames:
categories:
- all
- knative
- serving
kind: Service
listKind: ServiceList
plural: services
shortNames:
- kservice
- ksvc
singular: service
conditions:
- lastTransitionTime: '2021-08-30T18:59:46Z'
message: no conflicts found
reason: NoConflicts
status: 'True'
type: NamesAccepted
- lastTransitionTime: '2021-08-30T18:59:46Z'
message: the initial names have been accepted
reason: InitialNamesAccepted
status: 'True'
type: Established
storedVersions:
- v1