13
13
14
14
KEYSTORE_PATH = "/etc/keystore"
15
15
16
+ HTTPS_PORT = 8443
17
+
18
+ HTTP_PORT = 8080
19
+
20
+ ACTUATOR_CONFIG_BLOCK = {
21
+ "management" : {
22
+ "endpoint" : {
23
+ "health" : {
24
+ "enabled" : True
25
+ },
26
+ "prometheus" : {
27
+ "enabled" : True
28
+ }
29
+ },
30
+ "endpoints" : {
31
+ "web" : {
32
+ "exposure" : {
33
+ "include" : "health,prometheus"
34
+ }
35
+ }
36
+ }
37
+ }
38
+ }
16
39
17
40
class VolumeConfig :
18
41
"""
@@ -29,6 +52,7 @@ class VolumeConfig:
29
52
- replicas
30
53
- persistentVolumeClaims
31
54
- tls
55
+ - services
32
56
"""
33
57
34
58
_route_vol_name = "integration-route-config"
@@ -195,10 +219,9 @@ def _get_server_ssl_config(parent) -> Optional[Mapping]:
195
219
"key-store" : str (PurePosixPath (KEYSTORE_PATH , keystore ["key" ])),
196
220
"key-store-type" : keystore ["type" ].upper (),
197
221
},
198
- "port" : 8443 ,
222
+ "port" : HTTPS_PORT ,
199
223
}
200
224
201
-
202
225
def _service_name_env_var (parent ) -> Mapping [str , str ]:
203
226
return {"name" : "SERVICE_NAME" , "value" : parent ["metadata" ]["name" ]}
204
227
@@ -218,6 +241,8 @@ def _spring_app_config_env_var(parent) -> Optional[Mapping]:
218
241
app_config ["spring" ]["config.import" ] = "kubernetes:"
219
242
app_config ["spring" ]["cloud" ] = cloud_config
220
243
244
+ app_config .update (ACTUATOR_CONFIG_BLOCK )
245
+
221
246
return {
222
247
"name" : "SPRING_APPLICATION_JSON" ,
223
248
"value" : json .dumps (app_config ),
@@ -279,10 +304,10 @@ def _create_pod_template(parent, labels, integration_image) -> Mapping[str, Any
279
304
280
305
vol_config = VolumeConfig (parent ["spec" ])
281
306
282
- has_tls = "tls" in parent [ "spec" ] and "keystore" in parent [ "spec" ][ "tls" ]
307
+ has_tls = _has_tls ( parent )
283
308
284
- scheme = "HTTPS" if has_tls else "HTTP"
285
- management_port = 8443 if has_tls else 8080
309
+ scheme = _get_scheme ( has_tls ). upper ()
310
+ management_port = _get_management_port ( has_tls )
286
311
287
312
pod_template = {
288
313
"metadata" : {"labels" : labels },
@@ -388,9 +413,51 @@ def _new_deployment(parent):
388
413
389
414
return deployment
390
415
416
+ def _new_actuator_service (parent ):
417
+ parent_metadata = parent ["metadata" ]
418
+
419
+ has_tls = _has_tls (parent )
420
+ scheme = _get_scheme (has_tls )
421
+ management_port = _get_management_port (has_tls )
422
+
423
+ service = {
424
+ "apiVersion" : "v1" ,
425
+ "kind" : "Service" ,
426
+ "metadata" : {
427
+ "labels" : {
428
+ "integration-route" : parent_metadata ["name" ],
429
+ "prometheus-metrics-enabled" : "true"
430
+ },
431
+ "name" : f'{ parent_metadata ["name" ]} -actuator'
432
+ },
433
+ "spec" : {
434
+ "ports" : [
435
+ {
436
+ "name" : scheme ,
437
+ "port" : management_port ,
438
+ "protocol" : "TCP" ,
439
+ "targetPort" : management_port
440
+ }
441
+ ],
442
+ "selector" : {
443
+ "app.kubernetes.io/instance" : f'integrationroute-{ parent_metadata ["name" ]} '
444
+ }
445
+ }
446
+ }
447
+
448
+ return service
449
+
450
+ def _has_tls (parent ) -> bool :
451
+ return "tls" in parent ["spec" ] and "keystore" in parent ["spec" ]["tls" ]
452
+
453
+ def _get_scheme (has_tls ) -> str :
454
+ return "https" if has_tls else "http"
455
+
456
+ def _get_management_port (has_tls ) -> int :
457
+ return HTTPS_PORT if has_tls else HTTP_PORT
391
458
392
459
def _gen_children (parent ) -> List [Mapping ]:
393
- return [_new_deployment (parent )]
460
+ return [_new_deployment (parent ), _new_actuator_service ( parent ) ]
394
461
395
462
396
463
def sync (parent ) -> Mapping :
0 commit comments