From 63d077e1dd50cb0ae9af5c21d951bec1d78c60ad Mon Sep 17 00:00:00 2001 From: Devin Buhl Date: Fri, 13 May 2022 14:03:25 -0400 Subject: [PATCH] feat(cluster): add error-pages (#207) --- README.md | 2 +- .../networking/error-pages/helm-release.yaml | 40 +++++++++++++++++++ .../networking/error-pages/ingress-route.yaml | 19 +++++++++ .../networking/error-pages/kustomization.yaml | 6 +++ cluster/apps/networking/kustomization.yaml | 1 + .../traefik/middlewares/error-pages.yaml | 14 +++++++ .../traefik/middlewares/kustomization.yaml | 1 + 7 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 cluster/apps/networking/error-pages/helm-release.yaml create mode 100644 cluster/apps/networking/error-pages/ingress-route.yaml create mode 100644 cluster/apps/networking/error-pages/kustomization.yaml create mode 100644 cluster/apps/networking/traefik/middlewares/error-pages.yaml diff --git a/README.md b/README.md index f3b90cf2..20bb4ebc 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ The following components will be installed in your [k3s](https://k3s.io/) cluste - [traefik](https://traefik.io) - Kubernetes ingress controller used for a HTTP reverse proxy of Kubernetes ingresses - [local-path-provisioner](https://github.com/rancher/local-path-provisioner) - provision persistent local storage with Kubernetes -_Additional applications include [hajimari](https://github.com/toboshii/hajimari), [echo-server](https://github.com/Ealenn/Echo-Server), [system-upgrade-controller](https://github.com/rancher/system-upgrade-controller), [reflector](https://github.com/emberstack/kubernetes-reflector), and [reloader](https://github.com/stakater/Reloader)_ +_Additional applications include [hajimari](https://github.com/toboshii/hajimari), [error-pages](https://github.com/tarampampam/error-pages), [echo-server](https://github.com/Ealenn/Echo-Server), [system-upgrade-controller](https://github.com/rancher/system-upgrade-controller), [reflector](https://github.com/emberstack/kubernetes-reflector), and [reloader](https://github.com/stakater/Reloader)_ For provisioning the following tools will be used: diff --git a/cluster/apps/networking/error-pages/helm-release.yaml b/cluster/apps/networking/error-pages/helm-release.yaml new file mode 100644 index 00000000..0964a8d8 --- /dev/null +++ b/cluster/apps/networking/error-pages/helm-release.yaml @@ -0,0 +1,40 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2beta1 +kind: HelmRelease +metadata: + name: error-pages + namespace: networking +spec: + interval: 5m + chart: + spec: + chart: error-pages + version: 1.1.2 + sourceRef: + kind: HelmRepository + name: k8s-at-home-charts + namespace: flux-system + interval: 5m + dependsOn: + - name: traefik + namespace: networking + install: + createNamespace: true + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + values: + image: + repository: ghcr.io/tarampampam/error-pages + tag: 2.15.0 + env: + TEMPLATE_NAME: lost-in-space + SHOW_DETAILS: "false" + resources: + requests: + memory: 100Mi + cpu: 100m + limits: + memory: 250Mi diff --git a/cluster/apps/networking/error-pages/ingress-route.yaml b/cluster/apps/networking/error-pages/ingress-route.yaml new file mode 100644 index 00000000..fc38a059 --- /dev/null +++ b/cluster/apps/networking/error-pages/ingress-route.yaml @@ -0,0 +1,19 @@ +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: IngressRoute +metadata: + name: error-pages + namespace: networking +spec: + entryPoints: + - websecure + routes: + - kind: Rule + match: HostRegexp(`{host:.+}`) + priority: 1 + services: + - kind: Service + name: error-pages + port: 8080 + tls: + secretName: error-pages-tls diff --git a/cluster/apps/networking/error-pages/kustomization.yaml b/cluster/apps/networking/error-pages/kustomization.yaml new file mode 100644 index 00000000..c9804eed --- /dev/null +++ b/cluster/apps/networking/error-pages/kustomization.yaml @@ -0,0 +1,6 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - helm-release.yaml + - ingress-route.yaml diff --git a/cluster/apps/networking/kustomization.yaml b/cluster/apps/networking/kustomization.yaml index e707c83e..2a593b3d 100644 --- a/cluster/apps/networking/kustomization.yaml +++ b/cluster/apps/networking/kustomization.yaml @@ -2,6 +2,7 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: + - error-pages - cloudflare-ddns - external-dns - k8s-gateway diff --git a/cluster/apps/networking/traefik/middlewares/error-pages.yaml b/cluster/apps/networking/traefik/middlewares/error-pages.yaml new file mode 100644 index 00000000..e8c8fe1f --- /dev/null +++ b/cluster/apps/networking/traefik/middlewares/error-pages.yaml @@ -0,0 +1,14 @@ +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: error-pages + namespace: networking +spec: + errors: + status: + - "400-599" + query: /{status}.html + service: + name: error-pages + port: 8080 diff --git a/cluster/apps/networking/traefik/middlewares/kustomization.yaml b/cluster/apps/networking/traefik/middlewares/kustomization.yaml index 3fb933ac..6de78198 100644 --- a/cluster/apps/networking/traefik/middlewares/kustomization.yaml +++ b/cluster/apps/networking/traefik/middlewares/kustomization.yaml @@ -2,5 +2,6 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: + - error-pages.yaml - cloudflare-only.yaml - internal-only.yaml