apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  name: knativeservings.operator.knative.dev
spec:
  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
  group: operator.knative.dev
  names:
    kind: KnativeServing
    listKind: KnativeServingList
    plural: knativeservings
    singular: knativeserving
  preserveUnknownFields: false
  scope: Namespaced
  subresources:
    status: {}
  validation:
    openAPIV3Schema:
      type: object
      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:
            config:
              additionalProperties:
                additionalProperties:
                  type: string
                type: object
              description: A means to override the corresponding entries in the upstream
                configmaps
              type: object
            knative-ingress-gateway:
              description: A means to override the knative-ingress-gateway
              type: object
              properties:
                selector:
                  description: The selector for the ingress-gateway.
                  type: object
                  additionalProperties:
                    type: string
            cluster-local-gateway:
              description: A means to override the cluster-local-gateway
              type: object
              properties:
                selector:
                  description: The selector for the ingress-gateway.
                  type: object
                  additionalProperties:
                    type: string
            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.
              type: object
              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
                override:
                  description: A map of a container name or image name to the full image location of the individual knative image.
                  type: object
                  additionalProperties:
                    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.
                  type: array
                  items:
                    type: object
                    properties:
                      name:
                        description: The name of the secret.
                        type: string
            controller-custom-certs:
              description: Enabling the controller to trust registries with self-signed certificates
              type: object
              properties:
                type:
                  description: One of ConfigMap or Secret
                  type: string
                  enum:
                  - ConfigMap
                  - Secret
                  - ""
                name:
                  description: The name of the ConfigMap or Secret
                  type: string
            high-availability:
              description: Allows specification of HA control plane
              type: object
              properties:
                replicas:
                  description: The number of replicas that HA parts of the control plane will be scaled to
                  type: integer
                  minimum: 1
            resources:
              description: A mapping of deployment name to resource requirements
              type: array
              items:
                type: object
                properties:
                  container:
                    description: The name of the container
                    type: string
                  requests:
                    type: object
                    properties:
                      memory:
                        type: string
                        pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
                      cpu:
                        type: string
                        pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
                      storage:
                        type: string
                        pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
                      ephemeral-storage:
                        type: string
                        pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
                  limits:
                    type: object
                    properties:
                      memory:
                        type: string
                        pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
                      cpu:
                        type: string
                        pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
                      storage:
                        type: string
                        pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
                      ephemeral-storage:
                        type: string
                        pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
          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
            version:
              description: The version of the installed release
              type: string
          type: object
  version: v1alpha1
  versions:
  - name: v1alpha1
    served: true
    storage: true
