diff --git a/common/templates/_helpers.tpl b/common/templates/_helpers.tpl index e54df5ed3ae61e30512f7950d1950b7233a21e6d..21964133729f477dfc64081297906a05bdfdafc8 100644 --- a/common/templates/_helpers.tpl +++ b/common/templates/_helpers.tpl @@ -112,3 +112,27 @@ TLSStore - secretName: {{ $secretName }} {{- end }} {{- end }} + +{{/* +Middlewares +*/}} + +{{/* +RedirectScheme +*/}} + +{{- define "common.traefik.middlewares.redirectscheme.variables.spec" -}} +{{- $redirectScheme := dict }} +{{- $scheme := "https" }} +{{- $permanent := true }} +{{- if .Values.scheme }} +{{- $scheme = .Values.scheme }} +{{- end }} +{{- if hasKey .Values "permanent" }} +{{- $permanent = .Values.permanent }} +{{- end }} +{{- $redirectScheme := merge $redirectScheme (dict "scheme" $scheme) }} +{{- $redirectScheme := merge $redirectScheme (dict "permanent" $permanent) }} +{{- $spec := dict "redirectScheme" $redirectScheme }} +{{- toYaml $spec }} +{{- end }} diff --git a/common/templates/traefik/_middleware.tpl b/common/templates/traefik/_middleware.tpl new file mode 100644 index 0000000000000000000000000000000000000000..0e19acc21045da56a00036f773078cb053e6ead9 --- /dev/null +++ b/common/templates/traefik/_middleware.tpl @@ -0,0 +1,16 @@ +# https://doc.traefik.io/traefik/middlewares/overview/ +{{- define "common.traefik.middleware" }} +apiVersion: {{ .Values.apiVersion | default "traefik.io/v1alpha1" }} +kind: Middleware +metadata: + name: {{ .Values.name | default "middleware" }} + {{- with .Values.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} + labels: + {{- include "common.variables.labels" . | nindent 4 }} +spec: + {{- .spec | default .Values.spec | toYaml | nindent 2 }} +--- +{{- end }} diff --git a/common/templates/traefik/middlewares/_redirectscheme.tpl b/common/templates/traefik/middlewares/_redirectscheme.tpl new file mode 100644 index 0000000000000000000000000000000000000000..a0f6729027152f1210ca8950e57d4c94ceca5b6e --- /dev/null +++ b/common/templates/traefik/middlewares/_redirectscheme.tpl @@ -0,0 +1,5 @@ +# https://doc.traefik.io/traefik/middlewares/overview/ +{{- define "common.traefik.middlewares.redirectscheme" }} +{{ include "common.traefik.middleware" (merge $ (dict "spec" (include "common.traefik.middlewares.redirectscheme.variables.spec" . | fromYaml))) }} +--- +{{- end }} diff --git a/example/templates/traefik/redirectscheme.yaml b/example/templates/traefik/redirectscheme.yaml new file mode 100644 index 0000000000000000000000000000000000000000..89e26c172b8a33000fd6d3e61c6c1831f6680f72 --- /dev/null +++ b/example/templates/traefik/redirectscheme.yaml @@ -0,0 +1,3 @@ +{{- if .Values.redirectscheme }} +{{ include "common.traefik.middlewares.redirectscheme" (dict "Values" .Values.redirectscheme "Chart" .Chart "Release" .Release) }} +{{- end }} diff --git a/example/values.yaml b/example/values.yaml index 072d49723bef395c7ae8fc14b6acf28d4a78ddc3..7db7a36324ad601b8f66a5ec6c59cd4c9947a767 100644 --- a/example/values.yaml +++ b/example/values.yaml @@ -86,3 +86,7 @@ ingressroutetcp: # All options: https://doc.traefik.io/traefik/routing/providers services: - name: example-service port: 8080 + +redirectscheme: + permanent: true # default value + scheme: https # default value