# Copyright 2021 The Knative Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: knativeservings.operator.knative.dev
  labels:
    operator.knative.dev/release: "v1.2.2"
    app.kubernetes.io/version: "v1.2.2"
    app.kubernetes.io/part-of: knative-operator
spec:
  group: operator.knative.dev
  versions:
    - name: v1alpha1
      served: true
      storage: true
      subresources:
        status: {}
      schema:
        openAPIV3Schema:
          description: Schema for the knativeservings API
          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/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/api-conventions.md#types-kinds'
              type: string
            metadata:
              type: object
            spec:
              description: Spec defines the desired state of KnativeServing
              properties:
                additionalManifests:
                  description: A list of the additional serving manifests, which will
                    be installed by the operator
                  items:
                    properties:
                      URL:
                        description: The link of the additional manifest URL
                        type: string
                    type: object
                  type: array
                cluster-local-gateway:
                  description: A means to override the cluster-local-gateway. This field
                    is deprecated. Use `spec.ingres.istio.knative-local-gateway`
                  properties:
                    selector:
                      additionalProperties:
                        type: string
                      description: The selector for the ingress-gateway.
                      type: object
                  type: object
                config:
                  additionalProperties:
                    additionalProperties:
                      type: string
                    type: object
                  description: A means to override the corresponding entries in the
                    upstream configmaps
                  type: object
                controller-custom-certs:
                  description: Enabling the controller to trust registries with self-signed
                    certificates
                  properties:
                    name:
                      description: The name of the ConfigMap or Secret
                      type: string
                    type:
                      description: One of ConfigMap or Secret
                      enum:
                        - ConfigMap
                        - Secret
                        - ""
                      type: string
                  type: object
                high-availability:
                  description: Allows specification of HA control plane
                  properties:
                    replicas:
                      description: The number of replicas that HA parts of the control
                        plane will be scaled to
                      minimum: 1
                      type: integer
                  type: object
                deployments:
                  description: A mapping of deployment name to override
                  type: array
                  items:
                    type: object
                    properties:
                      name:
                        description: The name of the deployment
                        type: string
                      labels:
                        additionalProperties:
                          type: string
                        description: Labels overrides labels for the deployment and its template.
                        type: object
                      annotations:
                        additionalProperties:
                          type: string
                        description: Annotations overrides labels for the deployment and its template.
                        type: object
                      replicas:
                        description: The number of replicas that HA parts of the control plane will be scaled to
                        type: integer
                        minimum: 1
                      nodeSelector:
                        additionalProperties:
                          type: string
                        description: NodeSelector overrides nodeSelector for the deployment.
                        type: object
                      tolerations:
                        description: If specified, the pod's tolerations.
                        items:
                          description: The pod this Toleration is attached to tolerates any
                            taint that matches the triple <key,value,effect> using the matching
                            operator <operator>.
                          properties:
                            effect:
                              description: Effect indicates the taint effect to match. Empty
                                means match all taint effects. When specified, allowed values
                                are NoSchedule, PreferNoSchedule and NoExecute.
                              type: string
                            key:
                              description: Key is the taint key that the toleration applies
                                to. Empty means match all taint keys. If the key is empty, operator
                                must be Exists; this combination means to match all values and
                                all keys.
                              type: string
                            operator:
                              description: Operator represents a key's relationship to the value.
                                Valid operators are Exists and Equal. Defaults to Equal. Exists
                                is equivalent to wildcard for value, so that a pod can tolerate
                                all taints of a particular category.
                              type: string
                            tolerationSeconds:
                              description: TolerationSeconds represents the period of time the
                                toleration (which must be of effect NoExecute, otherwise this
                                field is ignored) tolerates the taint. By default, it is not
                                set, which means tolerate the taint forever (do not evict).
                                Zero and negative values will be treated as 0 (evict immediately)
                                by the system.
                              format: int64
                              type: integer
                            value:
                              description: Value is the taint value the toleration matches to.
                                If the operator is Exists, the value should be empty, otherwise
                                just a regular string.
                              type: string
                          type: object
                        type: array
                      affinity:
                        description: If specified, the pod's scheduling constraints.
                        properties:
                          nodeAffinity:
                            description: Describes node affinity scheduling rules for the pod.
                            properties:
                              preferredDuringSchedulingIgnoredDuringExecution:
                                description: The scheduler will prefer to schedule pods to nodes
                                  that satisfy the affinity expressions specified by this field,
                                  but it may choose a node that violates one or more of the
                                  expressions. The node that is most preferred is the one with
                                  the greatest sum of weights, i.e. for each node that meets
                                  all of the scheduling requirements (resource request, requiredDuringScheduling
                                  affinity expressions, etc.), compute a sum by iterating through
                                  the elements of this field and adding "weight" to the sum
                                  if the node matches the corresponding matchExpressions; the
                                  node(s) with the highest sum are the most preferred.
                                items:
                                  description: An empty preferred scheduling term matches all
                                    objects with implicit weight 0 (i.e. it's a no-op). A null
                                    preferred scheduling term matches no objects (i.e. is also
                                    a no-op).
                                  properties:
                                    preference:
                                      description: A node selector term, associated with the
                                        corresponding weight.
                                      properties:
                                        matchExpressions:
                                          description: A list of node selector requirements
                                            by node's labels.
                                          items:
                                            description: A node selector requirement is a selector
                                              that contains values, a key, and an operator that
                                              relates the key and values.
                                            properties:
                                              key:
                                                description: The label key that the selector
                                                  applies to.
                                                type: string
                                              operator:
                                                description: Represents a key's relationship
                                                  to a set of values. Valid operators are In,
                                                  NotIn, Exists, DoesNotExist. Gt, and Lt.
                                                type: string
                                              values:
                                                description: An array of string values. If the
                                                  operator is In or NotIn, the values array
                                                  must be non-empty. If the operator is Exists
                                                  or DoesNotExist, the values array must be
                                                  empty. If the operator is Gt or Lt, the values
                                                  array must have a single element, which will
                                                  be interpreted as an integer. This array is
                                                  replaced during a strategic merge patch.
                                                items:
                                                  type: string
                                                type: array
                                            required:
                                              - key
                                              - operator
                                            type: object
                                          type: array
                                        matchFields:
                                          description: A list of node selector requirements
                                            by node's fields.
                                          items:
                                            description: A node selector requirement is a selector
                                              that contains values, a key, and an operator that
                                              relates the key and values.
                                            properties:
                                              key:
                                                description: The label key that the selector
                                                  applies to.
                                                type: string
                                              operator:
                                                description: Represents a key's relationship
                                                  to a set of values. Valid operators are In,
                                                  NotIn, Exists, DoesNotExist. Gt, and Lt.
                                                type: string
                                              values:
                                                description: An array of string values. If the
                                                  operator is In or NotIn, the values array
                                                  must be non-empty. If the operator is Exists
                                                  or DoesNotExist, the values array must be
                                                  empty. If the operator is Gt or Lt, the values
                                                  array must have a single element, which will
                                                  be interpreted as an integer. This array is
                                                  replaced during a strategic merge patch.
                                                items:
                                                  type: string
                                                type: array
                                            required:
                                              - key
                                              - operator
                                            type: object
                                          type: array
                                      type: object
                                    weight:
                                      description: Weight associated with matching the corresponding
                                        nodeSelectorTerm, in the range 1-100.
                                      format: int32
                                      type: integer
                                  required:
                                    - preference
                                    - weight
                                  type: object
                                type: array
                              requiredDuringSchedulingIgnoredDuringExecution:
                                description: If the affinity requirements specified by this
                                  field are not met at scheduling time, the pod will not be
                                  scheduled onto the node. If the affinity requirements specified
                                  by this field cease to be met at some point during pod execution
                                  (e.g. due to an update), the system may or may not try to
                                  eventually evict the pod from its node.
                                properties:
                                  nodeSelectorTerms:
                                    description: Required. A list of node selector terms. The
                                      terms are ORed.
                                    items:
                                      description: A null or empty node selector term matches
                                        no objects. The requirements of them are ANDed. The
                                        TopologySelectorTerm type implements a subset of the
                                        NodeSelectorTerm.
                                      properties:
                                        matchExpressions:
                                          description: A list of node selector requirements
                                            by node's labels.
                                          items:
                                            description: A node selector requirement is a selector
                                              that contains values, a key, and an operator that
                                              relates the key and values.
                                            properties:
                                              key:
                                                description: The label key that the selector
                                                  applies to.
                                                type: string
                                              operator:
                                                description: Represents a key's relationship
                                                  to a set of values. Valid operators are In,
                                                  NotIn, Exists, DoesNotExist. Gt, and Lt.
                                                type: string
                                              values:
                                                description: An array of string values. If the
                                                  operator is In or NotIn, the values array
                                                  must be non-empty. If the operator is Exists
                                                  or DoesNotExist, the values array must be
                                                  empty. If the operator is Gt or Lt, the values
                                                  array must have a single element, which will
                                                  be interpreted as an integer. This array is
                                                  replaced during a strategic merge patch.
                                                items:
                                                  type: string
                                                type: array
                                            required:
                                              - key
                                              - operator
                                            type: object
                                          type: array
                                        matchFields:
                                          description: A list of node selector requirements
                                            by node's fields.
                                          items:
                                            description: A node selector requirement is a selector
                                              that contains values, a key, and an operator that
                                              relates the key and values.
                                            properties:
                                              key:
                                                description: The label key that the selector
                                                  applies to.
                                                type: string
                                              operator:
                                                description: Represents a key's relationship
                                                  to a set of values. Valid operators are In,
                                                  NotIn, Exists, DoesNotExist. Gt, and Lt.
                                                type: string
                                              values:
                                                description: An array of string values. If the
                                                  operator is In or NotIn, the values array
                                                  must be non-empty. If the operator is Exists
                                                  or DoesNotExist, the values array must be
                                                  empty. If the operator is Gt or Lt, the values
                                                  array must have a single element, which will
                                                  be interpreted as an integer. This array is
                                                  replaced during a strategic merge patch.
                                                items:
                                                  type: string
                                                type: array
                                            required:
                                              - key
                                              - operator
                                            type: object
                                          type: array
                                      type: object
                                    type: array
                                required:
                                  - nodeSelectorTerms
                                type: object
                            type: object
                          podAffinity:
                            description: Describes pod affinity scheduling rules (e.g. co-locate
                              this pod in the same node, zone, etc. as some other pod(s)).
                            properties:
                              preferredDuringSchedulingIgnoredDuringExecution:
                                description: The scheduler will prefer to schedule pods to nodes
                                  that satisfy the affinity expressions specified by this field,
                                  but it may choose a node that violates one or more of the
                                  expressions. The node that is most preferred is the one with
                                  the greatest sum of weights, i.e. for each node that meets
                                  all of the scheduling requirements (resource request, requiredDuringScheduling
                                  affinity expressions, etc.), compute a sum by iterating through
                                  the elements of this field and adding "weight" to the sum
                                  if the node has pods which matches the corresponding podAffinityTerm;
                                  the node(s) with the highest sum are the most preferred.
                                items:
                                  description: The weights of all of the matched WeightedPodAffinityTerm
                                    fields are added per-node to find the most preferred node(s)
                                  properties:
                                    podAffinityTerm:
                                      description: Required. A pod affinity term, associated
                                        with the corresponding weight.
                                      properties:
                                        labelSelector:
                                          description: A label query over a set of resources,
                                            in this case pods.
                                          properties:
                                            matchExpressions:
                                              description: matchExpressions is a list of label
                                                selector requirements. The requirements are
                                                ANDed.
                                              items:
                                                description: A label selector requirement is
                                                  a selector that contains values, a key, and
                                                  an operator that relates the key and values.
                                                properties:
                                                  key:
                                                    description: key is the label key that the
                                                      selector applies to.
                                                    type: string
                                                  operator:
                                                    description: operator represents a key's
                                                      relationship to a set of values. Valid
                                                      operators are In, NotIn, Exists and DoesNotExist.
                                                    type: string
                                                  values:
                                                    description: values is an array of string
                                                      values. If the operator is In or NotIn,
                                                      the values array must be non-empty. If
                                                      the operator is Exists or DoesNotExist,
                                                      the values array must be empty. This array
                                                      is replaced during a strategic merge patch.
                                                    items:
                                                      type: string
                                                    type: array
                                                required:
                                                  - key
                                                  - operator
                                                type: object
                                              type: array
                                            matchLabels:
                                              additionalProperties:
                                                type: string
                                              description: matchLabels is a map of {key,value}
                                                pairs. A single {key,value} in the matchLabels
                                                map is equivalent to an element of matchExpressions,
                                                whose key field is "key", the operator is "In",
                                                and the values array contains only "value".
                                                The requirements are ANDed.
                                              type: object
                                          type: object
                                        namespaces:
                                          description: namespaces specifies which namespaces
                                            the labelSelector applies to (matches against);
                                            null or empty list means "this pod's namespace"
                                          items:
                                            type: string
                                          type: array
                                        topologyKey:
                                          description: This pod should be co-located (affinity)
                                            or not co-located (anti-affinity) with the pods
                                            matching the labelSelector in the specified namespaces,
                                            where co-located is defined as running on a node
                                            whose value of the label with key topologyKey matches
                                            that of any node on which any of the selected pods
                                            is running. Empty topologyKey is not allowed.
                                          type: string
                                      required:
                                        - topologyKey
                                      type: object
                                    weight:
                                      description: weight associated with matching the corresponding
                                        podAffinityTerm, in the range 1-100.
                                      format: int32
                                      type: integer
                                  required:
                                    - podAffinityTerm
                                    - weight
                                  type: object
                                type: array
                              requiredDuringSchedulingIgnoredDuringExecution:
                                description: If the affinity requirements specified by this
                                  field are not met at scheduling time, the pod will not be
                                  scheduled onto the node. If the affinity requirements specified
                                  by this field cease to be met at some point during pod execution
                                  (e.g. due to a pod label update), the system may or may not
                                  try to eventually evict the pod from its node. When there
                                  are multiple elements, the lists of nodes corresponding to
                                  each podAffinityTerm are intersected, i.e. all terms must
                                  be satisfied.
                                items:
                                  description: Defines a set of pods (namely those matching
                                    the labelSelector relative to the given namespace(s)) that
                                    this pod should be co-located (affinity) or not co-located
                                    (anti-affinity) with, where co-located is defined as running
                                    on a node whose value of the label with key <topologyKey>
                                    matches that of any node on which a pod of the set of pods
                                    is running
                                  properties:
                                    labelSelector:
                                      description: A label query over a set of resources, in
                                        this case pods.
                                      properties:
                                        matchExpressions:
                                          description: matchExpressions is a list of label selector
                                            requirements. The requirements are ANDed.
                                          items:
                                            description: A label selector requirement is a selector
                                              that contains values, a key, and an operator that
                                              relates the key and values.
                                            properties:
                                              key:
                                                description: key is the label key that the selector
                                                  applies to.
                                                type: string
                                              operator:
                                                description: operator represents a key's relationship
                                                  to a set of values. Valid operators are In,
                                                  NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: values is an array of string values.
                                                  If the operator is In or NotIn, the values
                                                  array must be non-empty. If the operator is
                                                  Exists or DoesNotExist, the values array must
                                                  be empty. This array is replaced during a
                                                  strategic merge patch.
                                                items:
                                                  type: string
                                                type: array
                                            required:
                                              - key
                                              - operator
                                            type: object
                                          type: array
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: matchLabels is a map of {key,value} pairs.
                                            A single {key,value} in the matchLabels map is equivalent
                                            to an element of matchExpressions, whose key field
                                            is "key", the operator is "In", and the values array
                                            contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                    namespaces:
                                      description: namespaces specifies which namespaces the
                                        labelSelector applies to (matches against); null or
                                        empty list means "this pod's namespace"
                                      items:
                                        type: string
                                      type: array
                                    topologyKey:
                                      description: This pod should be co-located (affinity)
                                        or not co-located (anti-affinity) with the pods matching
                                        the labelSelector in the specified namespaces, where
                                        co-located is defined as running on a node whose value
                                        of the label with key topologyKey matches that of any
                                        node on which any of the selected pods is running. Empty
                                        topologyKey is not allowed.
                                      type: string
                                  required:
                                    - topologyKey
                                  type: object
                                type: array
                            type: object
                          podAntiAffinity:
                            description: Describes pod anti-affinity scheduling rules (e.g.
                              avoid putting this pod in the same node, zone, etc. as some other
                              pod(s)).
                            properties:
                              preferredDuringSchedulingIgnoredDuringExecution:
                                description: The scheduler will prefer to schedule pods to nodes
                                  that satisfy the anti-affinity expressions specified by this
                                  field, but it may choose a node that violates one or more
                                  of the expressions. The node that is most preferred is the
                                  one with the greatest sum of weights, i.e. for each node that
                                  meets all of the scheduling requirements (resource request,
                                  requiredDuringScheduling anti-affinity expressions, etc.),
                                  compute a sum by iterating through the elements of this field
                                  and adding "weight" to the sum if the node has pods which
                                  matches the corresponding podAffinityTerm; the node(s) with
                                  the highest sum are the most preferred.
                                items:
                                  description: The weights of all of the matched WeightedPodAffinityTerm
                                    fields are added per-node to find the most preferred node(s)
                                  properties:
                                    podAffinityTerm:
                                      description: Required. A pod affinity term, associated
                                        with the corresponding weight.
                                      properties:
                                        labelSelector:
                                          description: A label query over a set of resources,
                                            in this case pods.
                                          properties:
                                            matchExpressions:
                                              description: matchExpressions is a list of label
                                                selector requirements. The requirements are
                                                ANDed.
                                              items:
                                                description: A label selector requirement is
                                                  a selector that contains values, a key, and
                                                  an operator that relates the key and values.
                                                properties:
                                                  key:
                                                    description: key is the label key that the
                                                      selector applies to.
                                                    type: string
                                                  operator:
                                                    description: operator represents a key's
                                                      relationship to a set of values. Valid
                                                      operators are In, NotIn, Exists and DoesNotExist.
                                                    type: string
                                                  values:
                                                    description: values is an array of string
                                                      values. If the operator is In or NotIn,
                                                      the values array must be non-empty. If
                                                      the operator is Exists or DoesNotExist,
                                                      the values array must be empty. This array
                                                      is replaced during a strategic merge patch.
                                                    items:
                                                      type: string
                                                    type: array
                                                required:
                                                  - key
                                                  - operator
                                                type: object
                                              type: array
                                            matchLabels:
                                              additionalProperties:
                                                type: string
                                              description: matchLabels is a map of {key,value}
                                                pairs. A single {key,value} in the matchLabels
                                                map is equivalent to an element of matchExpressions,
                                                whose key field is "key", the operator is "In",
                                                and the values array contains only "value".
                                                The requirements are ANDed.
                                              type: object
                                          type: object
                                        namespaces:
                                          description: namespaces specifies which namespaces
                                            the labelSelector applies to (matches against);
                                            null or empty list means "this pod's namespace"
                                          items:
                                            type: string
                                          type: array
                                        topologyKey:
                                          description: This pod should be co-located (affinity)
                                            or not co-located (anti-affinity) with the pods
                                            matching the labelSelector in the specified namespaces,
                                            where co-located is defined as running on a node
                                            whose value of the label with key topologyKey matches
                                            that of any node on which any of the selected pods
                                            is running. Empty topologyKey is not allowed.
                                          type: string
                                      required:
                                        - topologyKey
                                      type: object
                                    weight:
                                      description: weight associated with matching the corresponding
                                        podAffinityTerm, in the range 1-100.
                                      format: int32
                                      type: integer
                                  required:
                                    - podAffinityTerm
                                    - weight
                                  type: object
                                type: array
                              requiredDuringSchedulingIgnoredDuringExecution:
                                description: If the anti-affinity requirements specified by
                                  this field are not met at scheduling time, the pod will not
                                  be scheduled onto the node. If the anti-affinity requirements
                                  specified by this field cease to be met at some point during
                                  pod execution (e.g. due to a pod label update), the system
                                  may or may not try to eventually evict the pod from its node.
                                  When there are multiple elements, the lists of nodes corresponding
                                  to each podAffinityTerm are intersected, i.e. all terms must
                                  be satisfied.
                                items:
                                  description: Defines a set of pods (namely those matching
                                    the labelSelector relative to the given namespace(s)) that
                                    this pod should be co-located (affinity) or not co-located
                                    (anti-affinity) with, where co-located is defined as running
                                    on a node whose value of the label with key <topologyKey>
                                    matches that of any node on which a pod of the set of pods
                                    is running
                                  properties:
                                    labelSelector:
                                      description: A label query over a set of resources, in
                                        this case pods.
                                      properties:
                                        matchExpressions:
                                          description: matchExpressions is a list of label selector
                                            requirements. The requirements are ANDed.
                                          items:
                                            description: A label selector requirement is a selector
                                              that contains values, a key, and an operator that
                                              relates the key and values.
                                            properties:
                                              key:
                                                description: key is the label key that the selector
                                                  applies to.
                                                type: string
                                              operator:
                                                description: operator represents a key's relationship
                                                  to a set of values. Valid operators are In,
                                                  NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: values is an array of string values.
                                                  If the operator is In or NotIn, the values
                                                  array must be non-empty. If the operator is
                                                  Exists or DoesNotExist, the values array must
                                                  be empty. This array is replaced during a
                                                  strategic merge patch.
                                                items:
                                                  type: string
                                                type: array
                                            required:
                                              - key
                                              - operator
                                            type: object
                                          type: array
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: matchLabels is a map of {key,value} pairs.
                                            A single {key,value} in the matchLabels map is equivalent
                                            to an element of matchExpressions, whose key field
                                            is "key", the operator is "In", and the values array
                                            contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                    namespaces:
                                      description: namespaces specifies which namespaces the
                                        labelSelector applies to (matches against); null or
                                        empty list means "this pod's namespace"
                                      items:
                                        type: string
                                      type: array
                                    topologyKey:
                                      description: This pod should be co-located (affinity)
                                        or not co-located (anti-affinity) with the pods matching
                                        the labelSelector in the specified namespaces, where
                                        co-located is defined as running on a node whose value
                                        of the label with key topologyKey matches that of any
                                        node on which any of the selected pods is running. Empty
                                        topologyKey is not allowed.
                                      type: string
                                  required:
                                    - topologyKey
                                  type: object
                                type: array
                            type: object
                        type: object
                ingress:
                  description: The ingress configuration for Knative Serving
                  properties:
                    contour:
                      description: Contour settings
                      properties:
                        enabled:
                          type: boolean
                      type: object
                    istio:
                      description: Istio settings
                      properties:
                        enabled:
                          type: boolean
                        knative-ingress-gateway:
                          description: A means to override the knative-ingress-gateway
                          properties:
                            selector:
                              additionalProperties:
                                type: string
                              description: The selector for the ingress-gateway.
                              type: object
                          type: object
                        knative-local-gateway:
                          description: A means to override the knative-local-gateway
                          properties:
                            selector:
                              additionalProperties:
                                type: string
                              description: The selector for the ingress-gateway.
                              type: object
                          type: object
                      type: object
                    kourier:
                      description: Kourier settings
                      properties:
                        enabled:
                          type: boolean
                        service-type:
                          type: string
                      type: object
                  type: object
                knative-ingress-gateway:
                  description: A means to override the knative-ingress-gateway. This
                    field is deprecated. Use `spec.ingres.istio.knative-ingress-gateway`
                  properties:
                    selector:
                      additionalProperties:
                        type: string
                      description: The selector for the ingress-gateway.
                      type: object
                  type: object
                manifests:
                  description: A list of serving manifests, which will be installed
                    by the operator
                  items:
                    properties:
                      URL:
                        description: The link of the manifest URL
                        type: string
                    type: object
                  type: array
                registry:
                  description: A means to override the corresponding deployment images
                    in the upstream. This affects both apps/v1.Deployment and caching.internal.knative.dev/v1alpha1.Image.
                  properties:
                    default:
                      description: The default image reference template to use for all
                        knative images. Takes the form of example-registry.io/custom/path/${NAME}:custom-tag
                      type: string
                    imagePullSecrets:
                      description: A list of secrets to be used when pulling the knative
                        images. The secret must be created in the same namespace as
                        the knative-serving deployments, and not the namespace of this
                        resource.
                      items:
                        properties:
                          name:
                            description: The name of the secret.
                            type: string
                        type: object
                      type: array
                    override:
                      additionalProperties:
                        type: string
                      description: A map of a container name or image name to the full
                        image location of the individual knative image.
                      type: object
                  type: object
                resources:
                  description: A mapping of deployment name to resource requirements
                  items:
                    properties:
                      container:
                        description: The name of the container
                        type: string
                      limits:
                        properties:
                          cpu:
                            pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
                            type: string
                          ephemeral-storage:
                            pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
                            type: string
                          memory:
                            pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
                            type: string
                          storage:
                            pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
                            type: string
                        type: object
                      requests:
                        properties:
                          cpu:
                            pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
                            type: string
                          ephemeral-storage:
                            pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
                            type: string
                          memory:
                            pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
                            type: string
                          storage:
                            pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
                            type: string
                        type: object
                    type: object
                  type: array
                version:
                  description: The version of Knative Serving to be installed
                  type: string
              type: object
            status:
              description: Status defines the observed state of KnativeServing
              properties:
                conditions:
                  description: The latest available observations of a resource's current
                    state.
                  items:
                    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).
                        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:
                      - type
                      - status
                    type: object
                  type: array
                manifests:
                  description: The list of serving manifests, which have been installed
                    by the operator
                  items:
                    type: string
                  type: array
                observedGeneration:
                  description: The generation last processed by the controller
                  type: integer
                version:
                  description: The version of the installed release
                  type: string
              type: object
          type: object
      additionalPrinterColumns:
        - jsonPath: .status.version
          name: Version
          type: string
        - jsonPath: .status.conditions[?(@.type=="Ready")].status
          name: Ready
          type: string
        - jsonPath: .status.conditions[?(@.type=="Ready")].reason
          name: Reason
          type: string
  names:
    kind: KnativeServing
    listKind: KnativeServingList
    plural: knativeservings
    singular: knativeserving
  scope: Namespaced
  conversion:
    strategy: None
