63 lines
1.9 KiB
YAML
63 lines
1.9 KiB
YAML
{{- if and (.Values.gateway).enabled (.Values.providers.kubernetesGateway).enabled }}
|
|
{{- if not .Values.gateway.listeners }}
|
|
{{- fail "ERROR: gateway must have at least one listener or should be disabled" }}
|
|
{{- end }}
|
|
---
|
|
apiVersion: gateway.networking.k8s.io/v1
|
|
kind: Gateway
|
|
metadata:
|
|
name: {{ default "traefik-gateway" .Values.gateway.name }}
|
|
namespace: {{ template "traefik.namespace" . }}
|
|
labels:
|
|
{{- include "traefik.labels" . | nindent 4 }}
|
|
{{- with .Values.gateway.annotations }}
|
|
annotations:
|
|
{{- toYaml . | nindent 4 }}
|
|
{{- end }}
|
|
spec:
|
|
gatewayClassName: {{ default "traefik" .Values.gatewayClass.name }}
|
|
{{- with .Values.gateway.infrastructure }}
|
|
infrastructure:
|
|
{{ toYaml . | nindent 4 }}
|
|
{{- end }}
|
|
listeners:
|
|
{{- range $name, $config := .Values.gateway.listeners }}
|
|
- name: {{ $name }}
|
|
{{ if not .port }}
|
|
{{- fail "ERROR: port needs to be specified" }}
|
|
{{- end -}}
|
|
{{ $found := false }}
|
|
{{- range $portName, $portConfig := $.Values.ports -}}
|
|
{{- if eq $portConfig.port $config.port -}}
|
|
{{ $found = true }}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
{{ if not $found }}
|
|
{{- fail (printf "ERROR: port %0.f is not declared in ports" .port ) }}
|
|
{{- end -}}
|
|
port: {{ .port }}
|
|
protocol: {{ .protocol }}
|
|
{{- with .hostname }}
|
|
hostname: {{ . | toYaml }}
|
|
{{- end }}
|
|
{{- with .namespacePolicy }}
|
|
allowedRoutes:
|
|
namespaces:
|
|
from: {{ . }}
|
|
{{- end }}
|
|
{{ if and (eq .protocol "HTTPS") (not .certificateRefs) }}
|
|
{{- fail "ERROR: certificateRefs needs to be specified using HTTPS" }}
|
|
{{- end }}
|
|
{{ if or .certificateRefs .mode }}
|
|
tls:
|
|
{{ with .mode }}
|
|
mode: {{ . }}
|
|
{{- end }}
|
|
{{ with .certificateRefs }}
|
|
certificateRefs:
|
|
{{- toYaml . | nindent 10 }}
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- end }}
|