#
#  Copyright (c) 2019-2021 Red Hat, Inc.
#    This program and the accompanying materials are made
#    available under the terms of the Eclipse Public License 2.0
#    which is available at https://www.eclipse.org/legal/epl-2.0/
#
#  SPDX-License-Identifier: EPL-2.0
#
#  Contributors:
#    Red Hat, Inc. - initial API and implementation
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: checlusters.org.eclipse.che
spec:
  group: org.eclipse.che
  names:
    kind: CheCluster
    listKind: CheClusterList
    plural: checlusters
    singular: checluster
  preserveUnknownFields: false
  scope: Namespaced
  versions:
    - name: v1
      schema:
        openAPIV3Schema:
          description: The `CheCluster` custom resource allows defining and managing
            a Che server installation
          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: Desired configuration of the Che installation. Based on
                these settings, the  Operator automatically creates and maintains
                several ConfigMaps that will contain the appropriate environment variables
                the various components of the Che installation. These generated ConfigMaps
                must NOT be updated manually.
              properties:
                auth:
                  description: Configuration settings related to the Authentication
                    used by the Che installation.
                  properties:
                    externalIdentityProvider:
                      description: 'Instructs the Operator on whether or not to deploy
                        a dedicated Identity Provider (Keycloak or RH SSO instance).
                        Instructs the Operator on whether to deploy a dedicated Identity
                        Provider (Keycloak or RH-SSO instance). By default, a dedicated
                        Identity Provider server is deployed as part of the Che installation.
                        When `externalIdentityProvider` is `true`, no dedicated identity
                        provider will be deployed by the Operator and you will need
                        to provide details about the external identity provider you
                        are about to use. See also all the other fields starting with:
                        `identityProvider`.'
                      type: boolean
                    identityProviderAdminUserName:
                      description: Overrides the name of the Identity Provider administrator
                        user. Defaults to `admin`.
                      type: string
                    identityProviderClientId:
                      description: Name of a Identity provider, Keycloak or RH-SSO,
                        `client-id` that is used for Che. Override this when an external
                        Identity Provider is in use. See the `externalIdentityProvider`
                        field. When omitted or left blank, it is set to the value
                        of the `flavour` field suffixed with `-public`.
                      type: string
                    identityProviderContainerResources:
                      description: Identity provider container custom settings.
                      properties:
                        limits:
                          description: Limits describes the maximum amount of compute
                            resources allowed.
                          properties:
                            cpu:
                              description: CPU, in cores. (500m = .5 cores)
                              type: string
                            memory:
                              description: Memory, in bytes. (500Gi = 500GiB = 500
                                * 1024 * 1024 * 1024)
                              type: string
                          type: object
                        request:
                          description: Requests describes the minimum amount of compute
                            resources required.
                          properties:
                            cpu:
                              description: CPU, in cores. (500m = .5 cores)
                              type: string
                            memory:
                              description: Memory, in bytes. (500Gi = 500GiB = 500
                                * 1024 * 1024 * 1024)
                              type: string
                          type: object
                      type: object
                    identityProviderImage:
                      description: Overrides the container image used in the Identity
                        Provider, Keycloak or RH-SSO, deployment. This includes the
                        image tag. Omit it or leave it empty to use the default container
                        image provided by the Operator.
                      type: string
                    identityProviderImagePullPolicy:
                      description: Overrides the image pull policy used in the Identity
                        Provider, Keycloak or RH-SSO, deployment. Default value is
                        `Always` for `nightly` or `latest` images, and `IfNotPresent`
                        in other cases.
                      type: string
                    identityProviderIngress:
                      description: Ingress custom settings.
                      properties:
                        labels:
                          description: Comma separated list of labels that can be
                            used to organize and categorize objects by scoping and
                            selecting.
                          type: string
                      type: object
                    identityProviderPassword:
                      description: Overrides the password of Keycloak administrator
                        user. Override this when an external Identity Provider is
                        in use. See the `externalIdentityProvider` field. When omitted
                        or left blank, it is set to an auto-generated password.
                      type: string
                    identityProviderPostgresPassword:
                      description: Password for a Identity Provider, Keycloak or RH-SSO,
                        to connect to the database. Override this when an external
                        Identity Provider is in use. See the `externalIdentityProvider`
                        field. When omitted or left blank, it is set to an auto-generated
                        password.
                      type: string
                    identityProviderPostgresSecret:
                      description: 'The secret that contains `password` for the Identity
                        Provider, Keycloak or RH-SSO, to connect to the database.
                        When the secret is defined, the `identityProviderPostgresPassword`
                        is ignored. When the value is omitted or left blank, the one
                        of following scenarios applies: 1. `identityProviderPostgresPassword`
                        is defined, then it will be used to connect to the database.
                        2. `identityProviderPostgresPassword` is not defined, then
                        a new secret with the name `che-identity-postgres-secret`
                        will be created with an auto-generated value for `password`.'
                      type: string
                    identityProviderRealm:
                      description: Name of a Identity provider, Keycloak or RH-SSO,
                        realm that is used for Che. Override this when an external
                        Identity Provider is in use. See the `externalIdentityProvider`
                        field. When omitted or left blank, it is set to the value
                        of the `flavour` field.
                      type: string
                    identityProviderRoute:
                      description: Route custom settings.
                      properties:
                        domain:
                          description: 'Operator uses the domain to generate a hostname
                            for a route. In a conjunction with labels it creates a
                            route, which is served by a non-default Ingress controller.
                            The generated host name will follow this pattern: `<route-name>-<route-namespace>.<domain>`.'
                          type: string
                        labels:
                          description: Comma separated list of labels that can be
                            used to organize and categorize objects by scoping and
                            selecting.
                          type: string
                      type: object
                    identityProviderSecret:
                      description: 'The secret that contains `user` and `password`
                        for Identity Provider. When the secret is defined, the `identityProviderAdminUserName`
                        and `identityProviderPassword` are ignored. When the value
                        is omitted or left blank, the one of following scenarios applies:
                        1. `identityProviderAdminUserName` and `identityProviderPassword`
                        are defined, then they will be used. 2. `identityProviderAdminUserName`
                        or `identityProviderPassword` are not defined, then a new
                        secret with the name `che-identity-secret` will be created
                        with default value `admin` for `user` and with an auto-generated
                        value for `password`.'
                      type: string
                    identityProviderURL:
                      description: Public URL of the Identity Provider server (Keycloak
                        / RH-SSO server). Set this ONLY when a use of an external
                        Identity Provider is needed. See the `externalIdentityProvider`
                        field. By default, this will be automatically calculated and
                        set by the Operator.
                      type: string
                    initialOpenShiftOAuthUser:
                      description: For operating with the OpenShift OAuth authentication,
                        create a new user account since the kubeadmin can not be used.
                        If the value is true, then a new OpenShift OAuth user will
                        be created for the HTPasswd identity provider. If the value
                        is false and the user has already been created, then it will
                        be removed. If value is an empty, then do nothing. The user's
                        credentials are stored in the `openshift-oauth-user-credentials`
                        secret in 'openshift-config' namespace by Operator. Note that
                        this solution is Openshift 4 platform-specific.
                      type: boolean
                    oAuthClientName:
                      description: Name of the OpenShift `OAuthClient` resource used
                        to setup identity federation on the OpenShift side. Auto-generated
                        when left blank. See also the `OpenShiftoAuth` field.
                      type: string
                    oAuthSecret:
                      description: Name of the secret set in the OpenShift `OAuthClient`
                        resource used to setup identity federation on the OpenShift
                        side. Auto-generated when left blank. See also the `OAuthClientName`
                        field.
                      type: string
                    openShiftoAuth:
                      description: 'Enables the integration of the identity provider
                        (Keycloak / RHSSO) with OpenShift OAuth. Empty value on OpenShift
                        by default. This will allow users to directly login with their
                        OpenShift user through the OpenShift login, and have their
                        workspaces created under personal OpenShift namespaces. WARNING:
                        the `kubeadmin` user is NOT supported, and logging through
                        it will NOT allow accessing the Che Dashboard.'
                      type: boolean
                    updateAdminPassword:
                      description: Forces the default `admin` Che user to update password
                        on first login. Defaults to `false`.
                      type: boolean
                  type: object
                database:
                  description: Configuration settings related to the database used
                    by the Che installation.
                  properties:
                    chePostgresContainerResources:
                      description: PostgreSQL container custom settings
                      properties:
                        limits:
                          description: Limits describes the maximum amount of compute
                            resources allowed.
                          properties:
                            cpu:
                              description: CPU, in cores. (500m = .5 cores)
                              type: string
                            memory:
                              description: Memory, in bytes. (500Gi = 500GiB = 500
                                * 1024 * 1024 * 1024)
                              type: string
                          type: object
                        request:
                          description: Requests describes the minimum amount of compute
                            resources required.
                          properties:
                            cpu:
                              description: CPU, in cores. (500m = .5 cores)
                              type: string
                            memory:
                              description: Memory, in bytes. (500Gi = 500GiB = 500
                                * 1024 * 1024 * 1024)
                              type: string
                          type: object
                      type: object
                    chePostgresDb:
                      description: PostgreSQL database name that the Che server uses
                        to connect to the DB. Defaults to `dbche`.
                      type: string
                    chePostgresHostName:
                      description: PostgreSQL Database host name that the Che server
                        uses to connect to. Defaults is `postgres`. Override this
                        value ONLY when using an external database. See field `externalDb`.
                        In the default case it will be automatically set by the Operator.
                      type: string
                    chePostgresPassword:
                      description: PostgreSQL password that the Che server uses to
                        connect to the DB. When omitted or left blank, it will be
                        set to an automatically generated value.
                      type: string
                    chePostgresPort:
                      description: PostgreSQL Database port that the Che server uses
                        to connect to. Defaults to 5432. Override this value ONLY
                        when using an external database. See field `externalDb`. In
                        the default case it will be automatically set by the Operator.
                      type: string
                    chePostgresSecret:
                      description: 'The secret that contains PostgreSQL`user` and
                        `password` that the Che server uses to connect to the DB.
                        When the secret is defined, the `chePostgresUser` and `chePostgresPassword`
                        are ignored. When the value is omitted or left blank, the
                        one of following scenarios applies: 1. `chePostgresUser` and
                        `chePostgresPassword` are defined, then they will be used
                        to connect to the DB. 2. `chePostgresUser` or `chePostgresPassword`
                        are not defined, then a new secret with the name `che-postgres-secret`
                        will be created with default value of `pgche` for `user` and
                        with an auto-generated value for `password`.'
                      type: string
                    chePostgresUser:
                      description: PostgreSQL user that the Che server uses to connect
                        to the DB. Defaults to `pgche`.
                      type: string
                    externalDb:
                      description: 'Instructs the Operator on whether to deploy a
                        dedicated database. By default, a dedicated PostgreSQL database
                        is deployed as part of the Che installation. When `externalDb`
                        is `true`, no dedicated database will be deployed by the Operator
                        and you will need to provide connection details to the external
                        DB you are about to use. See also all the fields starting
                        with: `chePostgres`.'
                      type: boolean
                    postgresImage:
                      description: Overrides the container image used in the PostgreSQL
                        database deployment. This includes the image tag. Omit it
                        or leave it empty to use the default container image provided
                        by the Operator.
                      type: string
                    postgresImagePullPolicy:
                      description: Overrides the image pull policy used in the PostgreSQL
                        database deployment. Default value is `Always` for `nightly`
                        or `latest` images, and `IfNotPresent` in other cases.
                      type: string
                  type: object
                devWorkspace:
                  description: Dev Workspace operator configuration
                  properties:
                    controllerImage:
                      description: Overrides the container image used in the DevWorkspace
                        controller deployment. This includes the image tag. Omit it
                        or leave it empty to use the default container image provided
                        by the Operator.
                      type: string
                    enable:
                      description: Deploys the DevWorkspace Operator in the cluster.
                        Does nothing when a matching version of the Operator is already
                        installed. Fails when a non-matching version of the Operator
                        is already installed.
                      type: boolean
                  required:
                    - enable
                  type: object
                imagePuller:
                  description: Kubernetes Image Puller configuration
                  properties:
                    enable:
                      description: "Install and configure the Community Supported\
                        \ Kubernetes Image Puller Operator. When set to `true` and\
                        \ no spec is provided, it will create a default KubernetesImagePuller\
                        \ object to be managed by the Operator. When set to `false`,\
                        \ the KubernetesImagePuller object will be deleted, and the\
                        \ Operator will be uninstalled, regardless of whether a spec\
                        \ is provided. Note that while this the Operator and its behavior\
                        \ is community-supported, its payload may be commercially-supported\
                        \ for pulling commercially-supported images."
                      type: boolean
                    spec:
                      description: A KubernetesImagePullerSpec to configure the image
                        puller in the CheCluster
                      properties:
                        cachingCPULimit:
                          type: string
                        cachingCPURequest:
                          type: string
                        cachingIntervalHours:
                          type: string
                        cachingMemoryLimit:
                          type: string
                        cachingMemoryRequest:
                          type: string
                        configMapName:
                          type: string
                        daemonsetName:
                          type: string
                        deploymentName:
                          type: string
                        images:
                          type: string
                        nodeSelector:
                          type: string
                      type: object
                  required:
                    - enable
                  type: object
                k8s:
                  description: Configuration settings specific to Che installations
                    made on upstream Kubernetes.
                  properties:
                    ingressClass:
                      description: 'Ingress class that will define the which controller
                        will manage ingresses. Defaults to `nginx`. NB: This drives
                        the `kubernetes.io/ingress.class` annotation on Che-related
                        ingresses.'
                      type: string
                    ingressDomain:
                      description: 'Global ingress domain for a Kubernetes cluster.
                        This MUST be explicitly specified: there are no defaults.'
                      type: string
                    ingressStrategy:
                      description: 'Strategy for ingress creation. Options are: `multi-host`
                        (host is explicitly provided in ingress), `single-host` (host
                        is provided, path-based rules) and `default-host` (no host
                        is provided, path-based rules). Defaults to `multi-host` Deprecated
                        in favor of `serverExposureStrategy` in the `server` section,
                        which defines this regardless of the cluster type. When both
                        are defined, the `serverExposureStrategy` option takes precedence.'
                      type: string
                    securityContextFsGroup:
                      description: The FSGroup in which the Che Pod and workspace
                        Pods containers runs in. Default value is `1724`.
                      type: string
                    securityContextRunAsUser:
                      description: ID of the user the Che Pod and workspace Pods containers
                        run as. Default value is `1724`.
                      type: string
                    singleHostExposureType:
                      description: When the serverExposureStrategy is set to `single-host`,
                        the way the server, registries and workspaces are exposed
                        is further configured by this property. The possible values
                        are `native`, which means that the server and workspaces are
                        exposed using ingresses on K8s or `gateway` where the server
                        and workspaces are exposed using a custom gateway based on
                        link:https://doc.traefik.io/traefik/[Traefik]. All the endpoints
                        whether backed by the ingress or gateway `route` always point
                        to the subpaths on the same domain. Defaults to `native`.
                      type: string
                    tlsSecretName:
                      description: Name of a secret that will be used to setup ingress
                        TLS termination when TLS is enabled. When the field is empty
                        string, the default cluster certificate will be used. See
                        also the `tlsSupport` field.
                      type: string
                  type: object
                metrics:
                  description: Configuration settings related to the metrics collection
                    used by the Che installation.
                  properties:
                    enable:
                      description: Enables `metrics` the Che server endpoint. Default
                        to `true`.
                      type: boolean
                  type: object
                server:
                  description: General configuration settings related to the Che server
                    and the plugin and devfile registries
                  properties:
                    airGapContainerRegistryHostname:
                      description: Optional host name, or URL, to an alternate container
                        registry to pull images from. This value overrides the container
                        registry host name defined in all the default container images
                        involved in a Che deployment. This is particularly useful
                        to install Che in a restricted environment.
                      type: string
                    airGapContainerRegistryOrganization:
                      description: Optional repository name of an alternate container
                        registry to pull images from. This value overrides the container
                        registry organization defined in all the default container
                        images involved in a Che deployment. This is particularly
                        useful to install Eclipse Che in a restricted environment.
                      type: string
                    allowUserDefinedWorkspaceNamespaces:
                      description: Defines that a user is allowed to specify a Kubernetes
                        namespace, or an OpenShift project, which differs from the
                        default. It's NOT RECOMMENDED to set to `true` without OpenShift
                        OAuth configured. The OpenShift infrastructure also uses this
                        property.
                      type: boolean
                    cheClusterRoles:
                      description: A comma-separated list of ClusterRoles that will
                        be assigned to Che ServiceAccount. Be aware that the Che Operator
                        has to already have all permissions in these ClusterRoles
                        to grant them.
                      type: string
                    cheDebug:
                      description: Enables the debug mode for Che server. Defaults
                        to `false`.
                      type: string
                    cheFlavor:
                      description: Specifies a variation of the installation. The
                        options are `che` for upstream Che installations, or `codeready`
                        for link:https://developers.redhat.com/products/codeready-workspaces/overview[CodeReady
                        Workspaces] installation. Override the default value only
                        on necessary occasions.
                      type: string
                    cheHost:
                      description: Public host name of the installed Che server. When
                        value is omitted, the value it will be automatically set by
                        the Operator. See the `cheHostTLSSecret` field.
                      type: string
                    cheHostTLSSecret:
                      description: Name of a secret containing certificates to secure
                        ingress or route for the custom host name of the installed
                        Che server. See the `cheHost` field.
                      type: string
                    cheImage:
                      description: Overrides the container image used in Che deployment.
                        This does NOT include the container image tag. Omit it or
                        leave it empty to use the default container image provided
                        by the Operator.
                      type: string
                    cheImagePullPolicy:
                      description: Overrides the image pull policy used in Che deployment.
                        Default value is `Always` for `nightly` or `latest` images,
                        and `IfNotPresent` in other cases.
                      type: string
                    cheImageTag:
                      description: Overrides the tag of the container image used in
                        Che deployment. Omit it or leave it empty to use the default
                        image tag provided by the Operator.
                      type: string
                    cheLogLevel:
                      description: 'Log level for the Che server: `INFO` or `DEBUG`.
                        Defaults to `INFO`.'
                      type: string
                    cheServerIngress:
                      description: The Che server ingress custom settings.
                      properties:
                        labels:
                          description: Comma separated list of labels that can be
                            used to organize and categorize objects by scoping and
                            selecting.
                          type: string
                      type: object
                    cheServerRoute:
                      description: The Che server route custom settings.
                      properties:
                        domain:
                          description: 'Operator uses the domain to generate a hostname
                            for a route. In a conjunction with labels it creates a
                            route, which is served by a non-default Ingress controller.
                            The generated host name will follow this pattern: `<route-name>-<route-namespace>.<domain>`.'
                          type: string
                        labels:
                          description: Comma separated list of labels that can be
                            used to organize and categorize objects by scoping and
                            selecting.
                          type: string
                      type: object
                    cheWorkspaceClusterRole:
                      description: Custom cluster role bound to the user for the Che
                        workspaces. The default roles are used when omitted or left
                        blank.
                      type: string
                    customCheProperties:
                      additionalProperties:
                        type: string
                      description: Map of additional environment variables that will
                        be applied in the generated `che` ConfigMap to be used by
                        the Che server, in addition to the values already generated
                        from other fields of the `CheCluster` custom resource (CR).
                        When `customCheProperties` contains a property that would
                        be normally generated in `che` ConfigMap from other CR fields,
                        the value defined in the `customCheProperties` is used instead.
                      type: object
                    dashboardCpuLimit:
                      description: Overrides the CPU limit used in the dashboard deployment.
                        In cores. (500m = .5 cores). Default to 500m.
                      type: string
                    dashboardCpuRequest:
                      description: Overrides the CPU request used in the dashboard
                        deployment. In cores. (500m = .5 cores). Default to 100m.
                      type: string
                    dashboardImage:
                      description: Overrides the container image used in the dashboard
                        deployment. This includes the image tag. Omit it or leave
                        it empty to use the default container image provided by the
                        Operator.
                      type: string
                    dashboardImagePullPolicy:
                      description: Overrides the image pull policy used in the dashboard
                        deployment. Default value is `Always` for `nightly` or `latest`
                        images, and `IfNotPresent` in other cases.
                      type: string
                    dashboardMemoryLimit:
                      description: Overrides the memory limit used in the dashboard
                        deployment. Defaults to 256Mi.
                      type: string
                    dashboardMemoryRequest:
                      description: Overrides the memory request used in the dashboard
                        deployment. Defaults to 16Mi.
                      type: string
                    devfileRegistryCpuLimit:
                      description: Overrides the CPU limit used in the devfile registry
                        deployment. In cores. (500m = .5 cores). Default to 500m.
                      type: string
                    devfileRegistryCpuRequest:
                      description: Overrides the CPU request used in the devfile registry
                        deployment. In cores. (500m = .5 cores). Default to 100m.
                      type: string
                    devfileRegistryImage:
                      description: Overrides the container image used in the devfile
                        registry deployment. This includes the image tag. Omit it
                        or leave it empty to use the default container image provided
                        by the Operator.
                      type: string
                    devfileRegistryIngress:
                      description: The devfile registry ingress custom settings.
                      properties:
                        labels:
                          description: Comma separated list of labels that can be
                            used to organize and categorize objects by scoping and
                            selecting.
                          type: string
                      type: object
                    devfileRegistryMemoryLimit:
                      description: Overrides the memory limit used in the devfile
                        registry deployment. Defaults to 256Mi.
                      type: string
                    devfileRegistryMemoryRequest:
                      description: Overrides the memory request used in the devfile
                        registry deployment. Defaults to 16Mi.
                      type: string
                    devfileRegistryPullPolicy:
                      description: Overrides the image pull policy used in the devfile
                        registry deployment. Default value is `Always` for `nightly`
                        or `latest` images, and `IfNotPresent` in other cases.
                      type: string
                    devfileRegistryRoute:
                      description: The devfile registry route custom settings.
                      properties:
                        domain:
                          description: 'Operator uses the domain to generate a hostname
                            for a route. In a conjunction with labels it creates a
                            route, which is served by a non-default Ingress controller.
                            The generated host name will follow this pattern: `<route-name>-<route-namespace>.<domain>`.'
                          type: string
                        labels:
                          description: Comma separated list of labels that can be
                            used to organize and categorize objects by scoping and
                            selecting.
                          type: string
                      type: object
                    devfileRegistryUrl:
                      description: Public URL of the devfile registry, that serves
                        sample, ready-to-use devfiles. Set this ONLY when a use of
                        an external devfile registry is needed. See the `externalDevfileRegistry`
                        field. By default, this will be automatically calculated by
                        the Operator.
                      type: string
                    externalDevfileRegistry:
                      description: Instructs the Operator on whether to deploy a dedicated
                        devfile registry server. By default, a dedicated devfile registry
                        server is started. When `externalDevfileRegistry` is `true`,
                        no such dedicated server will be started by the Operator and
                        you will have to manually set the `devfileRegistryUrl` field
                      type: boolean
                    externalPluginRegistry:
                      description: Instructs the Operator on whether to deploy a dedicated
                        plugin registry server. By default, a dedicated plugin registry
                        server is started. When `externalPluginRegistry` is `true`,
                        no such dedicated server will be started by the Operator and
                        you will have to manually set the `pluginRegistryUrl` field.
                      type: boolean
                    gitSelfSignedCert:
                      description: When enabled, the certificate from `che-git-self-signed-cert`
                        ConfigMap will be propagated to the Che components and provide
                        particular configuration for Git.
                      type: boolean
                    nonProxyHosts:
                      description: 'List of hosts that will be reached directly, bypassing
                        the proxy. Specify wild card domain use the following form
                        `.<DOMAIN>` and `|` as delimiter, for example: `localhost|.my.host.com|123.42.12.32`
                        Only use when configuring a proxy is required. Operator respects
                        OpenShift cluster wide proxy configuration and no additional
                        configuration is required, but defining `nonProxyHosts` in
                        a custom resource leads to merging non proxy hosts lists from
                        the cluster proxy configuration and ones defined in the custom
                        resources. See the doc https://docs.openshift.com/container-platform/4.4/networking/enable-cluster-wide-proxy.html.
                        See also the `proxyURL` fields.'
                      type: string
                    pluginRegistryCpuLimit:
                      description: Overrides the CPU limit used in the plugin registry
                        deployment. In cores. (500m = .5 cores). Default to 500m.
                      type: string
                    pluginRegistryCpuRequest:
                      description: Overrides the CPU request used in the plugin registry
                        deployment. In cores. (500m = .5 cores). Default to 100m.
                      type: string
                    pluginRegistryImage:
                      description: Overrides the container image used in the plugin
                        registry deployment. This includes the image tag. Omit it
                        or leave it empty to use the default container image provided
                        by the Operator.
                      type: string
                    pluginRegistryIngress:
                      description: Plugin registry ingress custom settings.
                      properties:
                        labels:
                          description: Comma separated list of labels that can be
                            used to organize and categorize objects by scoping and
                            selecting.
                          type: string
                      type: object
                    pluginRegistryMemoryLimit:
                      description: Overrides the memory limit used in the plugin registry
                        deployment. Defaults to 256Mi.
                      type: string
                    pluginRegistryMemoryRequest:
                      description: Overrides the memory request used in the plugin
                        registry deployment. Defaults to 16Mi.
                      type: string
                    pluginRegistryPullPolicy:
                      description: Overrides the image pull policy used in the plugin
                        registry deployment. Default value is `Always` for `nightly`
                        or `latest` images, and `IfNotPresent` in other cases.
                      type: string
                    pluginRegistryRoute:
                      description: Plugin registry route custom settings.
                      properties:
                        domain:
                          description: 'Operator uses the domain to generate a hostname
                            for a route. In a conjunction with labels it creates a
                            route, which is served by a non-default Ingress controller.
                            The generated host name will follow this pattern: `<route-name>-<route-namespace>.<domain>`.'
                          type: string
                        labels:
                          description: Comma separated list of labels that can be
                            used to organize and categorize objects by scoping and
                            selecting.
                          type: string
                      type: object
                    pluginRegistryUrl:
                      description: Public URL of the plugin registry that serves sample
                        ready-to-use devfiles. Set this ONLY when a use of an external
                        devfile registry is needed. See the `externalPluginRegistry`
                        field. By default, this will be automatically calculated by
                        the Operator.
                      type: string
                    proxyPassword:
                      description: Password of the proxy server. Only use when proxy
                        configuration is required. See the `proxyURL`, `proxyUser`
                        and `proxySecret` fields.
                      type: string
                    proxyPort:
                      description: Port of the proxy server. Only use when configuring
                        a proxy is required. See also the `proxyURL` and `nonProxyHosts`
                        fields.
                      type: string
                    proxySecret:
                      description: The secret that contains `user` and `password`
                        for a proxy server. When the secret is defined, the `proxyUser`
                        and `proxyPassword` are ignored.
                      type: string
                    proxyURL:
                      description: URL (protocol+host name) of the proxy server. This
                        drives the appropriate changes in the `JAVA_OPTS` and `https(s)_proxy`
                        variables in the Che server and workspaces containers. Only
                        use when configuring a proxy is required. Operator respects
                        OpenShift cluster wide proxy configuration and no additional
                        configuration is required, but defining `proxyUrl` in a custom
                        resource leads to overrides the cluster proxy configuration
                        with fields `proxyUrl`, `proxyPort`, `proxyUser` and `proxyPassword`
                        from the custom resource. See the doc https://docs.openshift.com/container-platform/4.4/networking/enable-cluster-wide-proxy.html.
                        See also the `proxyPort` and `nonProxyHosts` fields.
                      type: string
                    proxyUser:
                      description: User name of the proxy server. Only use when configuring
                        a proxy is required. See also the `proxyURL`, `proxyPassword`
                        and `proxySecret` fields.
                      type: string
                    selfSignedCert:
                      description: Deprecated. The value of this flag is ignored.
                        The Che Operator will automatically detect whether the router
                        certificate is self-signed and propagate it to other components,
                        such as the Che server.
                      type: boolean
                    serverCpuLimit:
                      description: Overrides the CPU limit used in the Che server
                        deployment In cores. (500m = .5 cores). Default to 1.
                      type: string
                    serverCpuRequest:
                      description: Overrides the CPU request used in the Che server
                        deployment In cores. (500m = .5 cores). Default to 100m.
                      type: string
                    serverExposureStrategy:
                      description: Sets the server and workspaces exposure type. Possible
                        values are `multi-host`, `single-host`, `default-host`. Defaults
                        to `multi-host`, which creates a separate ingress, or OpenShift
                        routes, for every required endpoint. `single-host` makes Che
                        exposed on a single host name with workspaces exposed on subpaths.
                        Read the docs to learn about the limitations of this approach.
                        Also consult the `singleHostExposureType` property to further
                        configure how the Operator and the Che server make that happen
                        on Kubernetes. `default-host` exposes the Che server on the
                        host of the cluster. Read the docs to learn about the limitations
                        of this approach.
                      type: string
                    serverMemoryLimit:
                      description: Overrides the memory limit used in the Che server
                        deployment. Defaults to 1Gi.
                      type: string
                    serverMemoryRequest:
                      description: Overrides the memory request used in the Che server
                        deployment. Defaults to 512Mi.
                      type: string
                    serverTrustStoreConfigMapName:
                      description: Name of the ConfigMap with public certificates
                        to add to Java trust store of the Che server. This is often
                        required when adding the OpenShift OAuth provider, which has
                        HTTPS endpoint signed with self-signed cert. The Che server
                        must be aware of its CA cert to be able to request it. This
                        is disabled by default.
                      type: string
                    singleHostGatewayConfigMapLabels:
                      additionalProperties:
                        type: string
                      description: The labels that need to be present in the ConfigMaps
                        representing the gateway configuration.
                      type: object
                    singleHostGatewayConfigSidecarImage:
                      description: The image used for the gateway sidecar that provides
                        configuration to the gateway. Omit it or leave it empty to
                        use the default container image provided by the Operator.
                      type: string
                    singleHostGatewayImage:
                      description: The image used for the gateway in the single host
                        mode. Omit it or leave it empty to use the default container
                        image provided by the Operator.
                      type: string
                    tlsSupport:
                      description: Deprecated. Instructs the Operator to deploy Che
                        in TLS mode. This is enabled by default. Disabling TLS sometimes
                        cause malfunction of some Che components.
                      type: boolean
                    useInternalClusterSVCNames:
                      description: Use internal cluster SVC names to communicate between
                        components to speed up the traffic and avoid proxy issues.
                        The default value is `true`.
                      type: boolean
                    workspaceNamespaceDefault:
                      description: Defines Kubernetes default namespace in which user's
                        workspaces are created for a case when a user does not override
                        it. It's possible to use `<username>`, `<userid>` and `<workspaceid>`
                        placeholders, such as che-workspace-<username>. In that case,
                        a new namespace will be created for each user or workspace.
                      type: string
                  type: object
                storage:
                  description: Configuration settings related to the persistent storage
                    used by the Che installation.
                  properties:
                    postgresPVCStorageClassName:
                      description: Storage class for the Persistent Volume Claim dedicated
                        to the PostgreSQL database. When omitted or left blank, a
                        default storage class is used.
                      type: string
                    preCreateSubPaths:
                      description: Instructs the Che server to start a special Pod
                        to pre-create a sub-path in the Persistent Volumes. Defaults
                        to `false`, however it will need to enable it according to
                        the configuration of your Kubernetes cluster.
                      type: boolean
                    pvcClaimSize:
                      description: Size of the persistent volume claim for workspaces.
                        Defaults to `1Gi`.
                      type: string
                    pvcJobsImage:
                      description: Overrides the container image used to create sub-paths
                        in the Persistent Volumes. This includes the image tag. Omit
                        it or leave it empty to use the default container image provided
                        by the Operator. See also the `preCreateSubPaths` field.
                      type: string
                    pvcStrategy:
                      description: Persistent volume claim strategy for the Che server.
                        This Can be:`common` (all workspaces PVCs in one volume),
                        `per-workspace` (one PVC per workspace for all declared volumes)
                        and `unique` (one PVC per declared volume). Defaults to `common`.
                      type: string
                    workspacePVCStorageClassName:
                      description: Storage class for the Persistent Volume Claims
                        dedicated to the Che workspaces. When omitted or left blank,
                        a default storage class is used.
                      type: string
                  type: object
              type: object
            status:
              description: CheClusterStatus defines the observed state of Che installation
              properties:
                cheClusterRunning:
                  description: Status of a Che installation. Can be `Available`, `Unavailable`,
                    or `Available, Rolling Update in Progress`.
                  type: string
                cheURL:
                  description: Public URL to the Che server.
                  type: string
                cheVersion:
                  description: Current installed Che version.
                  type: string
                dbProvisioned:
                  description: Indicates that a PostgreSQL instance has been correctly
                    provisioned or not.
                  type: boolean
                devfileRegistryURL:
                  description: Public URL to the devfile registry.
                  type: string
                gitHubOAuthProvisioned:
                  description: Indicates whether an Identity Provider instance, Keycloak
                    or RH-SSO, has been configured to integrate with the GitHub OAuth.
                  type: boolean
                helpLink:
                  description: A URL that points to some URL where to find help related
                    to the current Operator status.
                  type: string
                keycloakProvisioned:
                  description: Indicates whether an Identity Provider instance, Keycloak
                    or RH-SSO, has been provisioned with realm, client and user.
                  type: boolean
                keycloakURL:
                  description: Public URL to the Identity Provider server, Keycloak
                    or RH-SSO,.
                  type: string
                message:
                  description: A human readable message indicating details about why
                    the Pod is in this condition.
                  type: string
                openShiftOAuthUserCredentialsSecret:
                  description: OpenShift OAuth secret in `openshift-config` namespace
                    that contains user credentials for HTPasswd identity provider.
                  type: string
                openShiftoAuthProvisioned:
                  description: Indicates whether an Identity Provider instance, Keycloak
                    or RH-SSO, has been configured to integrate with the OpenShift
                    OAuth.
                  type: boolean
                pluginRegistryURL:
                  description: Public URL to the plugin registry.
                  type: string
                reason:
                  description: A brief CamelCase message indicating details about
                    why the Pod is in this state.
                  type: string
              type: object
          type: object
      served: true
      storage: true
      subresources:
        status: {}
