mirror of
https://github.com/TeamPiped/Piped-Kubernetes.git
synced 2024-08-14 23:57:15 +00:00
186 lines
No EOL
5.5 KiB
Smarty
186 lines
No EOL
5.5 KiB
Smarty
{{/*
|
|
Renders the Service objects required by the chart.
|
|
*/}}
|
|
{{- define "frontend.service" -}}
|
|
{{- /* Generate named services as required */ -}}
|
|
{{- range $name, $service := .Values.frontend.service }}
|
|
{{- if $service.enabled -}}
|
|
{{- $serviceValues := $service -}}
|
|
|
|
{{/* set the default nameOverride to the service name */}}
|
|
{{- if and (not $serviceValues.nameOverride) (ne $name (include "frontend.service.primary" $)) -}}
|
|
{{- $_ := set $serviceValues "nameOverride" $name -}}
|
|
{{ end -}}
|
|
|
|
{{- $_ := set $ "ObjectValues" (dict "service" $serviceValues) -}}
|
|
{{- include "frontend.classes.service" $ }}
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- end }}
|
|
|
|
{{/*
|
|
Return the primary service object
|
|
*/}}
|
|
{{- define "frontend.service.primary" -}}
|
|
{{- $enabledServices := dict -}}
|
|
{{- range $name, $service := .Values.frontend.service -}}
|
|
{{- if $service.enabled -}}
|
|
{{- $_ := set $enabledServices $name . -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{- $result := "" -}}
|
|
{{- range $name, $service := $enabledServices -}}
|
|
{{- if and (hasKey $service "primary") $service.primary -}}
|
|
{{- $result = $name -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{- if not $result -}}
|
|
{{- $result = keys $enabledServices | first -}}
|
|
{{- end -}}
|
|
{{- $result -}}
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Return the primary port for a given Service object.
|
|
*/}}
|
|
{{- define "frontend.classes.service.ports.primary" -}}
|
|
{{- $enabledPorts := dict -}}
|
|
{{- range $name, $port := .values.ports -}}
|
|
{{- if $port.enabled -}}
|
|
{{- $_ := set $enabledPorts $name . -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{- if eq 0 (len $enabledPorts) }}
|
|
{{- fail (printf "No ports are enabled for service \"%s\"!" .serviceName) }}
|
|
{{- end }}
|
|
|
|
{{- $result := "" -}}
|
|
{{- range $name, $port := $enabledPorts -}}
|
|
{{- if and (hasKey $port "primary") $port.primary -}}
|
|
{{- $result = $name -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{- if not $result -}}
|
|
{{- $result = keys $enabledPorts | first -}}
|
|
{{- end -}}
|
|
{{- $result -}}
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
This saves the name of the service in a global variable
|
|
*/}}
|
|
{{- define "frontend.servicename" -}}
|
|
{{- $values := .Values.frontend.service -}}
|
|
{{- if hasKey . "ObjectValues" -}}
|
|
{{- with .ObjectValues.service -}}
|
|
{{- $values = . -}}
|
|
{{- end -}}
|
|
{{ end -}}
|
|
|
|
{{- $serviceName := include "frontend.names.fullname" . -}}
|
|
{{- if and (hasKey $values "nameOverride") $values.nameOverride -}}
|
|
{{- $serviceName = printf "%v-%v" $serviceName $values.nameOverride -}}
|
|
{{ end -}}
|
|
{{ $serviceName }}
|
|
{{- end -}}
|
|
|
|
|
|
{{/*
|
|
This template serves as a blueprint for all Service objects that are created
|
|
within the web.
|
|
*/}}
|
|
{{- define "frontend.classes.service" -}}
|
|
{{- $values := .Values.frontend.service -}}
|
|
{{- if hasKey . "ObjectValues" -}}
|
|
{{- with .ObjectValues.service -}}
|
|
{{- $values = . -}}
|
|
{{- end -}}
|
|
{{ end -}}
|
|
|
|
{{- $serviceName := include "frontend.names.fullname" . -}}
|
|
{{- if and (hasKey $values "nameOverride") $values.nameOverride -}}
|
|
{{- $serviceName = printf "%v-%v" $serviceName $values.nameOverride -}}
|
|
{{ end -}}
|
|
{{- $svcType := $values.type | default "" -}}
|
|
{{- $primaryPort := get $values.ports (include "frontend.classes.service.ports.primary" (dict "values" $values)) }}
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: piped-frontend
|
|
{{- with (merge ($values.labels | default dict) (include "frontend.labels" $ | fromYaml)) }}
|
|
labels: {{- toYaml . | nindent 4 }}
|
|
{{- end }}
|
|
annotations:
|
|
{{- with (merge ($values.annotations | default dict) (include "frontend.annotations" $ | fromYaml)) }}
|
|
{{ toYaml . | nindent 4 }}
|
|
{{- end }}
|
|
spec:
|
|
{{- if (or (eq $svcType "ClusterIP") (empty $svcType)) }}
|
|
type: ClusterIP
|
|
{{- if $values.clusterIP }}
|
|
clusterIP: {{ $values.clusterIP }}
|
|
{{end}}
|
|
{{- else if eq $svcType "LoadBalancer" }}
|
|
type: {{ $svcType }}
|
|
{{- if $values.loadBalancerIP }}
|
|
loadBalancerIP: {{ $values.loadBalancerIP }}
|
|
{{- end }}
|
|
{{- if $values.loadBalancerSourceRanges }}
|
|
loadBalancerSourceRanges:
|
|
{{ toYaml $values.loadBalancerSourceRanges | nindent 4 }}
|
|
{{- end -}}
|
|
{{- else }}
|
|
type: {{ $svcType }}
|
|
{{- end }}
|
|
{{- if $values.externalTrafficPolicy }}
|
|
externalTrafficPolicy: {{ $values.externalTrafficPolicy }}
|
|
{{- end }}
|
|
{{- if $values.sessionAffinity }}
|
|
sessionAffinity: {{ $values.sessionAffinity }}
|
|
{{- if $values.sessionAffinityConfig }}
|
|
sessionAffinityConfig:
|
|
{{ toYaml $values.sessionAffinityConfig | nindent 4 }}
|
|
{{- end -}}
|
|
{{- end }}
|
|
{{- with $values.externalIPs }}
|
|
externalIPs:
|
|
{{- toYaml . | nindent 4 }}
|
|
{{- end }}
|
|
{{- if $values.publishNotReadyAddresses }}
|
|
publishNotReadyAddresses: {{ $values.publishNotReadyAddresses }}
|
|
{{- end }}
|
|
{{- if $values.ipFamilyPolicy }}
|
|
ipFamilyPolicy: {{ $values.ipFamilyPolicy }}
|
|
{{- end }}
|
|
{{- with $values.ipFamilies }}
|
|
ipFamilies:
|
|
{{ toYaml . | nindent 4 }}
|
|
{{- end }}
|
|
ports:
|
|
{{- range $name, $port := $values.ports }}
|
|
{{- if $port.enabled }}
|
|
- port: {{ $port.port }}
|
|
targetPort: {{ $port.targetPort | default $name }}
|
|
{{- if $port.protocol }}
|
|
{{- if or ( eq $port.protocol "HTTP" ) ( eq $port.protocol "HTTPS" ) ( eq $port.protocol "TCP" ) }}
|
|
protocol: TCP
|
|
{{- else }}
|
|
protocol: {{ $port.protocol }}
|
|
{{- end }}
|
|
{{- else }}
|
|
protocol: TCP
|
|
{{- end }}
|
|
name: {{ $name }}
|
|
{{- if (and (eq $svcType "NodePort") (not (empty $port.nodePort))) }}
|
|
nodePort: {{ $port.nodePort }}
|
|
{{ end }}
|
|
{{- end }}
|
|
{{- end }}
|
|
selector:
|
|
{{- include "frontend.labels.selectorLabels" . | nindent 4 }}
|
|
{{- end }} |