This repository was archived by the owner on Dec 28, 2024. It is now read-only.
File tree 10 files changed +104
-62
lines changed
10 files changed +104
-62
lines changed Original file line number Diff line number Diff line change @@ -12,3 +12,9 @@ build/*
12
12
13
13
.idea
14
14
client-env.sh
15
+
16
+ k8s /helm /certs /*
17
+ ! k8s /helm /certs /aoc2024-http.crt
18
+ ! k8s /helm /certs /aoc2024-http.key
19
+ ! k8s /helm /certs /aoc2024-grpc.crt
20
+ ! k8s /helm /certs /aoc2024-grpc.key
Original file line number Diff line number Diff line change @@ -16,6 +16,7 @@ ARG DAY
16
16
COPY solutions/day${DAY} solutions/day${DAY}
17
17
RUN go build -o app solutions/day${DAY}/main.go
18
18
EXPOSE 3000
19
+ EXPOSE 50051
19
20
20
21
HEALTHCHECK \
21
22
--start-interval=10s \
Original file line number Diff line number Diff line change
1
+ [req]
2
+ distinguished_name = req_distinguished_name
3
+ x509_extensions = v3_req
4
+ prompt = no
5
+
6
+ [req_distinguished_name]
7
+ CN = *.aoc2024.se
8
+
9
+ [v3_req]
10
+ keyUsage = critical, digitalSignature, keyEncipherment
11
+ extendedKeyUsage = serverAuth
12
+ subjectAltName = @alt_names
13
+
14
+ [alt_names]
15
+ DNS.1 = *.aoc2024.se
16
+ DNS.2 = *.grpc.aoc2024.se
Original file line number Diff line number Diff line change
1
+ #! /usr/bin/env bash
2
+ # Creates a certificate for the Kubernetes ingress controller,
3
+ # this is required by the nginx-ingress controller to enable HTTP/2,
4
+ # and HTTP 2 is required for gRPC.
5
+ #
6
+ # The certificate is already created and checked into this repository,
7
+ # but the command is left here as documentation. The checked in certificate
8
+ # is valid for ~100 years.
9
+
10
+ openssl req -x509 -nodes -days 36500 -newkey rsa:2048 \
11
+ -keyout k8s/helm/certs/aoc2024.key -out k8s/helm/certs/aoc2024.crt \
12
+ -subj " /CN=*.aoc2024.se/O=AdventOfCode" \
13
+ -config ./k8s/cert.config
Original file line number Diff line number Diff line change 31
31
image : aoc2024-day{{ .day }}
32
32
imagePullPolicy : Never
33
33
ports :
34
- - containerPort : {{ .containerPort | default 3000 }}
34
+ - containerPort : {{ .containerHttpPort | default 3000 }}
35
+ - containerPort : {{ .containerGrpcPort | default 50051 }}
35
36
36
37
---
37
38
{{- end }}
Original file line number Diff line number Diff line change
1
+ # An easier way to do this would be to generate one ingress resource
2
+ # per service, similar to how we have done for deployments and services.
3
+ # But now that I've got this working I think it's kinda clean, even though
4
+ # ImplementationSpecific pathType is bit of a code smell.
5
+
6
+ apiVersion : networking.k8s.io/v1
7
+ kind : Ingress
8
+ metadata :
9
+ name : aoc2024-ingress-grpc
10
+ annotations :
11
+ nginx.ingress.kubernetes.io/ssl-redirect : " true"
12
+ nginx.ingress.kubernetes.io/backend-protocol : " GRPC"
13
+ spec :
14
+ ingressClassName : nginx
15
+ tls :
16
+ - secretName : tls-certificate
17
+ hosts :
18
+ {{- range .Values.days}}
19
+ - " day{{ .day }}.grpc.{{ $.Values.hostname }}"
20
+ {{- end }}
21
+ rules :
22
+ {{- range .Values.days }}
23
+ - host : " day{{ .day }}.grpc.{{ $.Values.hostname }}"
24
+ http :
25
+ paths :
26
+ - path : /
27
+ pathType : Prefix
28
+ backend :
29
+ service :
30
+ name : aoc2024-day{{ .day }}
31
+ port : { number: 50051 }
32
+ {{- end }}
33
+
Original file line number Diff line number Diff line change @@ -7,19 +7,18 @@ apiVersion: networking.k8s.io/v1
7
7
kind : Ingress
8
8
metadata :
9
9
name : aoc2024-ingress
10
- annotations :
11
- nginx.ingress.kubernetes.io/rewrite-target : /$2
12
10
spec :
13
11
ingressClassName : nginx
14
12
rules :
15
- - http :
13
+ {{- range .Values.days }}
14
+ - host : " day{{ .day }}.{{ $.Values.hostname }}"
15
+ http :
16
16
paths :
17
- {{- range .Values.days }}
18
- - path : /day{{ .day }}(/|$)(.*)
19
- pathType : ImplementationSpecific
17
+ - path : /
18
+ pathType : Prefix
20
19
backend :
21
20
service :
22
21
name : aoc2024-day{{ .day }}
23
- port :
24
- number : 3000
25
- {{- end }}
22
+ port : { name: http }
23
+ {{- end }}
24
+
Original file line number Diff line number Diff line change 14
14
day : " {{ .day }}"
15
15
ports :
16
16
- protocol : TCP
17
- port : {{ .servicePort | default 3000 }}
18
- targetPort : {{ .containerPort | default 3000 }}
17
+ port : {{ .serviceHttpPort | default 3000 }}
18
+ targetPort : {{ .containerHttpPort | default 3000 }}
19
19
name : http
20
+ - protocol : TCP
21
+ port : {{ .serviceGrpcPort | default 50051 }}
22
+ targetPort : {{ .containerGrpcPort | default 50051 }}
23
+ name : grpc
20
24
21
25
---
22
26
{{- end }}
Original file line number Diff line number Diff line change
1
+ apiVersion : v1
2
+ kind : Secret
3
+ metadata :
4
+ name : tls-certificate
5
+ type : kubernetes.io/tls
6
+ data :
7
+ tls.crt : {{ .Files.Get .Values.cert.crtFile | b64enc }}
8
+ tls.key : {{ .Files.Get .Values.cert.keyFile | b64enc }}
Original file line number Diff line number Diff line change
1
+ hostname : ' aoc2024.se'
2
+ cert :
3
+ crtFile : ' certs/aoc2024.crt'
4
+ keyFile : ' certs/aoc2024.key'
5
+
1
6
days :
2
7
- day : ' 01'
3
8
replicas : 2
4
- containerPort : 3000
5
- servicePort : 3000
6
9
version : v1
10
+ # These parameters are optional,
11
+ # set here with default values as an example.
12
+ containerHttpPort : 3000
13
+ serviceHttpPort : 3000
14
+ containerGrpcPort : 50051
15
+ serviceGrpcPort : 50051
7
16
8
17
- day : ' 02'
9
18
replicas : 2
10
- containerPort : 3000
11
- servicePort : 3000
12
19
version : v1
13
20
14
21
- day : ' 03'
15
22
replicas : 2
16
- containerPort : 3000
17
- servicePort : 3000
18
23
version : v1
19
24
20
25
- day : ' 04'
21
26
replicas : 2
22
- containerPort : 3000
23
- servicePort : 3000
24
27
version : v1
25
28
26
29
- day : ' 05'
27
30
replicas : 2
28
- containerPort : 3000
29
- servicePort : 3000
30
31
version : v1
31
32
32
33
- day : ' 06'
33
34
replicas : 2
34
- containerPort : 3000
35
- servicePort : 3000
36
35
version : v1
37
36
38
37
- day : ' 07'
39
38
replicas : 2
40
- containerPort : 3000
41
- servicePort : 3000
42
39
version : v1
43
40
44
41
- day : ' 08'
45
42
replicas : 2
46
- containerPort : 3000
47
- servicePort : 3000
48
43
version : v1
49
44
50
45
- day : ' 09'
51
46
replicas : 2
52
- containerPort : 3000
53
- servicePort : 3000
54
47
version : v1
55
48
56
49
- day : ' 10'
57
50
replicas : 2
58
- containerPort : 3000
59
- servicePort : 3000
60
51
version : v1
61
52
62
53
- day : ' 11'
63
54
replicas : 2
64
- containerPort : 3000
65
- servicePort : 3000
66
55
version : v1
67
56
68
57
- day : ' 12'
69
58
replicas : 2
70
- containerPort : 3000
71
- servicePort : 3000
72
59
version : v1
73
60
74
61
- day : ' 13'
75
62
replicas : 2
76
- containerPort : 3000
77
- servicePort : 3000
78
63
version : v1
79
64
80
65
- day : ' 14'
81
66
replicas : 2
82
- containerPort : 3000
83
- servicePort : 3000
84
67
version : v1
85
68
86
69
- day : ' 15'
87
70
replicas : 2
88
- containerPort : 3000
89
- servicePort : 3000
90
71
version : v1
91
72
92
73
- day : ' 16'
93
74
replicas : 2
94
- containerPort : 3000
95
- servicePort : 3000
96
75
version : v1
97
76
98
77
- day : ' 17'
99
78
replicas : 2
100
- containerPort : 3000
101
- servicePort : 3000
102
79
version : v1
103
80
104
81
- day : ' 18'
105
82
replicas : 2
106
- containerPort : 3000
107
- servicePort : 3000
108
83
version : v1
109
84
110
85
- day : ' 19'
111
86
replicas : 2
112
- containerPort : 3000
113
- servicePort : 3000
114
87
version : v1
115
88
116
89
- day : ' 20'
117
90
replicas : 2
118
- containerPort : 3000
119
- servicePort : 3000
120
91
version : v1
121
92
122
93
- day : ' 21'
123
94
replicas : 2
124
- containerPort : 3000
125
- servicePort : 3000
126
95
version : v1
127
96
128
97
- day : ' 22'
129
98
replicas : 2
130
- containerPort : 3000
131
- servicePort : 3000
132
99
version : v1
133
100
134
101
- day : ' 23'
135
102
replicas : 2
136
- containerPort : 3000
137
- servicePort : 3000
138
103
version : v1
139
104
140
105
- day : ' 24'
141
106
replicas : 2
142
- containerPort : 3000
143
- servicePort : 3000
144
107
version : v1
145
108
146
109
- day : ' 25'
147
110
replicas : 2
148
- containerPort : 3000
149
- servicePort : 3000
150
111
version : v1
You can’t perform that action at this time.
0 commit comments