87 lines
3.0 KiB
YAML
87 lines
3.0 KiB
YAML
{{- $services := .Values.service.additionalServices -}}
|
|
{{- $services = set $services "default" (omit .Values.service "additionalServices") }}
|
|
|
|
{{- range $name, $service := $services -}}
|
|
{{- if ne $service.enabled false -}}
|
|
|
|
{{- $fullname := include "traefik.service-name" (dict "root" $ "name" $name) }}
|
|
|
|
{{- $tcpPorts := dict -}}
|
|
{{- $udpPorts := dict -}}
|
|
{{- $exposedPorts := false -}}
|
|
{{- range $portName, $config := $.Values.ports -}}
|
|
{{- if $config -}}
|
|
{{- if ($config.http3).enabled -}}
|
|
{{- if (not $config.tls.enabled) -}}
|
|
{{- fail "ERROR: You cannot enable http3 without enabling tls" -}}
|
|
{{- end -}}
|
|
{{ $udpConfig := deepCopy $config -}}
|
|
{{ $_ := set $udpConfig "protocol" "UDP" -}}
|
|
{{ $_ := set $udpConfig "exposedPort" (default $config.exposedPort $config.http3.advertisedPort) -}}
|
|
{{- if (not $service.single) }}
|
|
{{ $_ := set $udpPorts (printf "%s-http3" $portName) $udpConfig -}}
|
|
{{- else }}
|
|
{{ $_ := set $tcpPorts (printf "%s-http3" $portName) $udpConfig -}}
|
|
{{- end }}
|
|
{{- end -}}
|
|
{{- if eq (toString $config.protocol) "UDP" -}}
|
|
{{ $_ := set $udpPorts $portName $config -}}
|
|
{{- end -}}
|
|
{{- if eq (toString (default "TCP" $config.protocol)) "TCP" -}}
|
|
{{ $_ := set $tcpPorts $portName $config -}}
|
|
{{- end -}}
|
|
{{- if (index (default dict $config.expose) $name) -}}
|
|
{{- $exposedPorts = true -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{- if (eq $exposedPorts false) -}}
|
|
{{- fail (printf "ERROR: Cannot create Service %s without ports" $fullname) -}}
|
|
{{- end -}}
|
|
|
|
{{- if and $exposedPorts (or $tcpPorts $service.single) }}
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: {{ $fullname }}
|
|
namespace: {{ template "traefik.namespace" $ }}
|
|
{{- template "traefik.service-metadata" (dict "root" $ "service" $service) }}
|
|
annotations:
|
|
{{- with (merge dict (default dict $service.annotationsTCP) (default dict $service.annotations)) }}
|
|
{{- toYaml . | nindent 4 }}
|
|
{{- end }}
|
|
spec:
|
|
{{- template "traefik.service-spec" (dict "root" $ "service" $service) }}
|
|
ports:
|
|
{{- template "traefik.service-ports" (dict "ports" $tcpPorts "serviceName" $name) }}
|
|
{{- if $service.single }}
|
|
{{- template "traefik.service-ports" (dict "ports" $udpPorts "serviceName" $name) }}
|
|
{{- end }}
|
|
{{- end }}
|
|
|
|
{{- if and $exposedPorts (and $udpPorts (not $service.single)) }}
|
|
{{- $ports := include "traefik.service-ports" (dict "ports" $udpPorts "serviceName" $name) }}
|
|
{{- if not (empty $ports) }}
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: {{ $fullname }}-udp
|
|
namespace: {{ template "traefik.namespace" $ }}
|
|
{{- template "traefik.service-metadata" (dict "root" $ "service" $service) }}
|
|
annotations:
|
|
{{- with (merge dict (default dict $service.annotationsUDP) (default dict $service.annotations)) }}
|
|
{{- toYaml . | nindent 4 }}
|
|
{{- end }}
|
|
spec:
|
|
{{- template "traefik.service-spec" (dict "root" $ "service" $service) }}
|
|
ports:
|
|
{{- $ports }}
|
|
{{- end }}
|
|
{{- end }}
|
|
|
|
{{- end -}}
|
|
{{- end -}}
|