Skip to content

Commit

Permalink
Run dashboard in a dedicated deployment
Browse files Browse the repository at this point in the history
  • Loading branch information
sleshchenko committed Oct 12, 2020
1 parent 25ddfb2 commit c5273ec
Show file tree
Hide file tree
Showing 10 changed files with 221 additions and 5 deletions.
57 changes: 57 additions & 0 deletions deploy/kubernetes/helm/che/templates/dashboard-deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
#
# 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: Recreate
template:
metadata:
labels:
app: che
component: che-dashboard
spec:
containers:
- image: {{ .Values.cheDashboardImage }}
imagePullPolicy: {{ .Values.cheImagePullPolicy }}
livenessProbe:
httpGet:
path: /
port: 8080
scheme: HTTP
initialDelaySeconds: 120
timeoutSeconds: 10
readinessProbe:
httpGet:
path: /
port: 8080
scheme: HTTP
initialDelaySeconds: 15
timeoutSeconds: 60
name: che-dashboard
ports:
- containerPort: 8080
name: http
resources:
limits:
memory: 256Mi
requests:
memory: 128Mi
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,34 @@
#
# 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
#

# TODO it's not working yet

{{- 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/`)"
service: che-dashboard
priority: 1
services:
che-dashboard:
loadBalancer:
servers:
- url: 'http://che-dashboard:8080'
{{- end }}
48 changes: 48 additions & 0 deletions deploy/kubernetes/helm/che/templates/ingress-dashboard.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
#
# 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 }}
10 changes: 10 additions & 0 deletions deploy/kubernetes/helm/che/templates/ingress.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ spec:
- http:
{{- end }}
paths:
# The path rule for Che Server
- path: /
backend:
{{- if and (eq .Values.global.serverStrategy "single-host") (eq .Values.global.singleHostExposure "gateway") }}
Expand All @@ -43,3 +44,12 @@ spec:
serviceName: che-host
{{- end }}
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:
{{- if and (eq .Values.global.serverStrategy "single-host") (eq .Values.global.singleHostExposure "gateway") }}
serviceName: che-gateway
{{- else }}
serviceName: che-host
{{- 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: 1
services:
che:
loadBalancer:
Expand Down
1 change: 1 addition & 0 deletions deploy/kubernetes/helm/che/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ cheWorkspaceHttpProxy: ""
cheWorkspaceHttpsProxy: ""
cheWorkspaceNoProxy: ""
cheImage: quay.io/eclipse/che-server:nightly
cheDashboardImage: quay.io/eclipse/che-dashboard:next
cheImagePullPolicy: Always
cheKeycloakRealm: "che"
cheKeycloakClientId: "che-public"
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

34 changes: 34 additions & 0 deletions deploy/kubernetes/helm/dashboard-test.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
Multi-host Single User
```sh
export CHART_DIR=/home/sleshche/projects/che/deploy/kubernetes/helm/che
helm upgrade --install che \
--force \
--namespace che \
--set global.cheDomain=192.168.99.100.nip.io \
--set global.ingressDomain=192.168.99.100.nip.io \
--set cheImage=sleshchenko/che-server:cut-dashboard \
--set che.disableProbes=false \
--set global.serverStrategy=single-host \
--set global.tls.useSelfSignedCerts=true \
-f ${CHART_DIR}/values/tls.yaml \
-f ${CHART_DIR}/values/multi-user.yaml \
${CHART_DIR}
```

```sh
export CHART_DIR=/home/sleshche/projects/che/deploy/kubernetes/helm/che
helm upgrade --install che \
--force \
--namespace che \
--set global.cheDomain=192.168.99.100.nip.io \
--set global.ingressDomain=192.168.99.100.nip.io \
--set cheImage=sleshchenko/che-server:cut-dashboard \
--set che.disableProbes=false \
--set global.tls.useSelfSignedCerts=true \
--set global.serverStrategy=single-host \
--set cheSinglehostGateway.deploy=true \
--set global.singleHostExposure=gateway \
--set global.multiuser=true \
-f ${CHART_DIR}/values/tls.yaml \
${CHART_DIR}
```
11 changes: 7 additions & 4 deletions dockerfiles/che/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,16 @@

# Variables in `COPY --from=` is not supported see https://github.com/moby/moby/issues/34482
# this is workaround to handle that.
ARG CHE_DASHBOARD_ORGANIZATION=quay.io/eclipse
# TODO it's here just for testing. Uncomment before merging
#ARG CHE_DASHBOARD_ORGANIZATION=quay.io/eclipse
ARG CHE_DASHBOARD_NEXT_ORGANIZATION=quay.io/che-incubator
ARG CHE_DASHBOARD_VERSION=next
# TODO it's here just for testing. Uncomment before merging
#ARG CHE_DASHBOARD_VERSION=next
ARG CHE_DASHBOARD_NEXT_VERSION=next
ARG CHE_WORKSPACE_LOADER_ORGANIZATION=quay.io/eclipse
ARG CHE_WORKSPACE_LOADER_VERSION=next

FROM ${CHE_DASHBOARD_ORGANIZATION}/che-dashboard:${CHE_DASHBOARD_VERSION} as che_dashboard_base
# FROM ${CHE_DASHBOARD_ORGANIZATION}/che-dashboard:${CHE_DASHBOARD_VERSION} as che_dashboard_base
FROM ${CHE_DASHBOARD_NEXT_ORGANIZATION}/che-dashboard-next:${CHE_DASHBOARD_NEXT_VERSION} as che_dashboard_next
FROM ${CHE_WORKSPACE_LOADER_ORGANIZATION}/che-workspace-loader:${CHE_WORKSPACE_LOADER_VERSION} as che_workspace_loader_base

Expand All @@ -27,7 +29,8 @@ COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
RUN mkdir /logs /data && \
chmod 0777 /logs /data
COPY --from=che_dashboard_base /usr/local/apache2/htdocs/dashboard /home/user/eclipse-che/tomcat/webapps/dashboard
# TODO it's here just for testing. Uncomment before merging
#COPY --from=che_dashboard_base /usr/local/apache2/htdocs/dashboard /home/user/eclipse-che/tomcat/webapps/dashboard
COPY --from=che_dashboard_next /usr/local/apache2/htdocs/dashboard /home/user/eclipse-che/tomcat/webapps/dashboard/next
COPY --from=che_workspace_loader_base /usr/local/apache2/htdocs/workspace-loader/ /home/user/eclipse-che/tomcat/webapps/workspace-loader
ADD eclipse-che /home/user/eclipse-che
Expand Down

0 comments on commit c5273ec

Please sign in to comment.