Skip to content

Commit

Permalink
Added info on how to setup the custom backend for the errors on k8s l…
Browse files Browse the repository at this point in the history
…evel

Changed ingress configuration for the apps, so that they would redirect to our 503 page in case app not working
Up apps charts versions
  • Loading branch information
churnikov committed Nov 19, 2024
1 parent f2a807d commit 19ac346
Show file tree
Hide file tree
Showing 21 changed files with 6,084 additions and 9 deletions.
147 changes: 147 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,153 @@ as these things will be provided by your cloud provider.

But in case of a local deployment, navigate to the next section.

#### Setting up remote cluster

##### Setting up custom error backend

On remote environment each namespace should have a custom error backend setup for the nginx.
This is done by creating the following ConfigMaps and Services in the namespace:

This only needs to be applied once per namespace.

Configuration for the default backend: service and handling of a 404 error on a subdomain level (wild card domain).

Create `custom-error-backent.yaml` file with the following content.
Don't forget to change the host name for the wildcard in case you are deploying the environment other than production.

<details>
<summary>Click to see the content of the custom-error-backend.yaml file</summary>

```yaml
---
apiVersion: v1
kind: Service
metadata:
name: nginx-errors
labels:
app.kubernetes.io/name: nginx-errors
app.kubernetes.io/part-of: ingress-nginx
spec:
selector:
app.kubernetes.io/name: nginx-errors
app.kubernetes.io/part-of: ingress-nginx
ports:
- port: 80
targetPort: 8080
name: http
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-errors
labels:
app.kubernetes.io/name: nginx-errors
app.kubernetes.io/part-of: ingress-nginx
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: nginx-errors
app.kubernetes.io/part-of: ingress-nginx
template:
metadata:
labels:
app.kubernetes.io/name: nginx-errors
app.kubernetes.io/part-of: ingress-nginx
spec:
containers:
- name: nginx-error-server
# Update the image if there is a new version available
image: registry.k8s.io/ingress-nginx/custom-error-pages:v1.0.2@sha256:b2259cf6bfda813548a64bded551b1854cb600c4f095738b49b4c5cdf8ab9d21
ports:
- containerPort: 8080
# Mounting custom error page from ConfigMap 1
volumeMounts:
- name: custom-error-pages-404
mountPath: /www/404.html
subPath: 404.html
# Mounting custom error page from ConfigMap 2
- name: custom-error-pages-503
mountPath: /www/503.html
subPath: 503.html

# Mounting volumes from two ConfigMaps
volumes:
- name: custom-error-pages-404
configMap:
name: custom-error-pages-404
items:
- key: "404"
path: "404.html"
- name: custom-error-pages-503
configMap:
name: custom-error-pages-503
items:
- key: "503"
path: "503.html"
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/custom-http-errors: 503,404
nginx.ingress.kubernetes.io/default-backend: nginx-errors
name: wildcard-test-srv-dev
namespace: serve-dev
spec:
defaultBackend:
service:
name: nginx-errors
port:
number: 80
rules:
# Change this if you are using a different domain
- host: '*.serve.scilifelab.se'
http:
paths:
- backend:
service:
name: nginx-errors
port:
number: 80
path: /404.html
pathType: ImplementationSpecific
tls:
- hosts:
# Change this if you are using a different domain
- '*.serve.scilifelab.se'
secretName: prod-ingress
---
# Custom error page configMap for the 404 error
apiVersion: v1
kind: ConfigMap
metadata:
name: custom-error-pages-404
data:
"404": "Error"
---
# Custom error page configMap for the 503 error
apiVersion: v1
kind: ConfigMap
metadata:
name: custom-error-pages-503
data:
"503": "Error"
```
</details>

Apply the configuration to the namespace:
```bash
$ kubectl apply -f custom-error-backend.yaml
```

In the rancher dashboard change the values for configmaps `custom-error-pages-404` and `custom-error-pages-503` to
the following error pages. Don't forget to change the host names in the html pages.

Take `404.html` file from [here](error-page-404.html)

Take `503.html` file from [here](error-page-503.html)

#### Setup for local deployment

If you are going to run this locally, you need to have a Kubernetes cluster running on your machine.
Expand Down
2 changes: 1 addition & 1 deletion apps/custom-app/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ apiVersion: v1
appVersion: "0.1"
description: A Helm chart for a standard serve app
name: custom-app
version: 1.1.0
version: 1.1.1
maintainers:
- name: Team Whale
email: [email protected]
2 changes: 2 additions & 0 deletions apps/custom-app/templates/ingress.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ metadata:
nginx.ingress.kubernetes.io/auth-url: "{{ .Values.global.protocol }}://{{ .Values.global.auth_domain }}:8080/auth/?release={{ .Values.release }}"
nginx.ingress.kubernetes.io/auth-signin: "https://{{ .Values.global.domain }}/accounts/login/?next=$scheme%3A%2F%2F$host"
{{- end }}
nginx.ingress.kubernetes.io/custom-http-errors: "503"
nginx.ingress.kubernetes.io/default-backend: nginx-errors
spec:
rules:
- host: {{ .Release.Name }}.{{ .Values.global.domain }}
Expand Down
2 changes: 1 addition & 1 deletion apps/dash/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ apiVersion: v1
appVersion: "0.1"
description: A Helm chart Dash apps
name: dash-app
version: 1.0.2
version: 1.0.3
maintainers:
- name: Team Whale
email: [email protected]
2 changes: 2 additions & 0 deletions apps/dash/templates/ingress.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ metadata:
nginx.ingress.kubernetes.io/auth-url: "{{ .Values.global.protocol }}://{{ .Values.global.auth_domain }}:8080/auth/?release={{ .Values.release }}"
nginx.ingress.kubernetes.io/auth-signin: "https://{{ .Values.global.domain }}/accounts/login/?next=$scheme%3A%2F%2F$host"
{{- end }}
nginx.ingress.kubernetes.io/custom-http-errors: "503"
nginx.ingress.kubernetes.io/default-backend: nginx-errors
spec:
rules:
- host: {{ .Release.Name }}.{{ .Values.global.domain }}
Expand Down
2 changes: 1 addition & 1 deletion apps/filemanager/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ apiVersion: v1
appVersion: "0.1"
description: A Helm chart for the serve File Manager
name: filemanager
version: 1.0.2
version: 1.0.3
maintainers:
- name: Team Whale
email: [email protected]
2 changes: 2 additions & 0 deletions apps/filemanager/templates/ingress.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ metadata:
nginx.ingress.kubernetes.io/auth-url: "{{ .Values.global.protocol }}://{{ .Values.global.auth_domain }}:8080/auth/?release={{ .Values.release }}"
nginx.ingress.kubernetes.io/auth-signin: "https://{{ .Values.global.domain }}/accounts/login/?next=$scheme%3A%2F%2F$host"
{{- end }}
nginx.ingress.kubernetes.io/custom-http-errors: "503"
nginx.ingress.kubernetes.io/default-backend: nginx-errors
name: {{ .Release.Name }}-filemanager-ingress
namespace: {{ .Release.Namespace }}
spec:
Expand Down
2 changes: 1 addition & 1 deletion apps/jupyter-lab/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ apiVersion: v1
appVersion: "0.1"
description: A Helm chart for Jupyter Lab
name: lab
version: 1.0.2
version: 1.0.3
maintainers:
- name: Team Whale
email: [email protected]
2 changes: 2 additions & 0 deletions apps/jupyter-lab/templates/ingress.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ metadata:
nginx.ingress.kubernetes.io/auth-url: "{{ .Values.global.protocol }}://{{ .Values.global.auth_domain }}:8080/auth/?release={{ .Values.release }}"
nginx.ingress.kubernetes.io/auth-signin: "https://{{ .Values.global.domain }}/accounts/login/?next=$scheme%3A%2F%2F$host"
#nginx.ingress.kubernetes.io/auth-response-headers: X-Forwarded-Host
nginx.ingress.kubernetes.io/custom-http-errors: "503"
nginx.ingress.kubernetes.io/default-backend: nginx-errors
spec:
rules:
- host: {{ .Release.Name }}.{{ .Values.global.domain }}
Expand Down
2 changes: 1 addition & 1 deletion apps/rstudio/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ apiVersion: v1
appVersion: "0.1"
description: A Helm chart for RStudio in the browser
name: rstudio
version: 1.0.2
version: 1.0.3
maintainers:
- name: Team Whale
email: [email protected]
2 changes: 2 additions & 0 deletions apps/rstudio/templates/ingress.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ metadata:
nginx.ingress.kubernetes.io/auth-url: "{{ .Values.global.protocol }}://{{ .Values.global.auth_domain }}:8080/auth/?release={{ .Values.release }}"
nginx.ingress.kubernetes.io/auth-signin: "https://{{ .Values.global.domain }}/accounts/login/?next=$scheme%3A%2F%2F$host"
#nginx.ingress.kubernetes.io/auth-response-headers: X-Forwarded-Host
nginx.ingress.kubernetes.io/custom-http-errors: "503"
nginx.ingress.kubernetes.io/default-backend: nginx-errors
spec:
rules:
- host: {{ .Release.Name }}.{{ .Values.global.domain }}
Expand Down
2 changes: 1 addition & 1 deletion apps/shiny/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ apiVersion: v1
appVersion: "0.1"
description: A Helm chart Shiny apps
name: shinyapp
version: 1.0.3
version: 1.0.4
maintainers:
- name: Team Whale
email: [email protected]
2 changes: 2 additions & 0 deletions apps/shiny/templates/ingress.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ metadata:
nginx.ingress.kubernetes.io/auth-url: "{{ .Values.global.protocol }}://{{ .Values.global.auth_domain }}:8080/auth/?release={{ .Values.release }}"
nginx.ingress.kubernetes.io/auth-signin: "https://{{ .Values.global.domain }}/accounts/login/?next=$scheme%3A%2F%2F$host"
{{- end }}
nginx.ingress.kubernetes.io/custom-http-errors: "503"
nginx.ingress.kubernetes.io/default-backend: nginx-errors
spec:
rules:
- host: {{ .Release.Name }}.{{ .Values.global.domain }}
Expand Down
2 changes: 1 addition & 1 deletion apps/shinyproxy/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ apiVersion: v2
name: shinyproxy
description: A Helm chart to install Shinyproxy
type: application
version: 1.4.2
version: 1.4.3
appVersion: "0.1"
maintainers:
- name: Team Whale
Expand Down
2 changes: 2 additions & 0 deletions apps/shinyproxy/templates/ingress.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ metadata:
{{- end }}
nginx.ingress.kubernetes.io/proxy-body-size: 2000m
#nginx.ingress.kubernetes.io/auth-response-headers: X-Forwarded-Host
nginx.ingress.kubernetes.io/custom-http-errors: "503"
nginx.ingress.kubernetes.io/default-backend: nginx-errors
spec:
rules:
- host: {{ .Release.Name }}.{{ .Values.global.domain }}
Expand Down
2 changes: 1 addition & 1 deletion apps/tissuumaps/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ apiVersion: v1
appVersion: "0.1"
description: A Helm chart tissuumaps apps
name: tissuumaps
version: 1.0.2
version: 1.0.3
maintainers:
- name: Team Whale
email: [email protected]
2 changes: 2 additions & 0 deletions apps/tissuumaps/templates/ingress.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ metadata:
nginx.ingress.kubernetes.io/auth-url: "{{ .Values.global.protocol }}://{{ .Values.global.auth_domain }}:8080/auth/?release={{ .Values.release }}"
nginx.ingress.kubernetes.io/auth-signin: "https://{{ .Values.global.domain }}/accounts/login/?next=$scheme%3A%2F%2F$host"
{{- end }}
nginx.ingress.kubernetes.io/custom-http-errors: "503"
nginx.ingress.kubernetes.io/default-backend: nginx-errors
spec:
rules:
- host: {{ .Release.Name }}.{{ .Values.global.domain }}
Expand Down
2 changes: 1 addition & 1 deletion apps/vscode/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ apiVersion: v1
appVersion: "0.1"
description: A Helm chart for VS code in the browser
name: vscode
version: 1.0.1
version: 1.0.2
maintainers:
- name: Team Whale
email: [email protected]
2 changes: 2 additions & 0 deletions apps/vscode/templates/ingress.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ metadata:
nginx.ingress.kubernetes.io/auth-url: "{{ .Values.global.protocol }}://{{ .Values.global.auth_domain }}:8080/auth/?release={{ .Values.release }}"
nginx.ingress.kubernetes.io/auth-signin: "https://{{ .Values.global.domain }}/accounts/login/?next=$scheme%3A%2F%2F$host"
#nginx.ingress.kubernetes.io/auth-response-headers: X-Forwarded-Host
nginx.ingress.kubernetes.io/custom-http-errors: "503"
nginx.ingress.kubernetes.io/default-backend: nginx-errors
spec:
rules:
- host: {{ .Release.Name }}.{{ .Values.global.domain }}
Expand Down
2,955 changes: 2,955 additions & 0 deletions error-page-404.html

Large diffs are not rendered by default.

2,955 changes: 2,955 additions & 0 deletions error-page-503.html

Large diffs are not rendered by default.

0 comments on commit 19ac346

Please sign in to comment.