7fee67a7a40721b258589d2c7ef7bb154e849624
[oom.git] / kubernetes / common / common / templates / _ingress.tpl
1 {{- define "ingress.config.host" -}}
2 {{-   $dot := default . .dot -}}
3 {{-   $baseaddr := (required "'baseaddr' param, set to the specific part of the fqdn, is required." .baseaddr) -}}
4 {{-   $burl := (required "'baseurl' param, set to the generic part of the fqdn, is required." $dot.Values.global.ingress.virtualhost.baseurl) -}}
5 {{ printf "%s.%s" $baseaddr $burl }}
6 {{- end -}}
7
8 {{- define "ingress.config.port" -}}
9 {{-   $dot := default . .dot -}}
10 {{ range .Values.ingress.service }}
11 {{-   $baseaddr := (required "'baseaddr' param, set to the specific part of the fqdn, is required." .baseaddr) }}
12   - host: {{ include "ingress.config.host" (dict "dot" $dot "baseaddr" $baseaddr) }}
13     http:
14       paths:
15       - backend:
16           serviceName: {{ .name }}
17           servicePort: {{ .port }}
18         {{- if .path }}
19         path: {{ .path }}
20         {{- end }}
21 {{- end }}
22 {{- end -}}
23
24
25 {{- define "ingress.config.annotations.ssl" -}}
26 {{- if .Values.ingress.config -}}
27 {{- if .Values.ingress.config.ssl -}}
28 {{- if eq .Values.ingress.config.ssl "redirect" -}}
29 kubernetes.io/ingress.class: nginx
30 nginx.ingress.kubernetes.io/ssl-passthrough: "true"
31 nginx.ingress.kubernetes.io/ssl-redirect: "true"
32 {{-  else if eq .Values.ingress.config.ssl "native" -}}
33 nginx.ingress.kubernetes.io/ssl-redirect: "true"
34 {{-  else if eq .Values.ingress.config.ssl "none" -}}
35 nginx.ingress.kubernetes.io/ssl-redirect: "false"
36 {{- end -}}
37 {{- end -}}
38 {{- end -}}
39 {{- end -}}
40
41
42 {{- define "ingress.config.annotations" -}}
43 {{- if .Values.ingress -}}
44 {{- if .Values.ingress.annotations -}}
45 {{ toYaml .Values.ingress.annotations | indent 4 | trim }}
46 {{- end -}}
47 {{- end -}}
48 {{ include "ingress.config.annotations.ssl" . | indent 4 | trim }}
49 {{- end -}}
50
51 {{- define "common.ingress._overrideIfDefined" -}}
52   {{- $currValue := .currVal }}
53   {{- $parent := .parent }}
54   {{- $var := .var }}
55   {{- if $parent -}}
56     {{- if hasKey $parent $var }}
57       {{- default "" (index $parent $var) }}
58     {{- else -}}
59       {{- default "" $currValue -}}
60     {{- end -}}
61   {{- else -}}
62     {{- default "" $currValue }}
63   {{- end -}}
64 {{- end -}}
65
66 {{- define "common.ingress" -}}
67 {{- if .Values.ingress -}}
68   {{- $ingressEnabled := default false .Values.ingress.enabled -}}
69   {{- $ingressEnabled := include "common.ingress._overrideIfDefined" (dict "currVal" $ingressEnabled "parent" (default (dict) .Values.global.ingress) "var" "enabled") }}
70   {{- $ingressEnabled := include "common.ingress._overrideIfDefined" (dict "currVal" $ingressEnabled "parent" .Values.ingress "var" "enabledOverride") }}
71   {{- if $ingressEnabled }}
72 apiVersion: networking.k8s.io/v1beta1
73 kind: Ingress
74 metadata:
75   name: {{ include "common.fullname" . }}-ingress
76   annotations:
77     {{ include "ingress.config.annotations" . }}
78   labels:
79     app: {{ .Chart.Name }}
80     chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
81     release: {{ include "common.release" . }}
82     heritage: {{ .Release.Service }}
83 spec:
84   rules:
85   {{ include "ingress.config.port" . | trim }}
86 {{- if .Values.ingress.tls }}
87   tls:
88 {{ toYaml .Values.ingress.tls | indent 4 }}
89 {{- end -}}
90 {{- if .Values.ingress.config -}}
91 {{- if .Values.ingress.config.tls -}}
92 {{-   $dot := default . .dot }}
93   tls:
94   - hosts:
95   {{- range .Values.ingress.service }}{{ $baseaddr := required "baseaddr" .baseaddr }}
96     - {{ include "ingress.config.host" (dict "dot" $dot "baseaddr" $baseaddr) }}
97   {{- end }}
98     secretName: {{ required "secret" (tpl (default "" .Values.ingress.config.tls.secret) $dot) }}
99 {{- end -}}
100 {{- end -}}
101 {{- end -}}
102 {{- end -}}
103 {{- end -}}