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 -}}
 |