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