Integrating traefik
This commit is contained in:
86
opencloud/charts/traefik/templates/service.yaml
Normal file
86
opencloud/charts/traefik/templates/service.yaml
Normal file
@@ -0,0 +1,86 @@
|
||||
{{- $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 -}}
|
||||
Reference in New Issue
Block a user