feat: Add IPWhitelist, redirectRegex and (internal) nextcloud middlewares (#929)
* feat: Add IPWhitelist and redirectRegex middlewares to traefik * fix: add nextcloud middlewares * fix nextcloud cronjob
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
{{/* Define the cronjob */}}
|
{{/* Define the cronjob */}}
|
||||||
{{- define "nextcloud.cronjob" -}}
|
{{- define "nextcloud.cronjob" -}}
|
||||||
{{- $jobName := include "common.names.fullname" . -}}
|
{{- $jobName := include "common.names.fullname" . }}
|
||||||
|
|
||||||
---
|
---
|
||||||
apiVersion: batch/v1beta1
|
apiVersion: batch/v1beta1
|
||||||
|
|||||||
@@ -1,14 +1,17 @@
|
|||||||
{{/* Make sure all variables are set properly */}}
|
{{/* Make sure all variables are set properly */}}
|
||||||
{{- include "common.values.setup" . }}
|
{{- include "common.values.setup" . }}
|
||||||
|
|
||||||
{{/* Render the templates */}}
|
|
||||||
{{ include "common.all" . }}
|
|
||||||
|
|
||||||
{{/* Render configmap for nextcloud */}}
|
{{/* Render configmap for nextcloud */}}
|
||||||
{{- include "nextcloud.configmap" . }}
|
{{- include "nextcloud.configmap" . }}
|
||||||
|
|
||||||
{{/* Render secrets for nextcloud */}}
|
{{/* Render secrets for nextcloud */}}
|
||||||
{{- include "nextcloud.secrets" . }}
|
{{- include "nextcloud.secrets" . }}
|
||||||
|
|
||||||
|
{{- $newMiddlewares := append .Values.ingress.main.fixedMiddlewares "tc-nextcloud-chain" }}
|
||||||
|
{{- $_ := set .Values.ingress.main "fixedMiddlewares" $newMiddlewares -}}
|
||||||
|
|
||||||
{{/* Render cronjob for nextcloud */}}
|
{{/* Render cronjob for nextcloud */}}
|
||||||
{{- include "nextcloud.cronjob" . }}
|
{{- include "nextcloud.cronjob" . }}
|
||||||
|
|
||||||
|
{{/* Render the templates */}}
|
||||||
|
{{ include "common.all" . }}
|
||||||
|
|||||||
@@ -22,4 +22,4 @@ sources:
|
|||||||
- https://github.com/traefik/traefik-helm-chart
|
- https://github.com/traefik/traefik-helm-chart
|
||||||
- https://traefik.io/
|
- https://traefik.io/
|
||||||
type: application
|
type: application
|
||||||
version: 7.0.11
|
version: 7.1.0
|
||||||
|
|||||||
@@ -563,6 +563,93 @@ questions:
|
|||||||
type: int
|
type: int
|
||||||
required: true
|
required: true
|
||||||
default: 200
|
default: 200
|
||||||
|
- variable: redirectRegex
|
||||||
|
label: "redirectRegex"
|
||||||
|
schema:
|
||||||
|
type: list
|
||||||
|
default: []
|
||||||
|
items:
|
||||||
|
- variable: redirectRegexEntry
|
||||||
|
label: ""
|
||||||
|
schema:
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: name
|
||||||
|
label: "Name"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
- variable: regex
|
||||||
|
label: "Regex"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
default: ""
|
||||||
|
- variable: replacement
|
||||||
|
label: "Replacement"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
default: ""
|
||||||
|
- variable: permanent
|
||||||
|
label: "Permanent"
|
||||||
|
schema:
|
||||||
|
type: boolean
|
||||||
|
required: true
|
||||||
|
default: false
|
||||||
|
|
||||||
|
- variable: ipWhiteList
|
||||||
|
label: "ipWhiteList"
|
||||||
|
schema:
|
||||||
|
type: list
|
||||||
|
default: []
|
||||||
|
items:
|
||||||
|
- variable: ipWhiteListEntry
|
||||||
|
label: ""
|
||||||
|
schema:
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: name
|
||||||
|
label: "Name"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
default: ""
|
||||||
|
- variable: sourceRange
|
||||||
|
label: "Source Range"
|
||||||
|
schema:
|
||||||
|
type: list
|
||||||
|
default: []
|
||||||
|
items:
|
||||||
|
- variable: sourceRangeEntry
|
||||||
|
label: ""
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
default: ""
|
||||||
|
- variable: ipStrategy
|
||||||
|
label: "IP Strategy"
|
||||||
|
schema:
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: depth
|
||||||
|
label: "Depth"
|
||||||
|
schema:
|
||||||
|
type: int
|
||||||
|
required: true
|
||||||
|
- variable: excludedIPs
|
||||||
|
label: "Excluded IPs"
|
||||||
|
schema:
|
||||||
|
type: list
|
||||||
|
default: []
|
||||||
|
items:
|
||||||
|
- variable: excludedIPsEntry
|
||||||
|
label: ""
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
default: ""
|
||||||
|
|
||||||
|
|
||||||
- variable: hostNetwork
|
- variable: hostNetwork
|
||||||
group: "Networking and Services"
|
group: "Networking and Services"
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
{{- $values := .Values }}
|
||||||
|
{{- $namespace := ( printf "ix-%s" .Release.Name ) }}
|
||||||
|
{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }}
|
||||||
|
{{- $namespace = "default" }}
|
||||||
|
{{- end }}
|
||||||
|
{{ range $index, $middlewareData := .Values.middlewares.ipWhiteList }}
|
||||||
|
|
||||||
|
---
|
||||||
|
# Declaring the user list
|
||||||
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
|
kind: Middleware
|
||||||
|
metadata:
|
||||||
|
name: {{ $middlewareData.name }}
|
||||||
|
namespace: {{ $namespace }}
|
||||||
|
spec:
|
||||||
|
ipWhiteList:
|
||||||
|
sourceRange:
|
||||||
|
{{- range $middlewareData.sourceRange }}
|
||||||
|
- {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if $middlewareData.ipStrategy }}
|
||||||
|
ipStrategy:
|
||||||
|
{{- if $middlewareData.ipStrategy.depth }}
|
||||||
|
depth: {{ $middlewareData.ipStrategy.depth }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if $middlewareData.ipStrategy.excludedIPs }}
|
||||||
|
excludedIPs:
|
||||||
|
{{- range $middlewareData.ipStrategy.excludedIPs }}
|
||||||
|
- {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{ end }}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
{{- $values := .Values }}
|
||||||
|
{{- $namespace := ( printf "ix-%s" .Release.Name ) }}
|
||||||
|
{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }}
|
||||||
|
{{- $namespace = "default" }}
|
||||||
|
{{- end }}
|
||||||
|
{{ range $index, $middlewareData := .Values.middlewares.redirectRegex }}
|
||||||
|
|
||||||
|
---
|
||||||
|
# Declaring the user list
|
||||||
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
|
kind: Middleware
|
||||||
|
metadata:
|
||||||
|
name: {{ $middlewareData.name }}
|
||||||
|
namespace: {{ $namespace }}
|
||||||
|
spec:
|
||||||
|
redirectRegex:
|
||||||
|
regex: {{ $middlewareData.regex | quote }}
|
||||||
|
replacement: {{ $middlewareData.replacement | quote }}
|
||||||
|
permanent: {{ $middlewareData.replacement }}
|
||||||
|
{{ end }}
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
{{- $values := .Values }}
|
||||||
|
{{- $namespace := ( printf "ix-%s" .Release.Name ) }}
|
||||||
|
{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }}
|
||||||
|
{{- $namespace = "default" }}
|
||||||
|
{{- end }}
|
||||||
|
---
|
||||||
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
|
kind: Middleware
|
||||||
|
metadata:
|
||||||
|
name: tc-nextcloud-headers
|
||||||
|
namespace: {{ $namespace }}
|
||||||
|
spec:
|
||||||
|
headers:
|
||||||
|
stsSeconds: 63072000
|
||||||
|
forceSTSHeader: true
|
||||||
|
---
|
||||||
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
|
kind: Middleware
|
||||||
|
metadata:
|
||||||
|
name: tc-nextcloud-redirectregex-dav
|
||||||
|
spec:
|
||||||
|
redirectRegex:
|
||||||
|
regex: "https://(.*)/.well-known/(card|cal)dav"
|
||||||
|
replacement: "https://${1}/remote.php/dav/"
|
||||||
|
---
|
||||||
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
|
kind: Middleware
|
||||||
|
metadata:
|
||||||
|
name: tc-nextcloud-redirectregex-finger
|
||||||
|
spec:
|
||||||
|
redirectRegex:
|
||||||
|
regex: "https://(.*)/.well-known/webfinger"
|
||||||
|
replacement: "https://${1}/public.php?service=webfinger"
|
||||||
|
---
|
||||||
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
|
kind: Middleware
|
||||||
|
metadata:
|
||||||
|
name: tc-nextcloud-redirectregex-hostmeta
|
||||||
|
spec:
|
||||||
|
redirectRegex:
|
||||||
|
regex: "https://(.*)/.well-known/host-meta"
|
||||||
|
replacement: "https://${1}/public.php?service=host-meta"
|
||||||
|
---
|
||||||
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
|
kind: Middleware
|
||||||
|
metadata:
|
||||||
|
name: tc-nextcloud-redirectregex-hostmetajson
|
||||||
|
spec:
|
||||||
|
redirectRegex:
|
||||||
|
regex: "https://(.*)/.well-known/host-meta.json"
|
||||||
|
replacement: "https://${1}/public.php?service=host-meta-json"
|
||||||
|
---
|
||||||
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
|
kind: Middleware
|
||||||
|
metadata:
|
||||||
|
name: tc-nextcloud-chain
|
||||||
|
namespace: {{ $namespace }}
|
||||||
|
spec:
|
||||||
|
chain:
|
||||||
|
middlewares:
|
||||||
|
- name: tc-nextcloud-headers
|
||||||
|
- name: tc-nextcloud-redirectregex-dav
|
||||||
|
- name: tc-nextcloud-redirectregex-finger
|
||||||
|
- name: tc-nextcloud-redirectregex-hostmetajson
|
||||||
|
- name: tc-nextcloud-redirectregex-hostmeta
|
||||||
@@ -306,15 +306,28 @@ middlewares:
|
|||||||
# authResponseHeadersRegex: "^X-"
|
# authResponseHeadersRegex: "^X-"
|
||||||
# trustForwardHeader: true
|
# trustForwardHeader: true
|
||||||
chain: []
|
chain: []
|
||||||
# name: chainname
|
# - name: chainname
|
||||||
# middlewares:
|
# middlewares:
|
||||||
# - name: compress
|
# - name: compress
|
||||||
redirectScheme: []
|
redirectScheme: []
|
||||||
|
# - name: redirectSchemeName
|
||||||
# scheme: https
|
# scheme: https
|
||||||
# permanent: true
|
# permanent: true
|
||||||
rateLimit: []
|
rateLimit: []
|
||||||
|
# - name: rateLimitName
|
||||||
# average: 300
|
# average: 300
|
||||||
# burst: 200
|
# burst: 200
|
||||||
|
redirectRegex: []
|
||||||
|
# - name: redirectRegexName
|
||||||
|
# regex: putregexhere
|
||||||
|
# replacement: replacementurlhere
|
||||||
|
# permanent: false
|
||||||
|
ipWhiteList: []
|
||||||
|
# - name: ipWhiteListName
|
||||||
|
# sourceRange: []
|
||||||
|
# ipStrategy:
|
||||||
|
# depth: 2
|
||||||
|
# excludedIPs: []
|
||||||
|
|
||||||
portalhook:
|
portalhook:
|
||||||
enabled: true
|
enabled: true
|
||||||
|
|||||||
Reference in New Issue
Block a user