Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Run dashboard in a dedicated deployment with helm chart #18093

Merged
merged 8 commits into from
Oct 19, 2020
6 changes: 1 addition & 5 deletions .ci/set_tag_version_images_linux.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,6 @@
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html

sed -i "s/DEFAULT_PLUGIN_REGISTRY_IMAGE_TAG=\".*\"/DEFAULT_PLUGIN_REGISTRY_IMAGE_TAG=\"$1\"/g" ../deploy/openshift/deploy_che.sh
sed -i "s/DEFAULT_DEVFILE_REGISTRY_IMAGE_TAG=\".*\"/DEFAULT_DEVFILE_REGISTRY_IMAGE_TAG=\"$1\"/g" ../deploy/openshift/deploy_che.sh
sed -i "s/DEFAULT_CHE_IMAGE_TAG=\".*\"/DEFAULT_CHE_IMAGE_TAG=\"$1\"/g" ../deploy/openshift/deploy_che.sh
sed -i "s/DEFAULT_KEYCLOAK_IMAGE_TAG=\".*\"/DEFAULT_KEYCLOAK_IMAGE_TAG=\"$1\"/g" ../deploy/openshift/deploy_che.sh

sed -i "s/che.factory.default_editor=eclipse\/che-theia\/.*/che.factory.default_editor=eclipse\/che-theia\/$1/g" ../assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/classes/che/che.properties
sed -i "s/che.factory.default_plugins=eclipse\/che-machine-exec-plugin\/.*/che.factory.default_plugins=eclipse\/che-machine-exec-plugin\/$1/g" ../assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/classes/che/che.properties
sed -i "s/che.workspace.devfile.default_editor=eclipse\/che-theia\/.*/che.workspace.devfile.default_editor=eclipse\/che-theia\/$1/g" ../assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/classes/che/che.properties
Expand All @@ -20,6 +15,7 @@ sed -i "s/che-devfile-registry:.*/che-devfile-registry:$1/g" ../deploy/kubernete
sed -i "s/che-postgres:.*/che-postgres:$1/g" ../deploy/kubernetes/helm/che/custom-charts/che-postgres/values.yaml
sed -i "s/che-keycloak:.*/che-keycloak:$1/g" ../deploy/kubernetes/helm/che/custom-charts/che-keycloak/values.yaml
sed -i "s/eclipse\/che-server:.*/eclipse\/che-server:$1/g" ../deploy/kubernetes/helm/che/values.yaml
sed -i "s/eclipse\/che-dashboard:.*/eclipse\/che-dashboard:$1/g" ../deploy/kubernetes/helm/che/values.yaml
sleshchenko marked this conversation as resolved.
Show resolved Hide resolved

sed -i "s/che-endpoint-watcher:nightly/che-endpoint-watcher:$1/g" ../deploy/kubernetes/helm/che/custom-charts/che-keycloak/templates/deployment.yaml
sed -i "s/che-endpoint-watcher:nightly/che-endpoint-watcher:$1/g" ../deploy/kubernetes/helm/che/templates/deployment.yaml
6 changes: 1 addition & 5 deletions .ci/set_tag_version_images_macos.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,6 @@
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html

sed -i '' "s/DEFAULT_PLUGIN_REGISTRY_IMAGE_TAG=\"nightly\"/DEFAULT_PLUGIN_REGISTRY_IMAGE_TAG=\"$1\"/g" ../deploy/openshift/deploy_che.sh
sed -i '' "s/DEFAULT_DEVFILE_REGISTRY_IMAGE_TAG=\"nightly\"/DEFAULT_PLUGIN_REGISTRY_IMAGE_TAG=\"$1\"/g" ../deploy/openshift/deploy_che.sh
sed -i '' "s/DEFAULT_CHE_IMAGE_TAG=\"nightly\"/DEFAULT_PLUGIN_REGISTRY_IMAGE_TAG=\"$1\"/g" ../deploy/openshift/deploy_che.sh
sed -i '' "s/DEFAULT_KEYCLOAK_IMAGE_TAG=\"nightly\"/DEFAULT_PLUGIN_REGISTRY_IMAGE_TAG=\"$1\"/g" ../deploy/openshift/deploy_che.sh

sed -i '' "s/che.factory.default_editor=eclipse\/che-theia\/next/che.factory.default_editor=eclipse\/che-theia\/$1/g" ../assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/classes/che/che.properties
sed -i '' "s/che.factory.default_plugins=eclipse\/che-machine-exec-plugin\/nightly/che.factory.default_plugins=eclipse\/che-machine-exec-plugin\/$1/g" ../assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/classes/che/che.properties
sed -i '' "s/che.workspace.devfile.default_editor=eclipse\/che-theia\/next/che.workspace.devfile.default_editor=eclipse\/che-theia\/$1/g" ../assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/classes/che/che.properties
Expand All @@ -20,5 +15,6 @@ sed -i '' "s/che-devfile-registry:nightly/che-devfile-registry:$1/g" ../deploy/k
sed -i '' "s/che-postgres:nightly/che-postgres:$1/g" ../deploy/kubernetes/helm/che/custom-charts/che-postgres/values.yaml
sed -i '' "s/che-keycloak:nightly/che-keycloak:$1/g" ../deploy/kubernetes/helm/che/custom-charts/che-keycloak/values.yaml
sed -i '' "s/eclipse\/che-server:nightly/eclipse\/che-server:$1/g" ../deploy/kubernetes/helm/che/values.yaml
sed -i '' "s/eclipse\/che-dashboard:next/eclipse\/che-dashboard:$1/g" ../deploy/kubernetes/helm/che/values.yaml


61 changes: 61 additions & 0 deletions deploy/kubernetes/helm/che/templates/dashboard-deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
#
# Copyright (c) 2012-2018 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
#

apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: che
component: che-dashboard
name: che-dashboard
spec:
replicas: 1
revisionHistoryLimit: 2
selector:
matchLabels:
app: che
component: che-dashboard
strategy:
type: RollingUpdate
template:
metadata:
labels:
app: che
component: che-dashboard
spec:
containers:
- name: che-dashboard
image: {{ .Values.dashboard.image }}
imagePullPolicy: {{ .Values.dashboard.imagePullPolicy }}
ports:
- containerPort: 8080
name: http
resources:
limits:
memory: {{ .Values.dashboard.memoryLimit }}
cpu: {{ .Values.dashboard.cpuLimit }}
requests:
sleshchenko marked this conversation as resolved.
Show resolved Hide resolved
memory: {{ .Values.dashboard.memoryRequest }}
cpu: {{ .Values.dashboard.cpuRequest }}
livenessProbe:
httpGet:
path: /dashboard/
port: 8080
scheme: HTTP
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 3
readinessProbe:
httpGet:
path: /dashboard/
port: 8080
scheme: HTTP
initialDelaySeconds: 3
periodSeconds: 10
timeoutSeconds: 3
47 changes: 47 additions & 0 deletions deploy/kubernetes/helm/che/templates/dashboard-ingress.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
#
# Copyright (c) 2012-2019 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
#

# If single-host powered by gateway is configured - the corresponding gateway configmap is expexted to be created
# but not this ingress
{{- if not (and (eq .Values.global.serverStrategy "single-host") (eq .Values.global.singleHostExposure "gateway")) }}

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: che-dashboard-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
{{ .Values.global.ingressAnnotationsPrefix }}ingress.kubernetes.io/proxy-read-timeout: "3600"
{{ .Values.global.ingressAnnotationsPrefix }}ingress.kubernetes.io/proxy-connect-timeout: "3600"
{{- if and .Values.global.tls .Values.global.tls.enabled }}
{{ .Values.global.ingressAnnotationsPrefix }}ingress.kubernetes.io/ssl-redirect: "true"
{{- else }}
{{ .Values.global.ingressAnnotationsPrefix }}ingress.kubernetes.io/ssl-redirect: "false"
{{- end }}
spec:
{{- if .Values.global.tls.enabled }}
tls:
- hosts:
- {{ template "cheHost" . }}
secretName: {{ .Values.global.tls.secretName }}
{{- end }}
rules:
{{- if ne .Values.global.serverStrategy "default-host" }}
- host: {{ template "cheHost" . }}
http:
{{- else }}
- http:
{{- end }}
paths:
# The path rule for Che Dashboard
- path: /dashboard/
backend:
serviceName: che-dashboard
servicePort: 8080
{{- end }}
25 changes: 25 additions & 0 deletions deploy/kubernetes/helm/che/templates/dashboard-service.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#
# Copyright (c) 2012-2019 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
#

apiVersion: v1
kind: Service
metadata:
labels:
app: che
component: che-dashboard
name: che-dashboard
spec:
ports:
- name: http
port: 8080
protocol: TCP
targetPort: 8080
selector:
app: che
component: che-dashboard
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#
# Copyright (c) 2012-2018 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
#

{{- if and (eq .Values.global.serverStrategy "single-host") (eq .Values.global.singleHostExposure "gateway") }}

apiVersion: v1
kind: ConfigMap
metadata:
labels:
app: che
component: che-gateway-config
name: che-gateway-route-dashboard
data:
dashboard.yml: |
http:
routers:
che-dashboard:
rule: "PathPrefix(`/dashboard/`)"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

does it work without end slash?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Checking, I assume that if we miss end slash, then we'll get broken redirects, like /dashboardanythings -> /dashboard since it's currently done by Che Server.

Copy link
Member Author

@sleshchenko sleshchenko Oct 13, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Screenshot_20201013_103025

First Dashboard ingress with end /, the second without. Do you see any issue with end slash?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added end slash to ingress http path as well.

service: che-dashboard
priority: 10
services:
che-dashboard:
loadBalancer:
servers:
- url: 'http://che-dashboard:8080'
{{- end }}
18 changes: 13 additions & 5 deletions deploy/kubernetes/helm/che/templates/ingress.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,19 @@ spec:
- http:
{{- end }}
paths:
- path: /
backend:
{{- if and (eq .Values.global.serverStrategy "single-host") (eq .Values.global.singleHostExposure "gateway") }}
serviceName: che-gateway
- path: /
backend:
serviceName: che-gateway
servicePort: 8080
{{- else }}
serviceName: che-host
- path: /
backend:
serviceName: che-host
servicePort: 8080
# The path rule for Che Dashboard next hosted by Che Server. It should be removed after https://github.com/eclipse/che/issues/17647 is fixed
- path: /dashboard/next
backend:
serviceName: che-host
servicePort: 8080
{{- end }}
servicePort: 8080
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,11 @@ data:
rule: "PathPrefix(`/`)"
service: che
priority: 1
# The path rule for Che Dashboard next hosted by Che Server. It should be removed after https://github.com/eclipse/che/issues/17647 is fixed
dashboard-next:
rule: "PathPrefix(`/dashboard/next`)"
service: che
priority: 20
services:
che:
loadBalancer:
Expand Down
8 changes: 8 additions & 0 deletions deploy/kubernetes/helm/che/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,14 @@ che:
disableProbes: false
logLevel: "INFO"

dashboard:
image: quay.io/eclipse/che-dashboard:next
imagePullPolicy: "Always"
memoryRequest: 16Mi
memoryLimit: 256Mi
cpuRequest: 50m
cpuLimit: 500m

cheDevfileRegistry:
deploy: true

Expand Down
1 change: 0 additions & 1 deletion deploy/kubernetes/helm/che/values/multi-user.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,3 @@

global:
multiuser: true