feat: CheCluster defaults (#1407)

* feat: CheCluster defaults

Signed-off-by: Anatolii Bazko <abazko@redhat.com>
pull/1410/head
Anatolii Bazko 2022-06-22 11:02:08 +03:00 committed by GitHub
parent c364ba4e93
commit 38f6cb6381
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 714 additions and 144 deletions

View File

@ -65,7 +65,6 @@ mkfile_dir := $(dir $(mkfile_path))
# Default Eclipse Che operator image
IMG ?= quay.io/eclipse/che-operator:next
CRD_OPTIONS ?= "crd:crdVersions=v1"
CONFIG_MANAGER="config/manager/manager.yaml"
INTERNAL_TMP_DIR=/tmp/che-operator-dev
@ -215,6 +214,7 @@ update-helmcharts: ## Update Helm Charts
yq -rYi --arg examples "$${CRDS_SAMPLES}" ".annotations.\"artifacthub.io/crdsExamples\" = \$$examples" $${chartYaml}
rm -rf $${HELMCHARTS_TEMPLATES}/org_v2_checluster.yaml
else
yq -riY '.spec.networking = null' $${HELMCHARTS_TEMPLATES}/org_v2_checluster.yaml
yq -riY '.spec.networking.tlsSecretName = "che-tls"' $${HELMCHARTS_TEMPLATES}/org_v2_checluster.yaml
yq -riY '.spec.networking.domain = "{{ .Values.networking.domain }}"' $${HELMCHARTS_TEMPLATES}/org_v2_checluster.yaml
yq -riY '.spec.networking.auth.oAuthSecret = "{{ .Values.networking.auth.oAuthSecret }}"' $${HELMCHARTS_TEMPLATES}/org_v2_checluster.yaml
@ -346,7 +346,7 @@ docker-push: ## Push Eclipse Che operator image to a registry
${IMAGE_TOOL} push ${IMG}
manifests: download-controller-gen download-addlicense ## Generate WebhookConfiguration, ClusterRole and CustomResourceDefinition objects.
$(CONTROLLER_GEN) $(CRD_OPTIONS) rbac:roleName=manager-role webhook paths="./..." output:crd:artifacts:config=config/crd/bases
$(CONTROLLER_GEN) crd:crdVersions=v1 rbac:roleName=manager-role paths="./..." output:crd:artifacts:config=config/crd/bases
# remove yaml delimitier, which makes OLM catalog source image broken.
sed -i '/---/d' "$(CHECLUSTER_CRD_PATH)"

View File

@ -1,5 +1,5 @@
//
// Copyright (c) 2019-2021 Red Hat, Inc.
// Copyright (c) 2019-2022 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/
@ -36,17 +36,20 @@ type CheClusterSpec struct {
// +optional
// +operator-sdk:csv:customresourcedefinitions:type=spec,order=1
// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Development environments"
// +kubebuilder:default:={storage: {pvcStrategy: common}, defaultNamespace: {template: <username>-che}}
DevEnvironments CheClusterDevEnvironments `json:"devEnvironments"`
// Che components configuration.
// +optional
// +operator-sdk:csv:customresourcedefinitions:type=spec,order=2
// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Components"
// +kubebuilder:default:={cheServer: {logLevel: INFO, debug: false}, metrics: {enable: true}, database: {externalDb: false, credentialsSecretName: postgres-credentials, postgresHostName: postgres, postgresPort: "5432", postgresDb: dbche, pvc: {claimSize: "1Gi"}}}
Components CheClusterComponents `json:"components"`
// Networking, Che authentication, and TLS configuration.
// +optional
// +operator-sdk:csv:customresourcedefinitions:type=spec,order=3
// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Networking"
Networking CheClusterSpecNetworking `json:"networking,omitempty"`
// +kubebuilder:default:={auth: {gateway: {configLabels: {app: che, component: che-gateway-config}}}}
Networking CheClusterSpecNetworking `json:"networking"`
// Configuration of an alternative registry that stores Che images.
// +optional
// +operator-sdk:csv:customresourcedefinitions:type=spec,order=4
@ -59,7 +62,8 @@ type CheClusterSpec struct {
type CheClusterDevEnvironments struct {
// Workspaces persistent storage.
// +optional
Storage WorkspaceStorage `json:"storage"`
// +kubebuilder:default:={pvcStrategy: common}
Storage WorkspaceStorage `json:"storage,omitempty"`
// Default plug-ins applied to DevWorkspaces.
// +optional
DefaultPlugins []WorkspaceDefaultPlugins `json:"defaultPlugins,omitempty"`
@ -71,6 +75,7 @@ type CheClusterDevEnvironments struct {
Tolerations []corev1.Toleration `json:"tolerations,omitempty"`
// User's default namespace.
// +optional
// +kubebuilder:default:={template: <username>-che}
DefaultNamespace DefaultNamespace `json:"defaultNamespace,omitempty"`
// Trusted certificate settings.
// +optional
@ -85,6 +90,7 @@ type CheClusterComponents struct {
DevWorkspace DevWorkspace `json:"devWorkspace"`
// General configuration settings related to the Che server.
// +optional
// +kubebuilder:default:={logLevel: INFO, debug: false}
CheServer CheServer `json:"cheServer"`
// Configuration settings related to the plug-in registry used by the Che installation.
// +optional
@ -94,6 +100,7 @@ type CheClusterComponents struct {
DevfileRegistry DevfileRegistry `json:"devfileRegistry"`
// Configuration settings related to the database used by the Che installation.
// +optional
// +kubebuilder:default:={externalDb: false, credentialsSecretName: postgres-credentials, postgresHostName: postgres, postgresPort: "5432", postgresDb: dbche, pvc: {claimSize: "1Gi"}}
Database Database `json:"database"`
// Configuration settings related to the dashboard used by the Che installation.
// +optional
@ -103,6 +110,7 @@ type CheClusterComponents struct {
ImagePuller ImagePuller `json:"imagePuller"`
// Che server metrics configuration.
// +optional
// +kubebuilder:default:={enable: true}
Metrics ServerMetrics `json:"metrics"`
}
@ -136,6 +144,7 @@ type CheClusterSpecNetworking struct {
TlsSecretName string `json:"tlsSecretName,omitempty"`
// Authentication settings.
// +optional
// +kubebuilder:default:={gateway: {configLabels: {app: che, component: che-gateway-config}}}
Auth Auth `json:"auth"`
}
@ -166,6 +175,7 @@ type CheServer struct {
LogLevel string `json:"logLevel,omitempty"`
// Enables the debug mode for Che server.
// +optional
// +kubebuilder:default:=false
Debug *bool `json:"debug,omitempty"`
// ClusterRoles assigned to Che ServiceAccount.
// The defaults roles are:
@ -236,6 +246,7 @@ type Database struct {
// When `externalDb` is set as `true`, no dedicated database is deployed by the
// Operator and you need to provide connection details about the external database you want to use.
// +optional
// +kubebuilder:default:=false
ExternalDb bool `json:"externalDb"`
// Deployment override options.
// +optional
@ -261,14 +272,15 @@ type Database struct {
CredentialsSecretName string `json:"credentialsSecretName,omitempty"`
// PVC settings for PostgreSQL database.
// +optional
// +kubebuilder:default:={claimSize: "1Gi"}
Pvc PVC `json:"pvc,omitempty"`
}
// Che server metrics configuration
type ServerMetrics struct {
// Enables `metrics` for the Che server endpoint.
// +kubebuilder:default:=true
// +optional
// +kubebuilder:default:=true
Enable bool `json:"enable"`
}
@ -284,6 +296,7 @@ type ImagePuller struct {
// pre-pulled after installation.
// Note that while this Operator and its behavior is community-supported, its payload may be commercially-supported
// for pulling commercially-supported images.
// +optional
Enable bool `json:"enable"`
// A Kubernetes Image Puller spec to configure the image puller in the CheCluster.
// +optional
@ -304,8 +317,10 @@ type DevWorkspace struct {
type DefaultNamespace struct {
// If you don't create the user namespaces in advance, this field defines the Kubernetes namespace created when you start your first workspace.
// You can use `<username>`, `<userid>` and `<workspaceid>` placeholders, such as che-workspace-<username>.
// You can use `<username>` and `<userid>` placeholders, such as che-workspace-<username>.
// +optional
// +kubebuilder:default:=<username>-che
// +kubebuilder:validation:Pattern=<username>|<userid>
Template string `json:"template,omitempty"`
}
@ -336,6 +351,7 @@ type WorkspaceStorage struct {
// For details, see https://github.com/eclipse/che/issues/21185.
// +optional
// +kubebuilder:default:="common"
// +kubebuilder:validation:Enum=common;per-workspace
PvcStrategy string `json:"pvcStrategy,omitempty"`
}
@ -349,10 +365,13 @@ type WorkspaceDefaultPlugins struct {
// Authentication settings.
type Auth struct {
// Public URL of the Identity Provider server.
// +optional
IdentityProviderURL string `json:"identityProviderURL,omitempty"`
// Name of the OpenShift `OAuthClient` resource used to set up identity federation on the OpenShift side.
// +optional
OAuthClientName string `json:"oAuthClientName,omitempty"`
// Name of the secret set in the OpenShift `OAuthClient` resource used to set up identity federation on the OpenShift side.
// +optional
OAuthSecret string `json:"oAuthSecret,omitempty"`
// Access Token Scope.
// This field is specific to Che installations made for Kubernetes only and ignored for OpenShift.
@ -366,6 +385,7 @@ type Auth struct {
IdentityToken string `json:"identityToken,omitempty"`
// Gateway settings.
// +optional
// +kubebuilder:default:={configLabels: {app: che, component: che-gateway-config}}
Gateway Gateway `json:"gateway,omitempty"`
}
@ -379,8 +399,9 @@ type Gateway struct {
// - `kube-rbac-proxy`
// +optional
Deployment Deployment `json:"deployment,omitempty"`
// Gate configuration labels.
// Gateway configuration labels.
// +optional
// +kubebuilder:default:={app: che, component: che-gateway-config}
ConfigLabels map[string]string `json:"configLabels,omitempty"`
}
@ -403,6 +424,7 @@ type Proxy struct {
// Use only when a proxy configuration is required. The Operator respects OpenShift cluster-wide proxy configuration,
// defining `nonProxyHosts` in a custom resource leads to merging non-proxy hosts lists from the cluster proxy configuration, and the ones defined in the custom resources.
// See the following page: https://docs.openshift.com/container-platform/4.4/networking/enable-cluster-wide-proxy.html. See also the `proxyURL` fields.
// +optional
NonProxyHosts []string `json:"nonProxyHosts,omitempty"`
// The secret name that contains `user` and `password` for a proxy server.
// The secret must have a `app.kubernetes.io/part-of=che.eclipse.org` label.
@ -454,6 +476,7 @@ type Container struct {
Image string `json:"image,omitempty"`
// Image pull policy. Default value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.
// +optional
// +kubebuilder:validation:Enum=Always;IfNotPresent;Never
ImagePullPolicy corev1.PullPolicy `json:"imagePullPolicy,omitempty"`
// Compute resources required by this container.
// +optional

View File

@ -55,31 +55,10 @@ metadata:
"namespace": "eclipse-che"
},
"spec": {
"components": {
"database": {
"externalDb": false
},
"metrics": {
"enable": true
}
},
"devEnvironments": {
"defaultNamespace": {
"template": "<username>-che"
},
"storage": {
"pvcStrategy": "common"
}
},
"networking": {
"auth": {
"identityProviderURL": "",
"oAuthClientName": "",
"oAuthSecret": ""
},
"domain": "",
"tlsSecretName": ""
}
"components": {},
"containerRegistry": {},
"devEnvironments": {},
"networking": {}
}
}
]
@ -97,7 +76,7 @@ metadata:
operators.operatorframework.io/project_layout: go.kubebuilder.io/v3
repository: https://github.com/eclipse-che/che-operator
support: Eclipse Foundation
name: eclipse-che-preview-openshift.v7.50.0-568.next
name: eclipse-che-preview-openshift.v7.50.0-606.next
namespace: placeholder
spec:
apiservicedefinitions: {}
@ -1408,7 +1387,7 @@ spec:
maturity: stable
provider:
name: Eclipse Foundation
version: 7.50.0-568.next
version: 7.50.0-606.next
webhookdefinitions:
- admissionReviewVersions:
- v1

View File

@ -1283,9 +1283,26 @@ spec:
description: Desired configuration of Eclipse Che installation.
properties:
components:
default:
cheServer:
debug: false
logLevel: INFO
database:
credentialsSecretName: postgres-credentials
externalDb: false
postgresDb: dbche
postgresHostName: postgres
postgresPort: "5432"
pvc:
claimSize: 1Gi
metrics:
enable: true
description: Che components configuration.
properties:
cheServer:
default:
debug: false
logLevel: INFO
description: General configuration settings related to the Che
server.
properties:
@ -1301,6 +1318,7 @@ spec:
type: string
type: array
debug:
default: false
description: Enables the debug mode for Che server.
type: boolean
deployment:
@ -1320,6 +1338,10 @@ spec:
description: Image pull policy. Default value
is `Always` for `nightly`, `next` or `latest`
images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -1466,6 +1488,10 @@ spec:
description: Image pull policy. Default value
is `Always` for `nightly`, `next` or `latest`
images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -1547,6 +1573,14 @@ spec:
type: object
type: object
database:
default:
credentialsSecretName: postgres-credentials
externalDb: false
postgresDb: dbche
postgresHostName: postgres
postgresPort: "5432"
pvc:
claimSize: 1Gi
description: Configuration settings related to the database
used by the Che installation.
properties:
@ -1574,6 +1608,10 @@ spec:
description: Image pull policy. Default value
is `Always` for `nightly`, `next` or `latest`
images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -1644,6 +1682,7 @@ spec:
type: object
type: object
externalDb:
default: false
description: Instructs the Operator to deploy a dedicated
database. By default, a dedicated PostgreSQL database
is deployed as part of the Che installation. When `externalDb`
@ -1669,6 +1708,8 @@ spec:
See field `externalDb`.
type: string
pvc:
default:
claimSize: 1Gi
description: PVC settings for PostgreSQL database.
properties:
claimSize:
@ -1703,6 +1744,10 @@ spec:
description: Image pull policy. Default value
is `Always` for `nightly`, `next` or `latest`
images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -1798,6 +1843,10 @@ spec:
description: Image pull policy. Default value
is `Always` for `nightly`, `next` or `latest`
images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -1931,10 +1980,10 @@ spec:
nodeSelector:
type: string
type: object
required:
- enable
type: object
metrics:
default:
enable: true
description: Che server metrics configuration.
properties:
enable:
@ -1963,6 +2012,10 @@ spec:
description: Image pull policy. Default value
is `Always` for `nightly`, `next` or `latest`
images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -2067,16 +2120,25 @@ spec:
type: string
type: object
devEnvironments:
default:
defaultNamespace:
template: <username>-che
storage:
pvcStrategy: common
description: Development environment default configuration options.
properties:
defaultNamespace:
default:
template: <username>-che
description: User's default namespace.
properties:
template:
default: <username>-che
description: If you don't create the user namespaces in
advance, this field defines the Kubernetes namespace created
when you start your first workspace. You can use `<username>`,
`<userid>` and `<workspaceid>` placeholders, such as che-workspace-<username>.
when you start your first workspace. You can use `<username>`
and `<userid>` placeholders, such as che-workspace-<username>.
pattern: <username>|<userid>
type: string
type: object
defaultPlugins:
@ -2101,6 +2163,8 @@ spec:
the workspace pods.
type: object
storage:
default:
pvcStrategy: common
description: Workspaces persistent storage.
properties:
pvc:
@ -2122,6 +2186,9 @@ spec:
description: Persistent volume claim strategy for the Che
server. Only the `common` strategy (all workspaces PVCs
in one volume) is supported . For details, see https://github.com/eclipse/che/issues/21185.
enum:
- common
- per-workspace
type: string
type: object
tolerations:
@ -2180,6 +2247,12 @@ spec:
type: object
type: object
networking:
default:
auth:
gateway:
configLabels:
app: che
component: che-gateway-config
description: Networking, Che authentication, and TLS configuration.
properties:
annotations:
@ -2191,15 +2264,27 @@ spec:
"3600", nginx.ingress.kubernetes.io/ssl-redirect: "true"'
type: object
auth:
default:
gateway:
configLabels:
app: che
component: che-gateway-config
description: Authentication settings.
properties:
gateway:
default:
configLabels:
app: che
component: che-gateway-config
description: Gateway settings.
properties:
configLabels:
additionalProperties:
type: string
description: Gate configuration labels.
default:
app: che
component: che-gateway-config
description: Gateway configuration labels.
type: object
deployment:
description: 'Deployment override options. Since gateway
@ -2222,6 +2307,10 @@ spec:
description: Image pull policy. Default value
is `Always` for `nightly`, `next` or `latest`
images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.

View File

@ -1244,9 +1244,26 @@ spec:
description: Desired configuration of Eclipse Che installation.
properties:
components:
default:
cheServer:
debug: false
logLevel: INFO
database:
credentialsSecretName: postgres-credentials
externalDb: false
postgresDb: dbche
postgresHostName: postgres
postgresPort: "5432"
pvc:
claimSize: 1Gi
metrics:
enable: true
description: Che components configuration.
properties:
cheServer:
default:
debug: false
logLevel: INFO
description: General configuration settings related to the Che
server.
properties:
@ -1262,6 +1279,7 @@ spec:
type: string
type: array
debug:
default: false
description: Enables the debug mode for Che server.
type: boolean
deployment:
@ -1281,6 +1299,10 @@ spec:
description: Image pull policy. Default value is
`Always` for `nightly`, `next` or `latest` images,
and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -1425,6 +1447,10 @@ spec:
description: Image pull policy. Default value is
`Always` for `nightly`, `next` or `latest` images,
and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -1504,6 +1530,14 @@ spec:
type: object
type: object
database:
default:
credentialsSecretName: postgres-credentials
externalDb: false
postgresDb: dbche
postgresHostName: postgres
postgresPort: "5432"
pvc:
claimSize: 1Gi
description: Configuration settings related to the database used
by the Che installation.
properties:
@ -1531,6 +1565,10 @@ spec:
description: Image pull policy. Default value is
`Always` for `nightly`, `next` or `latest` images,
and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -1599,6 +1637,7 @@ spec:
type: object
type: object
externalDb:
default: false
description: Instructs the Operator to deploy a dedicated
database. By default, a dedicated PostgreSQL database is
deployed as part of the Che installation. When `externalDb`
@ -1624,6 +1663,8 @@ spec:
See field `externalDb`.
type: string
pvc:
default:
claimSize: 1Gi
description: PVC settings for PostgreSQL database.
properties:
claimSize:
@ -1658,6 +1699,10 @@ spec:
description: Image pull policy. Default value is
`Always` for `nightly`, `next` or `latest` images,
and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -1751,6 +1796,10 @@ spec:
description: Image pull policy. Default value is
`Always` for `nightly`, `next` or `latest` images,
and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -1882,10 +1931,10 @@ spec:
nodeSelector:
type: string
type: object
required:
- enable
type: object
metrics:
default:
enable: true
description: Che server metrics configuration.
properties:
enable:
@ -1914,6 +1963,10 @@ spec:
description: Image pull policy. Default value is
`Always` for `nightly`, `next` or `latest` images,
and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -2016,16 +2069,25 @@ spec:
type: string
type: object
devEnvironments:
default:
defaultNamespace:
template: <username>-che
storage:
pvcStrategy: common
description: Development environment default configuration options.
properties:
defaultNamespace:
default:
template: <username>-che
description: User's default namespace.
properties:
template:
default: <username>-che
description: If you don't create the user namespaces in advance,
this field defines the Kubernetes namespace created when
you start your first workspace. You can use `<username>`,
`<userid>` and `<workspaceid>` placeholders, such as che-workspace-<username>.
you start your first workspace. You can use `<username>`
and `<userid>` placeholders, such as che-workspace-<username>.
pattern: <username>|<userid>
type: string
type: object
defaultPlugins:
@ -2049,6 +2111,8 @@ spec:
workspace pods.
type: object
storage:
default:
pvcStrategy: common
description: Workspaces persistent storage.
properties:
pvc:
@ -2070,6 +2134,9 @@ spec:
description: Persistent volume claim strategy for the Che
server. Only the `common` strategy (all workspaces PVCs
in one volume) is supported . For details, see https://github.com/eclipse/che/issues/21185.
enum:
- common
- per-workspace
type: string
type: object
tolerations:
@ -2127,6 +2194,12 @@ spec:
type: object
type: object
networking:
default:
auth:
gateway:
configLabels:
app: che
component: che-gateway-config
description: Networking, Che authentication, and TLS configuration.
properties:
annotations:
@ -2138,15 +2211,27 @@ spec:
"3600", nginx.ingress.kubernetes.io/ssl-redirect: "true"'
type: object
auth:
default:
gateway:
configLabels:
app: che
component: che-gateway-config
description: Authentication settings.
properties:
gateway:
default:
configLabels:
app: che
component: che-gateway-config
description: Gateway settings.
properties:
configLabels:
additionalProperties:
type: string
description: Gate configuration labels.
default:
app: che
component: che-gateway-config
description: Gateway configuration labels.
type: object
deployment:
description: 'Deployment override options. Since gateway
@ -2168,6 +2253,10 @@ spec:
description: Image pull policy. Default value
is `Always` for `nightly`, `next` or `latest`
images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.

View File

@ -16,20 +16,7 @@ metadata:
name: eclipse-che
namespace: eclipse-che
spec:
devEnvironments:
defaultNamespace:
template: '<username>-che'
storage:
pvcStrategy: 'common'
components:
database:
externalDb: false
metrics:
enable: true
networking:
domain: ''
tlsSecretName: ''
auth:
identityProviderURL: ''
oAuthClientName: ''
oAuthSecret: ''
components: {}
devEnvironments: {}
networking: {}
containerRegistry: {}

View File

@ -14,7 +14,6 @@ package che
import (
"fmt"
"strings"
"github.com/devfile/devworkspace-operator/pkg/infrastructure"
"github.com/eclipse-che/che-operator/pkg/common/chetypes"
@ -22,15 +21,9 @@ import (
"sigs.k8s.io/controller-runtime/pkg/reconcile"
)
const (
NamespaceStrategyErrorMessage = "Namespace strategies other than 'per user' is not supported anymore. Using the <username> or <userid> placeholder is required in the 'spec.server.workspaceNamespaceDefault' field. The current value is: %s"
)
// CheClusterValidator checks CheCluster CR configuration.
// It detect:
// It detects:
// - configurations which miss required field(s) to deploy Che
// - self-contradictory configurations
// - configurations with which it is impossible to deploy Che
type CheClusterValidator struct {
deploy.Reconcilable
}
@ -46,11 +39,6 @@ func (v *CheClusterValidator) Reconcile(ctx *chetypes.DeployContext) (reconcile.
}
}
workspaceNamespaceDefault := ctx.CheCluster.GetDefaultNamespace()
if strings.Index(workspaceNamespaceDefault, "<username>") == -1 && strings.Index(workspaceNamespaceDefault, "<userid>") == -1 {
return reconcile.Result{}, false, fmt.Errorf(NamespaceStrategyErrorMessage, workspaceNamespaceDefault)
}
return reconcile.Result{}, true, nil
}

View File

@ -795,9 +795,26 @@ spec:
description: Desired configuration of Eclipse Che installation.
properties:
components:
default:
cheServer:
debug: false
logLevel: INFO
database:
credentialsSecretName: postgres-credentials
externalDb: false
postgresDb: dbche
postgresHostName: postgres
postgresPort: "5432"
pvc:
claimSize: 1Gi
metrics:
enable: true
description: Che components configuration.
properties:
cheServer:
default:
debug: false
logLevel: INFO
description: General configuration settings related to the Che server.
properties:
clusterRoles:
@ -806,6 +823,7 @@ spec:
type: string
type: array
debug:
default: false
description: Enables the debug mode for Che server.
type: boolean
deployment:
@ -821,6 +839,10 @@ spec:
type: string
imagePullPolicy:
description: Image pull policy. Default value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -924,6 +946,10 @@ spec:
type: string
imagePullPolicy:
description: Image pull policy. Default value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -995,6 +1021,14 @@ spec:
type: object
type: object
database:
default:
credentialsSecretName: postgres-credentials
externalDb: false
postgresDb: dbche
postgresHostName: postgres
postgresPort: "5432"
pvc:
claimSize: 1Gi
description: Configuration settings related to the database used by the Che installation.
properties:
credentialsSecretName:
@ -1014,6 +1048,10 @@ spec:
type: string
imagePullPolicy:
description: Image pull policy. Default value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -1074,6 +1112,7 @@ spec:
type: object
type: object
externalDb:
default: false
description: Instructs the Operator to deploy a dedicated database. By default, a dedicated PostgreSQL database is deployed as part of the Che installation. When `externalDb` is set as `true`, no dedicated database is deployed by the Operator and you need to provide connection details about the external database you want to use.
type: boolean
postgresDb:
@ -1089,6 +1128,8 @@ spec:
description: PostgreSQL Database port the Che server connects to. Override this value only when using an external database. See field `externalDb`.
type: string
pvc:
default:
claimSize: 1Gi
description: PVC settings for PostgreSQL database.
properties:
claimSize:
@ -1115,6 +1156,10 @@ spec:
type: string
imagePullPolicy:
description: Image pull policy. Default value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -1194,6 +1239,10 @@ spec:
type: string
imagePullPolicy:
description: Image pull policy. Default value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -1303,10 +1352,10 @@ spec:
nodeSelector:
type: string
type: object
required:
- enable
type: object
metrics:
default:
enable: true
description: Che server metrics configuration.
properties:
enable:
@ -1330,6 +1379,10 @@ spec:
type: string
imagePullPolicy:
description: Image pull policy. Default value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -1415,13 +1468,22 @@ spec:
type: string
type: object
devEnvironments:
default:
defaultNamespace:
template: <username>-che
storage:
pvcStrategy: common
description: Development environment default configuration options.
properties:
defaultNamespace:
default:
template: <username>-che
description: User's default namespace.
properties:
template:
description: If you don't create the user namespaces in advance, this field defines the Kubernetes namespace created when you start your first workspace. You can use `<username>`, `<userid>` and `<workspaceid>` placeholders, such as che-workspace-<username>.
default: <username>-che
description: If you don't create the user namespaces in advance, this field defines the Kubernetes namespace created when you start your first workspace. You can use `<username>` and `<userid>` placeholders, such as che-workspace-<username>.
pattern: <username>|<userid>
type: string
type: object
defaultPlugins:
@ -1444,6 +1506,8 @@ spec:
description: The node selector limits the nodes that can run the workspace pods.
type: object
storage:
default:
pvcStrategy: common
description: Workspaces persistent storage.
properties:
pvc:
@ -1459,6 +1523,9 @@ spec:
pvcStrategy:
default: common
description: Persistent volume claim strategy for the Che server. Only the `common` strategy (all workspaces PVCs in one volume) is supported . For details, see https://github.com/eclipse/che/issues/21185.
enum:
- common
- per-workspace
type: string
type: object
tolerations:
@ -1493,6 +1560,12 @@ spec:
type: object
type: object
networking:
default:
auth:
gateway:
configLabels:
app: che
component: che-gateway-config
description: Networking, Che authentication, and TLS configuration.
properties:
annotations:
@ -1501,15 +1574,27 @@ spec:
description: 'Defines annotations which will be set for an Ingress (a route for OpenShift platform). The defaults for kubernetes platforms are: kubernetes.io/ingress.class: "nginx" nginx.ingress.kubernetes.io/proxy-read-timeout: "3600", nginx.ingress.kubernetes.io/proxy-connect-timeout: "3600", nginx.ingress.kubernetes.io/ssl-redirect: "true"'
type: object
auth:
default:
gateway:
configLabels:
app: che
component: che-gateway-config
description: Authentication settings.
properties:
gateway:
default:
configLabels:
app: che
component: che-gateway-config
description: Gateway settings.
properties:
configLabels:
additionalProperties:
type: string
description: Gate configuration labels.
default:
app: che
component: che-gateway-config
description: Gateway configuration labels.
type: object
deployment:
description: 'Deployment override options. Since gateway deployment consists of several containers, they must be distinguished in the configuration by their names: - `gateway` - `configbump` - `oauth-proxy` - `kube-rbac-proxy`'
@ -1524,6 +1609,10 @@ spec:
type: string
imagePullPolicy:
description: Image pull policy. Default value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.

View File

@ -790,9 +790,26 @@ spec:
description: Desired configuration of Eclipse Che installation.
properties:
components:
default:
cheServer:
debug: false
logLevel: INFO
database:
credentialsSecretName: postgres-credentials
externalDb: false
postgresDb: dbche
postgresHostName: postgres
postgresPort: "5432"
pvc:
claimSize: 1Gi
metrics:
enable: true
description: Che components configuration.
properties:
cheServer:
default:
debug: false
logLevel: INFO
description: General configuration settings related to the Che server.
properties:
clusterRoles:
@ -801,6 +818,7 @@ spec:
type: string
type: array
debug:
default: false
description: Enables the debug mode for Che server.
type: boolean
deployment:
@ -816,6 +834,10 @@ spec:
type: string
imagePullPolicy:
description: Image pull policy. Default value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -919,6 +941,10 @@ spec:
type: string
imagePullPolicy:
description: Image pull policy. Default value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -990,6 +1016,14 @@ spec:
type: object
type: object
database:
default:
credentialsSecretName: postgres-credentials
externalDb: false
postgresDb: dbche
postgresHostName: postgres
postgresPort: "5432"
pvc:
claimSize: 1Gi
description: Configuration settings related to the database used by the Che installation.
properties:
credentialsSecretName:
@ -1009,6 +1043,10 @@ spec:
type: string
imagePullPolicy:
description: Image pull policy. Default value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -1069,6 +1107,7 @@ spec:
type: object
type: object
externalDb:
default: false
description: Instructs the Operator to deploy a dedicated database. By default, a dedicated PostgreSQL database is deployed as part of the Che installation. When `externalDb` is set as `true`, no dedicated database is deployed by the Operator and you need to provide connection details about the external database you want to use.
type: boolean
postgresDb:
@ -1084,6 +1123,8 @@ spec:
description: PostgreSQL Database port the Che server connects to. Override this value only when using an external database. See field `externalDb`.
type: string
pvc:
default:
claimSize: 1Gi
description: PVC settings for PostgreSQL database.
properties:
claimSize:
@ -1110,6 +1151,10 @@ spec:
type: string
imagePullPolicy:
description: Image pull policy. Default value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -1189,6 +1234,10 @@ spec:
type: string
imagePullPolicy:
description: Image pull policy. Default value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -1298,10 +1347,10 @@ spec:
nodeSelector:
type: string
type: object
required:
- enable
type: object
metrics:
default:
enable: true
description: Che server metrics configuration.
properties:
enable:
@ -1325,6 +1374,10 @@ spec:
type: string
imagePullPolicy:
description: Image pull policy. Default value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -1410,13 +1463,22 @@ spec:
type: string
type: object
devEnvironments:
default:
defaultNamespace:
template: <username>-che
storage:
pvcStrategy: common
description: Development environment default configuration options.
properties:
defaultNamespace:
default:
template: <username>-che
description: User's default namespace.
properties:
template:
description: If you don't create the user namespaces in advance, this field defines the Kubernetes namespace created when you start your first workspace. You can use `<username>`, `<userid>` and `<workspaceid>` placeholders, such as che-workspace-<username>.
default: <username>-che
description: If you don't create the user namespaces in advance, this field defines the Kubernetes namespace created when you start your first workspace. You can use `<username>` and `<userid>` placeholders, such as che-workspace-<username>.
pattern: <username>|<userid>
type: string
type: object
defaultPlugins:
@ -1439,6 +1501,8 @@ spec:
description: The node selector limits the nodes that can run the workspace pods.
type: object
storage:
default:
pvcStrategy: common
description: Workspaces persistent storage.
properties:
pvc:
@ -1454,6 +1518,9 @@ spec:
pvcStrategy:
default: common
description: Persistent volume claim strategy for the Che server. Only the `common` strategy (all workspaces PVCs in one volume) is supported . For details, see https://github.com/eclipse/che/issues/21185.
enum:
- common
- per-workspace
type: string
type: object
tolerations:
@ -1488,6 +1555,12 @@ spec:
type: object
type: object
networking:
default:
auth:
gateway:
configLabels:
app: che
component: che-gateway-config
description: Networking, Che authentication, and TLS configuration.
properties:
annotations:
@ -1496,15 +1569,27 @@ spec:
description: 'Defines annotations which will be set for an Ingress (a route for OpenShift platform). The defaults for kubernetes platforms are: kubernetes.io/ingress.class: "nginx" nginx.ingress.kubernetes.io/proxy-read-timeout: "3600", nginx.ingress.kubernetes.io/proxy-connect-timeout: "3600", nginx.ingress.kubernetes.io/ssl-redirect: "true"'
type: object
auth:
default:
gateway:
configLabels:
app: che
component: che-gateway-config
description: Authentication settings.
properties:
gateway:
default:
configLabels:
app: che
component: che-gateway-config
description: Gateway settings.
properties:
configLabels:
additionalProperties:
type: string
description: Gate configuration labels.
default:
app: che
component: che-gateway-config
description: Gateway configuration labels.
type: object
deployment:
description: 'Deployment override options. Since gateway deployment consists of several containers, they must be distinguished in the configuration by their names: - `gateway` - `configbump` - `oauth-proxy` - `kube-rbac-proxy`'
@ -1519,6 +1604,10 @@ spec:
type: string
imagePullPolicy:
description: Image pull policy. Default value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.

View File

@ -16,20 +16,7 @@ metadata:
name: eclipse-che
namespace: eclipse-che
spec:
devEnvironments:
defaultNamespace:
template: '<username>-che'
storage:
pvcStrategy: 'common'
components:
database:
externalDb: false
metrics:
enable: true
networking:
domain: ''
tlsSecretName: ''
auth:
identityProviderURL: ''
oAuthClientName: ''
oAuthSecret: ''
components: {}
devEnvironments: {}
networking: {}
containerRegistry: {}

View File

@ -795,9 +795,26 @@ spec:
description: Desired configuration of Eclipse Che installation.
properties:
components:
default:
cheServer:
debug: false
logLevel: INFO
database:
credentialsSecretName: postgres-credentials
externalDb: false
postgresDb: dbche
postgresHostName: postgres
postgresPort: "5432"
pvc:
claimSize: 1Gi
metrics:
enable: true
description: Che components configuration.
properties:
cheServer:
default:
debug: false
logLevel: INFO
description: General configuration settings related to the Che server.
properties:
clusterRoles:
@ -806,6 +823,7 @@ spec:
type: string
type: array
debug:
default: false
description: Enables the debug mode for Che server.
type: boolean
deployment:
@ -821,6 +839,10 @@ spec:
type: string
imagePullPolicy:
description: Image pull policy. Default value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -924,6 +946,10 @@ spec:
type: string
imagePullPolicy:
description: Image pull policy. Default value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -995,6 +1021,14 @@ spec:
type: object
type: object
database:
default:
credentialsSecretName: postgres-credentials
externalDb: false
postgresDb: dbche
postgresHostName: postgres
postgresPort: "5432"
pvc:
claimSize: 1Gi
description: Configuration settings related to the database used by the Che installation.
properties:
credentialsSecretName:
@ -1014,6 +1048,10 @@ spec:
type: string
imagePullPolicy:
description: Image pull policy. Default value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -1074,6 +1112,7 @@ spec:
type: object
type: object
externalDb:
default: false
description: Instructs the Operator to deploy a dedicated database. By default, a dedicated PostgreSQL database is deployed as part of the Che installation. When `externalDb` is set as `true`, no dedicated database is deployed by the Operator and you need to provide connection details about the external database you want to use.
type: boolean
postgresDb:
@ -1089,6 +1128,8 @@ spec:
description: PostgreSQL Database port the Che server connects to. Override this value only when using an external database. See field `externalDb`.
type: string
pvc:
default:
claimSize: 1Gi
description: PVC settings for PostgreSQL database.
properties:
claimSize:
@ -1115,6 +1156,10 @@ spec:
type: string
imagePullPolicy:
description: Image pull policy. Default value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -1194,6 +1239,10 @@ spec:
type: string
imagePullPolicy:
description: Image pull policy. Default value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -1303,10 +1352,10 @@ spec:
nodeSelector:
type: string
type: object
required:
- enable
type: object
metrics:
default:
enable: true
description: Che server metrics configuration.
properties:
enable:
@ -1330,6 +1379,10 @@ spec:
type: string
imagePullPolicy:
description: Image pull policy. Default value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -1415,13 +1468,22 @@ spec:
type: string
type: object
devEnvironments:
default:
defaultNamespace:
template: <username>-che
storage:
pvcStrategy: common
description: Development environment default configuration options.
properties:
defaultNamespace:
default:
template: <username>-che
description: User's default namespace.
properties:
template:
description: If you don't create the user namespaces in advance, this field defines the Kubernetes namespace created when you start your first workspace. You can use `<username>`, `<userid>` and `<workspaceid>` placeholders, such as che-workspace-<username>.
default: <username>-che
description: If you don't create the user namespaces in advance, this field defines the Kubernetes namespace created when you start your first workspace. You can use `<username>` and `<userid>` placeholders, such as che-workspace-<username>.
pattern: <username>|<userid>
type: string
type: object
defaultPlugins:
@ -1444,6 +1506,8 @@ spec:
description: The node selector limits the nodes that can run the workspace pods.
type: object
storage:
default:
pvcStrategy: common
description: Workspaces persistent storage.
properties:
pvc:
@ -1459,6 +1523,9 @@ spec:
pvcStrategy:
default: common
description: Persistent volume claim strategy for the Che server. Only the `common` strategy (all workspaces PVCs in one volume) is supported . For details, see https://github.com/eclipse/che/issues/21185.
enum:
- common
- per-workspace
type: string
type: object
tolerations:
@ -1493,6 +1560,12 @@ spec:
type: object
type: object
networking:
default:
auth:
gateway:
configLabels:
app: che
component: che-gateway-config
description: Networking, Che authentication, and TLS configuration.
properties:
annotations:
@ -1501,15 +1574,27 @@ spec:
description: 'Defines annotations which will be set for an Ingress (a route for OpenShift platform). The defaults for kubernetes platforms are: kubernetes.io/ingress.class: "nginx" nginx.ingress.kubernetes.io/proxy-read-timeout: "3600", nginx.ingress.kubernetes.io/proxy-connect-timeout: "3600", nginx.ingress.kubernetes.io/ssl-redirect: "true"'
type: object
auth:
default:
gateway:
configLabels:
app: che
component: che-gateway-config
description: Authentication settings.
properties:
gateway:
default:
configLabels:
app: che
component: che-gateway-config
description: Gateway settings.
properties:
configLabels:
additionalProperties:
type: string
description: Gate configuration labels.
default:
app: che
component: che-gateway-config
description: Gateway configuration labels.
type: object
deployment:
description: 'Deployment override options. Since gateway deployment consists of several containers, they must be distinguished in the configuration by their names: - `gateway` - `configbump` - `oauth-proxy` - `kube-rbac-proxy`'
@ -1524,6 +1609,10 @@ spec:
type: string
imagePullPolicy:
description: Image pull policy. Default value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.

View File

@ -790,9 +790,26 @@ spec:
description: Desired configuration of Eclipse Che installation.
properties:
components:
default:
cheServer:
debug: false
logLevel: INFO
database:
credentialsSecretName: postgres-credentials
externalDb: false
postgresDb: dbche
postgresHostName: postgres
postgresPort: "5432"
pvc:
claimSize: 1Gi
metrics:
enable: true
description: Che components configuration.
properties:
cheServer:
default:
debug: false
logLevel: INFO
description: General configuration settings related to the Che server.
properties:
clusterRoles:
@ -801,6 +818,7 @@ spec:
type: string
type: array
debug:
default: false
description: Enables the debug mode for Che server.
type: boolean
deployment:
@ -816,6 +834,10 @@ spec:
type: string
imagePullPolicy:
description: Image pull policy. Default value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -919,6 +941,10 @@ spec:
type: string
imagePullPolicy:
description: Image pull policy. Default value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -990,6 +1016,14 @@ spec:
type: object
type: object
database:
default:
credentialsSecretName: postgres-credentials
externalDb: false
postgresDb: dbche
postgresHostName: postgres
postgresPort: "5432"
pvc:
claimSize: 1Gi
description: Configuration settings related to the database used by the Che installation.
properties:
credentialsSecretName:
@ -1009,6 +1043,10 @@ spec:
type: string
imagePullPolicy:
description: Image pull policy. Default value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -1069,6 +1107,7 @@ spec:
type: object
type: object
externalDb:
default: false
description: Instructs the Operator to deploy a dedicated database. By default, a dedicated PostgreSQL database is deployed as part of the Che installation. When `externalDb` is set as `true`, no dedicated database is deployed by the Operator and you need to provide connection details about the external database you want to use.
type: boolean
postgresDb:
@ -1084,6 +1123,8 @@ spec:
description: PostgreSQL Database port the Che server connects to. Override this value only when using an external database. See field `externalDb`.
type: string
pvc:
default:
claimSize: 1Gi
description: PVC settings for PostgreSQL database.
properties:
claimSize:
@ -1110,6 +1151,10 @@ spec:
type: string
imagePullPolicy:
description: Image pull policy. Default value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -1189,6 +1234,10 @@ spec:
type: string
imagePullPolicy:
description: Image pull policy. Default value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -1298,10 +1347,10 @@ spec:
nodeSelector:
type: string
type: object
required:
- enable
type: object
metrics:
default:
enable: true
description: Che server metrics configuration.
properties:
enable:
@ -1325,6 +1374,10 @@ spec:
type: string
imagePullPolicy:
description: Image pull policy. Default value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -1410,13 +1463,22 @@ spec:
type: string
type: object
devEnvironments:
default:
defaultNamespace:
template: <username>-che
storage:
pvcStrategy: common
description: Development environment default configuration options.
properties:
defaultNamespace:
default:
template: <username>-che
description: User's default namespace.
properties:
template:
description: If you don't create the user namespaces in advance, this field defines the Kubernetes namespace created when you start your first workspace. You can use `<username>`, `<userid>` and `<workspaceid>` placeholders, such as che-workspace-<username>.
default: <username>-che
description: If you don't create the user namespaces in advance, this field defines the Kubernetes namespace created when you start your first workspace. You can use `<username>` and `<userid>` placeholders, such as che-workspace-<username>.
pattern: <username>|<userid>
type: string
type: object
defaultPlugins:
@ -1439,6 +1501,8 @@ spec:
description: The node selector limits the nodes that can run the workspace pods.
type: object
storage:
default:
pvcStrategy: common
description: Workspaces persistent storage.
properties:
pvc:
@ -1454,6 +1518,9 @@ spec:
pvcStrategy:
default: common
description: Persistent volume claim strategy for the Che server. Only the `common` strategy (all workspaces PVCs in one volume) is supported . For details, see https://github.com/eclipse/che/issues/21185.
enum:
- common
- per-workspace
type: string
type: object
tolerations:
@ -1488,6 +1555,12 @@ spec:
type: object
type: object
networking:
default:
auth:
gateway:
configLabels:
app: che
component: che-gateway-config
description: Networking, Che authentication, and TLS configuration.
properties:
annotations:
@ -1496,15 +1569,27 @@ spec:
description: 'Defines annotations which will be set for an Ingress (a route for OpenShift platform). The defaults for kubernetes platforms are: kubernetes.io/ingress.class: "nginx" nginx.ingress.kubernetes.io/proxy-read-timeout: "3600", nginx.ingress.kubernetes.io/proxy-connect-timeout: "3600", nginx.ingress.kubernetes.io/ssl-redirect: "true"'
type: object
auth:
default:
gateway:
configLabels:
app: che
component: che-gateway-config
description: Authentication settings.
properties:
gateway:
default:
configLabels:
app: che
component: che-gateway-config
description: Gateway settings.
properties:
configLabels:
additionalProperties:
type: string
description: Gate configuration labels.
default:
app: che
component: che-gateway-config
description: Gateway configuration labels.
type: object
deployment:
description: 'Deployment override options. Since gateway deployment consists of several containers, they must be distinguished in the configuration by their names: - `gateway` - `configbump` - `oauth-proxy` - `kube-rbac-proxy`'
@ -1519,6 +1604,10 @@ spec:
type: string
imagePullPolicy:
description: Image pull policy. Default value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.

View File

@ -16,20 +16,7 @@ metadata:
name: eclipse-che
namespace: eclipse-che
spec:
devEnvironments:
defaultNamespace:
template: '<username>-che'
storage:
pvcStrategy: 'common'
components:
database:
externalDb: false
metrics:
enable: true
networking:
domain: ''
tlsSecretName: ''
auth:
identityProviderURL: ''
oAuthClientName: ''
oAuthSecret: ''
components: {}
devEnvironments: {}
networking: {}
containerRegistry: {}

View File

@ -790,9 +790,26 @@ spec:
description: Desired configuration of Eclipse Che installation.
properties:
components:
default:
cheServer:
debug: false
logLevel: INFO
database:
credentialsSecretName: postgres-credentials
externalDb: false
postgresDb: dbche
postgresHostName: postgres
postgresPort: "5432"
pvc:
claimSize: 1Gi
metrics:
enable: true
description: Che components configuration.
properties:
cheServer:
default:
debug: false
logLevel: INFO
description: General configuration settings related to the Che server.
properties:
clusterRoles:
@ -801,6 +818,7 @@ spec:
type: string
type: array
debug:
default: false
description: Enables the debug mode for Che server.
type: boolean
deployment:
@ -816,6 +834,10 @@ spec:
type: string
imagePullPolicy:
description: Image pull policy. Default value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -919,6 +941,10 @@ spec:
type: string
imagePullPolicy:
description: Image pull policy. Default value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -990,6 +1016,14 @@ spec:
type: object
type: object
database:
default:
credentialsSecretName: postgres-credentials
externalDb: false
postgresDb: dbche
postgresHostName: postgres
postgresPort: "5432"
pvc:
claimSize: 1Gi
description: Configuration settings related to the database used by the Che installation.
properties:
credentialsSecretName:
@ -1009,6 +1043,10 @@ spec:
type: string
imagePullPolicy:
description: Image pull policy. Default value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -1069,6 +1107,7 @@ spec:
type: object
type: object
externalDb:
default: false
description: Instructs the Operator to deploy a dedicated database. By default, a dedicated PostgreSQL database is deployed as part of the Che installation. When `externalDb` is set as `true`, no dedicated database is deployed by the Operator and you need to provide connection details about the external database you want to use.
type: boolean
postgresDb:
@ -1084,6 +1123,8 @@ spec:
description: PostgreSQL Database port the Che server connects to. Override this value only when using an external database. See field `externalDb`.
type: string
pvc:
default:
claimSize: 1Gi
description: PVC settings for PostgreSQL database.
properties:
claimSize:
@ -1110,6 +1151,10 @@ spec:
type: string
imagePullPolicy:
description: Image pull policy. Default value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -1189,6 +1234,10 @@ spec:
type: string
imagePullPolicy:
description: Image pull policy. Default value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -1298,10 +1347,10 @@ spec:
nodeSelector:
type: string
type: object
required:
- enable
type: object
metrics:
default:
enable: true
description: Che server metrics configuration.
properties:
enable:
@ -1325,6 +1374,10 @@ spec:
type: string
imagePullPolicy:
description: Image pull policy. Default value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.
@ -1410,13 +1463,22 @@ spec:
type: string
type: object
devEnvironments:
default:
defaultNamespace:
template: <username>-che
storage:
pvcStrategy: common
description: Development environment default configuration options.
properties:
defaultNamespace:
default:
template: <username>-che
description: User's default namespace.
properties:
template:
description: If you don't create the user namespaces in advance, this field defines the Kubernetes namespace created when you start your first workspace. You can use `<username>`, `<userid>` and `<workspaceid>` placeholders, such as che-workspace-<username>.
default: <username>-che
description: If you don't create the user namespaces in advance, this field defines the Kubernetes namespace created when you start your first workspace. You can use `<username>` and `<userid>` placeholders, such as che-workspace-<username>.
pattern: <username>|<userid>
type: string
type: object
defaultPlugins:
@ -1439,6 +1501,8 @@ spec:
description: The node selector limits the nodes that can run the workspace pods.
type: object
storage:
default:
pvcStrategy: common
description: Workspaces persistent storage.
properties:
pvc:
@ -1454,6 +1518,9 @@ spec:
pvcStrategy:
default: common
description: Persistent volume claim strategy for the Che server. Only the `common` strategy (all workspaces PVCs in one volume) is supported . For details, see https://github.com/eclipse/che/issues/21185.
enum:
- common
- per-workspace
type: string
type: object
tolerations:
@ -1488,6 +1555,12 @@ spec:
type: object
type: object
networking:
default:
auth:
gateway:
configLabels:
app: che
component: che-gateway-config
description: Networking, Che authentication, and TLS configuration.
properties:
annotations:
@ -1496,15 +1569,27 @@ spec:
description: 'Defines annotations which will be set for an Ingress (a route for OpenShift platform). The defaults for kubernetes platforms are: kubernetes.io/ingress.class: "nginx" nginx.ingress.kubernetes.io/proxy-read-timeout: "3600", nginx.ingress.kubernetes.io/proxy-connect-timeout: "3600", nginx.ingress.kubernetes.io/ssl-redirect: "true"'
type: object
auth:
default:
gateway:
configLabels:
app: che
component: che-gateway-config
description: Authentication settings.
properties:
gateway:
default:
configLabels:
app: che
component: che-gateway-config
description: Gateway settings.
properties:
configLabels:
additionalProperties:
type: string
description: Gate configuration labels.
default:
app: che
component: che-gateway-config
description: Gateway configuration labels.
type: object
deployment:
description: 'Deployment override options. Since gateway deployment consists of several containers, they must be distinguished in the configuration by their names: - `gateway` - `configbump` - `oauth-proxy` - `kube-rbac-proxy`'
@ -1519,6 +1604,10 @@ spec:
type: string
imagePullPolicy:
description: Image pull policy. Default value is `Always` for `nightly`, `next` or `latest` images, and `IfNotPresent` in other cases.
enum:
- Always
- IfNotPresent
- Never
type: string
name:
description: Container name.

View File

@ -16,20 +16,13 @@ metadata:
name: eclipse-che
namespace: eclipse-che
spec:
devEnvironments:
defaultNamespace:
template: '<username>-che'
storage:
pvcStrategy: 'common'
components:
database:
externalDb: false
metrics:
enable: true
components: {}
devEnvironments: {}
networking:
tlsSecretName: che-tls
domain: '{{ .Values.networking.domain }}'
tlsSecretName: 'che-tls'
auth:
identityProviderURL: '{{ .Values.networking.auth.identityProviderURL }}'
oAuthClientName: '{{ .Values.networking.auth.oAuthClientName }}'
oAuthSecret: '{{ .Values.networking.auth.oAuthSecret }}'
oAuthClientName: '{{ .Values.networking.auth.oAuthClientName }}'
identityProviderURL: '{{ .Values.networking.auth.identityProviderURL }}'
containerRegistry: {}

View File

@ -16,8 +16,8 @@ import (
"context"
"fmt"
"io"
"os"
"github.com/eclipse-che/che-operator/pkg/common/test"
"k8s.io/client-go/kubernetes/fake"
"github.com/sirupsen/logrus"
@ -42,7 +42,7 @@ func New() *K8sHelper {
return k8sHelper
}
if test.IsTestMode() {
if isTestMode() {
return initializeForTesting()
}
@ -181,3 +181,6 @@ func initialize() *K8sHelper {
return k8sHelper
}
func isTestMode() bool {
return len(os.Getenv("MOCK_API")) != 0
}