Skip to content

Commit c0a4ef2

Browse files
authored
Add configuration to support a custom ingressClassName -NLB and ALB (#375)
* Add env vars for wikipedia-wikiledia * Add configuration to support a custom ingressClassName * Add configuration to support a custom ingressClassName - overpass-api * Set gitsha for taginfo image * Rename ClusterIssuer and point to ingressClassName * Set global ingressClassName value * Support ALB for web service * Update ingress and service config to support aws ALB * Set annotations for ingress * Use ClusterIssuer only if it is NLB * Update configs * Add healthcheck-path for services - alb
1 parent b820304 commit c0a4ef2

File tree

18 files changed

+268
-232
lines changed

18 files changed

+268
-232
lines changed

images/taginfo/Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ RUN apt-get update && apt-get install -y \
3030

3131
RUN git clone https://github.com/taginfo/taginfo-tools.git $workdir/taginfo-tools && \
3232
cd $workdir/taginfo-tools && \
33+
git checkout 24412e65740752f8b962bd1cf3baf350d0672cc7 && \
3334
git submodule update --init && \
3435
mkdir build && cd build && \
3536
cmake .. && make

osm-seed/templates/cgimap/cgimap-service.yaml

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,12 @@ metadata:
99
environment: {{ .Values.environment }}
1010
release: {{ .Release.Name }}
1111
annotations:
12-
{{- if and (eq .Values.serviceType "LoadBalancer") .Values.AWS_SSL_ARN }}
13-
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: {{ .Values.AWS_SSL_ARN }}
14-
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
15-
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: https
16-
{{- end }}
17-
{{- if eq .Values.serviceType "ClusterIP" }}
18-
kubernetes.io/ingress.class: nginx
19-
cert-manager.io/cluster-issuer: letsencrypt-prod-issuer
20-
{{- else }}
21-
fake.annotation: fake
22-
{{- end }}
23-
{{- with .Values.cgimap.serviceAnnotations }}
24-
{{- toYaml . | nindent 4 }}
12+
# NLB
13+
{{- if and (eq .Values.ingressClassNameType "nlb" ) (eq .Values.serviceType "ClusterIP") }}
14+
service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
15+
service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: "ip"
16+
service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "300"
17+
cert-manager.io/cluster-issuer: {{ .Release.Name }}-letsencrypt-prod-issuer
2518
{{- end }}
2619
spec:
2720
type: {{ .Values.serviceType }}

osm-seed/templates/letsencrypt-issuer.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
{{- if and (eq .Values.serviceType "ClusterIP") (eq .Values.createClusterIssuer true) }}
1+
{{- if and (eq .Values.serviceType "ClusterIP") (eq .Values.ingressClassNameType "elb") }}
22
apiVersion: cert-manager.io/v1
33
kind: ClusterIssuer
44
metadata:
5-
name: letsencrypt-prod-issuer
5+
name: {{ .Release.Name }}-letsencrypt-prod-issuer
66
spec:
77
acme:
88
# You must replace this email address with your own.
@@ -15,12 +15,12 @@ spec:
1515
server: https://acme-v02.api.letsencrypt.org/directory
1616
privateKeySecretRef:
1717
# Secret resource used to store the account's private key.
18-
name: letsencrypt-issuer-key
18+
name: {{ .Release.Name }}-letsencrypt-issuer-key
1919
# Enable the HTTP-01 challenge provider
2020
# you prove ownership of a domain by ensuring that a particular
2121
# file is present at the domain
2222
solvers:
2323
- http01:
2424
ingress:
25-
class: nginx
25+
class: {{ .Values.ingressClassName }}
2626
{{- end }}

osm-seed/templates/nominatim-api/nominatim-ingress.yaml

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,27 @@ kind: Ingress
44
metadata:
55
name: {{ template "osm-seed.fullname" . }}-ingress-nominatim-api
66
annotations:
7+
## NLB
8+
{{- if eq .Values.ingressClassNameType "nlb" }}
79
kubernetes.io/ingress.class: nginx
8-
cert-manager.io/cluster-issuer: letsencrypt-prod-issuer
9-
nginx.ingress.kubernetes.io/proxy-body-size: 5m
10-
nginx.ingress.kubernetes.io/use-regex: "true"
10+
cert-manager.io/cluster-issuer: {{ .Release.Name }}-letsencrypt-prod-issuer
11+
nginx.ingress.kubernetes.io/proxy-body-size: 200m
12+
nginx.ingress.kubernetes.io/proxy-connect-timeout: "600"
13+
nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
14+
nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
15+
{{- end }}
16+
# ALB
17+
{{- if eq .Values.ingressClassNameType "alb" }}
18+
kubernetes.io/ingress.class: alb
19+
alb.ingress.kubernetes.io/group.name: {{ .Release.Name }}
20+
alb.ingress.kubernetes.io/scheme: "internet-facing"
21+
alb.ingress.kubernetes.io/target-type: "ip"
22+
alb.ingress.kubernetes.io/listen-ports: '{{ .Values.alb.listenPorts | default "[{\"HTTP\":80},{\"HTTPS\":443}]" }}'
23+
alb.ingress.kubernetes.io/certificate-arn: "{{ .Values.alb.certificateArn }}"
24+
alb.ingress.kubernetes.io/ssl-redirect: '443'
25+
{{- end }}
1126
spec:
12-
ingressClassName: nginx
27+
ingressClassName: {{ .Values.ingressClassName }}
1328
tls:
1429
- hosts:
1530
{{- if .Values.nominatimApi.ingressDomain }}

osm-seed/templates/nominatim-api/nominatim-service.yaml

Lines changed: 9 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -9,51 +9,28 @@ metadata:
99
environment: {{ .Values.environment }}
1010
release: {{ .Release.Name }}
1111
annotations:
12-
{{- if and (eq .Values.serviceType "LoadBalancer") .Values.AWS_SSL_ARN }}
13-
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: {{ .Values.AWS_SSL_ARN }}
14-
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
15-
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: https
12+
# NLB
13+
{{- if and (eq .Values.ingressClassNameType "nlb" ) (eq .Values.serviceType "ClusterIP") }}
14+
service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
15+
service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: "ip"
16+
service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "300"
17+
cert-manager.io/cluster-issuer: {{ .Release.Name }}-letsencrypt-prod-issuer
1618
{{- end }}
17-
{{- if eq .Values.serviceType "ClusterIP" }}
18-
kubernetes.io/ingress.class: nginx
19-
cert-manager.io/cluster-issuer: letsencrypt-prod-issuer
20-
{{- else }}
21-
fake.annotation: fake
22-
{{- end }}
23-
{{- with .Values.nominatimApi.serviceAnnotations }}
24-
{{- toYaml . | nindent 4 }}
19+
20+
{{- if and (eq .Values.ingressClassNameType "alb" ) (eq .Values.serviceType "ClusterIP") }}
21+
alb.ingress.kubernetes.io/healthcheck-path: {{ .Values.nominatimApi.healthCheckPath | default "/" }}
2522
{{- end }}
2623
spec:
27-
{{- if and .Values.nominatimApi.enabled .Values.nominatimApi.externalService.enabled }}
28-
# External service (no selector)
29-
ports:
30-
- name: http
31-
port: 80
32-
targetPort: {{ .Values.nominatimApi.externalService.port | default "80" }}
33-
protocol: TCP
34-
{{- else }}
35-
# Internal service
3624
type: {{ .Values.serviceType }}
3725
ports:
3826
- port: 80
3927
protocol: TCP
4028
name: http
4129
targetPort: api
42-
# - port: 5432
43-
# protocol: TCP
44-
# name: postgres
45-
# targetPort: postgres
46-
{{- if and (eq .Values.serviceType "LoadBalancer") .Values.AWS_SSL_ARN }}
47-
- port: 443
48-
protocol: TCP
49-
name: https
50-
targetPort: apache
51-
{{- end }}
5230
selector:
5331
app: {{ template "osm-seed.name" . }}
5432
release: {{ .Release.Name }}
5533
run: {{ .Release.Name }}-nominatim
56-
{{- end }}
5734
{{- end }}
5835
---
5936
{{- if and .Values.nominatimApi.enabled .Values.nominatimUI.enabled }}
@@ -67,15 +44,6 @@ metadata:
6744
environment: {{ .Values.environment }}
6845
release: {{ .Release.Name }}
6946
spec:
70-
{{- if and .Values.nominatimUI.enabled .Values.nominatimUI.externalService.enabled }}
71-
# External service (no selector)
72-
ports:
73-
- name: http
74-
port: 80
75-
targetPort: {{ .Values.nominatimUI.externalService.port | default "80" }}
76-
protocol: TCP
77-
{{- else }}
78-
# Internal service
7947
type: ClusterIP
8048
ports:
8149
- port: 80
@@ -86,5 +54,4 @@ spec:
8654
app: {{ template "osm-seed.name" . }}
8755
release: {{ .Release.Name }}
8856
run: {{ .Release.Name }}-nominatim
89-
{{- end }}
9057
{{- end }}

osm-seed/templates/osmcha-app/ingress.yaml

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,27 @@ kind: Ingress
44
metadata:
55
name: {{ template "osm-seed.fullname" . }}-ingress-osmcha-app
66
annotations:
7+
## NLB
8+
{{- if eq .Values.ingressClassNameType "nlb" }}
79
kubernetes.io/ingress.class: nginx
8-
cert-manager.io/cluster-issuer: letsencrypt-prod-issuer
9-
nginx.ingress.kubernetes.io/proxy-body-size: 5m
10+
cert-manager.io/cluster-issuer: {{ .Release.Name }}-letsencrypt-prod-issuer
11+
nginx.ingress.kubernetes.io/proxy-body-size: 200m
12+
nginx.ingress.kubernetes.io/proxy-connect-timeout: "600"
13+
nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
14+
nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
15+
{{- end }}
16+
# ALB
17+
{{- if eq .Values.ingressClassNameType "alb" }}
18+
kubernetes.io/ingress.class: alb
19+
alb.ingress.kubernetes.io/group.name: {{ .Release.Name }}
20+
alb.ingress.kubernetes.io/scheme: "internet-facing"
21+
alb.ingress.kubernetes.io/target-type: "ip"
22+
alb.ingress.kubernetes.io/listen-ports: '{{ .Values.alb.listenPorts | default "[{\"HTTP\":80},{\"HTTPS\":443}]" }}'
23+
alb.ingress.kubernetes.io/certificate-arn: "{{ .Values.alb.certificateArn }}"
24+
alb.ingress.kubernetes.io/ssl-redirect: '443'
25+
{{- end }}
1026
spec:
11-
ingressClassName: nginx
27+
ingressClassName: {{ .Values.ingressClassName }}
1228
tls:
1329
- hosts:
1430
{{- if .Values.osmchaApi.ingressDomain }}

osm-seed/templates/osmcha-app/service.yaml

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,12 @@ metadata:
99
environment: {{ .Values.environment }}
1010
release: {{ .Release.Name }}
1111
annotations:
12-
{{- if and (eq .Values.serviceType "LoadBalancer") .Values.AWS_SSL_ARN }}
13-
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: {{ .Values.AWS_SSL_ARN }}
14-
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
15-
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: https
16-
{{- end }}
17-
{{- if eq .Values.serviceType "ClusterIP" }}
18-
kubernetes.io/ingress.class: nginx
19-
cert-manager.io/cluster-issuer: letsencrypt-prod-issuer
20-
{{- else }}
21-
fake.annotation: fake
22-
{{- end }}
23-
{{- with .Values.osmchaApi.serviceAnnotations }}
24-
{{- toYaml . | nindent 4 }}
12+
# NLB
13+
{{- if and (eq .Values.ingressClassNameType "nlb" ) (eq .Values.serviceType "ClusterIP") }}
14+
service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
15+
service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: "ip"
16+
service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "300"
17+
cert-manager.io/cluster-issuer: {{ .Release.Name }}-letsencrypt-prod-issuer
2518
{{- end }}
2619
spec:
2720
type: {{ .Values.serviceType }}

osm-seed/templates/overpass-api/overpass-api-ingress.yaml

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,27 @@ kind: Ingress
44
metadata:
55
name: {{ template "osm-seed.fullname" . }}-ingress-overpass-api
66
annotations:
7+
## NLB
8+
{{- if eq .Values.ingressClassNameType "nlb" }}
79
kubernetes.io/ingress.class: nginx
8-
cert-manager.io/cluster-issuer: letsencrypt-prod-issuer
10+
cert-manager.io/cluster-issuer: {{ .Release.Name }}-letsencrypt-prod-issuer
911
nginx.ingress.kubernetes.io/proxy-body-size: 200m
10-
nginx.ingress.kubernetes.io/proxy-connect-timeout: "1200"
11-
nginx.ingress.kubernetes.io/proxy-read-timeout: "1200"
12-
nginx.ingress.kubernetes.io/proxy-send-timeout: "1200"
12+
nginx.ingress.kubernetes.io/proxy-connect-timeout: "600"
13+
nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
14+
nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
15+
{{- end }}
16+
# ALB
17+
{{- if eq .Values.ingressClassNameType "alb" }}
18+
kubernetes.io/ingress.class: alb
19+
alb.ingress.kubernetes.io/group.name: {{ .Release.Name }}
20+
alb.ingress.kubernetes.io/scheme: "internet-facing"
21+
alb.ingress.kubernetes.io/target-type: "ip"
22+
alb.ingress.kubernetes.io/listen-ports: '{{ .Values.alb.listenPorts | default "[{\"HTTP\":80},{\"HTTPS\":443}]" }}'
23+
alb.ingress.kubernetes.io/certificate-arn: "{{ .Values.alb.certificateArn }}"
24+
alb.ingress.kubernetes.io/ssl-redirect: '443'
25+
{{- end }}
1326
spec:
14-
ingressClassName: nginx
27+
ingressClassName: {{ .Values.ingressClassName }}
1528
tls:
1629
- hosts:
1730
{{- if .Values.overpassApi.ingressDomain }}

osm-seed/templates/overpass-api/overpass-api-service.yaml

Lines changed: 9 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -9,30 +9,18 @@ metadata:
99
environment: {{ .Values.environment }}
1010
release: {{ .Release.Name }}
1111
annotations:
12-
{{- if and (eq .Values.serviceType "LoadBalancer") .Values.AWS_SSL_ARN }}
13-
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: {{ .Values.AWS_SSL_ARN }}
14-
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
15-
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: https
12+
# NLB
13+
{{- if and (eq .Values.ingressClassNameType "nlb" ) (eq .Values.serviceType "ClusterIP") }}
14+
service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
15+
service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: "ip"
16+
service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "300"
17+
cert-manager.io/cluster-issuer: {{ .Release.Name }}-letsencrypt-prod-issuer
1618
{{- end }}
17-
{{- if eq .Values.serviceType "ClusterIP" }}
18-
kubernetes.io/ingress.class: nginx
19-
cert-manager.io/cluster-issuer: letsencrypt-prod-issuer
20-
{{- else }}
21-
fake.annotation: fake
22-
{{- end }}
23-
{{- with .Values.overpassApi.serviceAnnotations }}
24-
{{- toYaml . | nindent 4 }}
19+
20+
{{- if and (eq .Values.ingressClassNameType "alb" ) (eq .Values.serviceType "ClusterIP") }}
21+
alb.ingress.kubernetes.io/healthcheck-path: {{ .Values.overpassApi.healthCheckPath | default "/" }}
2522
{{- end }}
2623
spec:
27-
{{- if and .Values.overpassApi.enabled .Values.overpassApi.externalService.enabled }}
28-
# External service (no selector)
29-
ports:
30-
- name: http
31-
port: 80
32-
targetPort: {{ .Values.overpassApi.externalService.port | default "80" }}
33-
protocol: TCP
34-
{{- else }}
35-
# Internal service
3624
type: {{ .Values.serviceType }}
3725
ports:
3826
- port: 80
@@ -49,5 +37,4 @@ spec:
4937
app: {{ template "osm-seed.name" . }}
5038
release: {{ .Release.Name }}
5139
run: {{ .Release.Name }}-overpass-api
52-
{{- end }}
5340
{{- end }}

osm-seed/templates/taginfo/taginfo-ingress.yaml

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,28 @@ kind: Ingress
44
metadata:
55
name: {{ template "osm-seed.fullname" . }}-ingress-taginfo-api
66
annotations:
7+
## NLB
8+
{{- if eq .Values.ingressClassNameType "nlb" }}
79
kubernetes.io/ingress.class: nginx
8-
cert-manager.io/cluster-issuer: letsencrypt-prod-issuer
9-
nginx.ingress.kubernetes.io/proxy-body-size: 5m
10+
cert-manager.io/cluster-issuer: {{ .Release.Name }}-letsencrypt-prod-issuer
11+
nginx.ingress.kubernetes.io/proxy-body-size: 200m
12+
nginx.ingress.kubernetes.io/proxy-connect-timeout: "600"
13+
nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
14+
nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
15+
{{- end }}
16+
# ALB
17+
{{- if eq .Values.ingressClassNameType "alb" }}
18+
kubernetes.io/ingress.class: alb
19+
alb.ingress.kubernetes.io/group.name: {{ .Release.Name }}
20+
alb.ingress.kubernetes.io/scheme: "internet-facing"
21+
alb.ingress.kubernetes.io/target-type: "ip"
22+
alb.ingress.kubernetes.io/listen-ports: '{{ .Values.alb.listenPorts | default "[{\"HTTP\":80},{\"HTTPS\":443}]" }}'
23+
alb.ingress.kubernetes.io/certificate-arn: "{{ .Values.alb.certificateArn }}"
24+
alb.ingress.kubernetes.io/ssl-redirect: '443'
25+
{{- end }}
1026
spec:
11-
ingressClassName: nginx
27+
ingressClassName: {{ .Values.ingressClassName }}
28+
{{- if eq .Values.ingressClassNameType "nlb" }}
1229
tls:
1330
- hosts:
1431
{{- if .Values.taginfo.ingressDomain }}
@@ -17,6 +34,7 @@ spec:
1734
- taginfo.{{ .Values.domain }}
1835
{{- end }}
1936
secretName: {{ template "osm-seed.fullname" . }}-secret-taginfo
37+
{{- end }}
2038
rules:
2139
- host: {{ if .Values.taginfo.ingressDomain }}{{ .Values.taginfo.ingressDomain }}{{ else }}taginfo.{{ .Values.domain }}{{ end }}
2240
http:

0 commit comments

Comments
 (0)