diff --git a/charts/enterprise/traefik/Chart.yaml b/charts/enterprise/traefik/Chart.yaml index 7b765a42dab..474ddfa2a56 100644 --- a/charts/enterprise/traefik/Chart.yaml +++ b/charts/enterprise/traefik/Chart.yaml @@ -23,7 +23,7 @@ sources: - https://github.com/traefik/traefik-helm-chart - https://traefik.io/ type: application -version: 18.0.18 +version: 18.1.0 annotations: truecharts.org/catagories: | - network diff --git a/charts/enterprise/traefik/docs/custom-header-middlewares.md b/charts/enterprise/traefik/docs/custom-header-middlewares.md new file mode 100644 index 00000000000..66bee6083ae --- /dev/null +++ b/charts/enterprise/traefik/docs/custom-header-middlewares.md @@ -0,0 +1,11 @@ +# Adding or removing headers + +The `customRequestHeaders` and `customResponseHeaders` middlewares will allow you to add or remove headers from the request or response. + +## `customRequestHeaders` + +You can specify a list of headers to add to requests. When removing a header, you only need to specify the header name (an empty value removes the header with that name from requests, if it exists). + +## `customResponseHeaders` + +You can specify a list of headers to add to responses. When removing a header, you only need to specify the header name (an empty value removes the header with that name from responses, if it exists). diff --git a/charts/enterprise/traefik/questions.yaml b/charts/enterprise/traefik/questions.yaml index 479a1af0d54..a7ff907c7bb 100644 --- a/charts/enterprise/traefik/questions.yaml +++ b/charts/enterprise/traefik/questions.yaml @@ -184,6 +184,8 @@ questions: attrs: # Include{basicAuthMiddleware} # Include{forwardAuthMiddleware} +# Include{customRequestHeadersMiddleware} +# Include{customResponseHeadersMiddleware} # Include{chainMiddleware} # Include{redirectSchemeMiddleware} # Include{rateLimitMiddleware} diff --git a/charts/enterprise/traefik/templates/middlewares/customRequestHeaders.yaml b/charts/enterprise/traefik/templates/middlewares/customRequestHeaders.yaml new file mode 100644 index 00000000000..938709da98c --- /dev/null +++ b/charts/enterprise/traefik/templates/middlewares/customRequestHeaders.yaml @@ -0,0 +1,18 @@ +{{- $values := .Values }} + +{{ range $index, $middlewareData := .Values.middlewares.customRequestHeaders }} + +--- +# Declaring the user list +apiVersion: traefik.io/v1alpha1 +kind: Middleware +metadata: + name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} + namespace: tc-system +spec: + headers: + customRequestHeaders: + {{ range $index, $customRequestHeader := $middlewareData.headers }} + {{ $customRequestHeader.name }}: {{ $customRequestHeader.value | quote }} + {{ end }} +{{ end }} diff --git a/charts/enterprise/traefik/templates/middlewares/customResponseHeaders.yaml b/charts/enterprise/traefik/templates/middlewares/customResponseHeaders.yaml new file mode 100644 index 00000000000..8728027c9cd --- /dev/null +++ b/charts/enterprise/traefik/templates/middlewares/customResponseHeaders.yaml @@ -0,0 +1,18 @@ +{{- $values := .Values }} + +{{ range $index, $middlewareData := .Values.middlewares.customResponseHeaders }} + +--- +# Declaring the user list +apiVersion: traefik.io/v1alpha1 +kind: Middleware +metadata: + name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} + namespace: tc-system +spec: + headers: + customResponseHeaders: + {{ range $index, $customResponseHeader := $middlewareData.headers }} + {{ $customResponseHeader.name }}: {{ $customResponseHeader.value | quote }} + {{ end }} +{{ end }} diff --git a/charts/enterprise/traefik/values.yaml b/charts/enterprise/traefik/values.yaml index 1a294f81ce2..be9ab2af58e 100644 --- a/charts/enterprise/traefik/values.yaml +++ b/charts/enterprise/traefik/values.yaml @@ -332,6 +332,20 @@ middlewares: # - "X-CustomHeader" # authResponseHeadersRegex: "^X-" # trustForwardHeader: true + customRequestHeaders: [] + # - name: customRequestHeaderExample + # headers: + # - name: X-Custom-Header + # value: "foobar" + # - name: X-Header-To-Remove + # value: "" + customResponseHeaders: [] + # - name: customResponseHeaderExample + # headers: + # - name: X-Custom-Header + # value: "foobar" + # - name: X-Header-To-Remove + # value: "" chain: [] # - name: chainname # middlewares: diff --git a/templates/questions/traefik/customRequestHeaders.yaml b/templates/questions/traefik/customRequestHeaders.yaml new file mode 100644 index 00000000000..e0eff6f3640 --- /dev/null +++ b/templates/questions/traefik/customRequestHeaders.yaml @@ -0,0 +1,38 @@ + - variable: customRequestHeaders + label: Custom Request Headers + schema: + type: list + default: [] + items: + - variable: customRequestHeadersEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: headers + label: Headers to Add + schema: + type: list + default: [] + items: + - variable: name + label: Header Name + description: Name of custom header to be added to requests, eg. X-Custom-Header + pattern: ^[a-zA-Z0-9_\-]*$ + schema: + type: string + required: true + default: "" + - variable: value + label: Header Value + description: The value of the header. If the value is empty, the header will be removed. + schema: + type: string + required: true + default: "" diff --git a/templates/questions/traefik/customResponseHeaders.yaml b/templates/questions/traefik/customResponseHeaders.yaml new file mode 100644 index 00000000000..78212760930 --- /dev/null +++ b/templates/questions/traefik/customResponseHeaders.yaml @@ -0,0 +1,38 @@ + - variable: customResponseHeaders + label: Custom Response Headers + schema: + type: list + default: [] + items: + - variable: customResponseHeadersEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: headers + label: Headers to Add + schema: + type: list + default: [] + items: + - variable: name + label: Header Name + description: Name of custom header to be added to responses, eg. X-Custom-Header + pattern: ^[a-zA-Z0-9_\-]*$ + schema: + type: string + required: true + default: "" + - variable: value + label: Header Value + description: The value of the header. If the value is empty, the header will be removed. + schema: + type: string + required: true + default: ""