@@ -227,6 +227,53 @@ func makeKeycloakImportSecretRealm(cache *rc.ObjectCache, o obj.ClowdObject, pas
227
227
return cache .Update (WebKeycloakImportSecret , userData )
228
228
}
229
229
230
+ func baseProbeHandler (port int32 , path string ) core.ProbeHandler {
231
+ return core.ProbeHandler {
232
+ HTTPGet : & core.HTTPGetAction {
233
+ Port : intstr.IntOrString {
234
+ Type : intstr .Int ,
235
+ IntVal : port ,
236
+ },
237
+ Scheme : core .URISchemeHTTP ,
238
+ HTTPHeaders : []core.HTTPHeader {
239
+ {
240
+ Name : "Accept" ,
241
+ Value : "application/json" ,
242
+ },
243
+ },
244
+ Path : path ,
245
+ },
246
+ }
247
+ }
248
+
249
+ type secretEnvVar struct {
250
+ Name string
251
+ Key string
252
+ }
253
+
254
+ func newSecretEnvVar (name , key string ) secretEnvVar {
255
+ return secretEnvVar {Name : name , Key : key }
256
+ }
257
+
258
+ func mapEnvVarsToSecret (inputs []secretEnvVar , secName string ) []core.EnvVar {
259
+ envVars := []core.EnvVar {}
260
+ for _ , env := range inputs {
261
+ newVar := core.EnvVar {
262
+ Name : env .Name ,
263
+ ValueFrom : & core.EnvVarSource {
264
+ SecretKeyRef : & core.SecretKeySelector {
265
+ LocalObjectReference : core.LocalObjectReference {
266
+ Name : secName ,
267
+ },
268
+ Key : env .Key ,
269
+ },
270
+ },
271
+ }
272
+ envVars = append (envVars , newVar )
273
+ }
274
+ return envVars
275
+ }
276
+
230
277
func makeKeycloak (o obj.ClowdObject , objMap providers.ObjectMap , _ bool , nodePort bool ) {
231
278
nn := providers .GetNamespacedName (o , "keycloak" )
232
279
@@ -252,50 +299,6 @@ func makeKeycloak(o obj.ClowdObject, objMap providers.ObjectMap, _ bool, nodePor
252
299
Name : "KC_DB" ,
253
300
Value : "postgres" ,
254
301
},
255
- {
256
- Name : "KC_DB_USERNAME" ,
257
- ValueFrom : & core.EnvVarSource {
258
- SecretKeyRef : & core.SecretKeySelector {
259
- LocalObjectReference : core.LocalObjectReference {
260
- Name : "keycloak-db" ,
261
- },
262
- Key : "username" ,
263
- },
264
- },
265
- },
266
- {
267
- Name : "KC_DB_PASSWORD" ,
268
- ValueFrom : & core.EnvVarSource {
269
- SecretKeyRef : & core.SecretKeySelector {
270
- LocalObjectReference : core.LocalObjectReference {
271
- Name : "keycloak-db" ,
272
- },
273
- Key : "password" ,
274
- },
275
- },
276
- },
277
- {
278
- Name : "KC_DB_URL_DATABASE" ,
279
- ValueFrom : & core.EnvVarSource {
280
- SecretKeyRef : & core.SecretKeySelector {
281
- LocalObjectReference : core.LocalObjectReference {
282
- Name : "keycloak-db" ,
283
- },
284
- Key : "name" ,
285
- },
286
- },
287
- },
288
- {
289
- Name : "KC_DB_URL_HOST" ,
290
- ValueFrom : & core.EnvVarSource {
291
- SecretKeyRef : & core.SecretKeySelector {
292
- LocalObjectReference : core.LocalObjectReference {
293
- Name : "keycloak-db" ,
294
- },
295
- Key : "hostname" ,
296
- },
297
- },
298
- },
299
302
{
300
303
Name : "KC_DB_URL_PORT" ,
301
304
Value : "5432" ,
@@ -304,34 +307,32 @@ func makeKeycloak(o obj.ClowdObject, objMap providers.ObjectMap, _ bool, nodePor
304
307
Name : "PROXY_ADDRESS_FORWARDING" ,
305
308
Value : "true" ,
306
309
},
307
- {
308
- Name : "KEYCLOAK_ADMIN" ,
309
- ValueFrom : & core.EnvVarSource {
310
- SecretKeyRef : & core.SecretKeySelector {
311
- LocalObjectReference : core.LocalObjectReference {
312
- Name : nn .Name ,
313
- },
314
- Key : "username" ,
315
- },
316
- },
317
- },
318
- {
319
- Name : "KEYCLOAK_ADMIN_PASSWORD" ,
320
- ValueFrom : & core.EnvVarSource {
321
- SecretKeyRef : & core.SecretKeySelector {
322
- LocalObjectReference : core.LocalObjectReference {
323
- Name : nn .Name ,
324
- },
325
- Key : "password" ,
326
- },
327
- },
328
- },
329
310
{
330
311
Name : "KEYCLOAK_IMPORT" ,
331
312
Value : "/json/redhat-external-realm.json" ,
332
313
},
333
314
}
334
315
316
+ dbEnvVars := mapEnvVarsToSecret (
317
+ []secretEnvVar {
318
+ newSecretEnvVar ("KC_DB_USERNAME" , "username" ),
319
+ newSecretEnvVar ("KC_DB_PASSWORD" , "password" ),
320
+ newSecretEnvVar ("KC_DB_URL_DATABASE" , "name" ),
321
+ newSecretEnvVar ("KC_DB_URL_HOST" , "hostname" ),
322
+ }, "keycloak-db" ,
323
+ )
324
+
325
+ envVars = append (envVars , dbEnvVars ... )
326
+
327
+ kcEnvVars := mapEnvVarsToSecret (
328
+ []secretEnvVar {
329
+ newSecretEnvVar ("KEYCLOAK_ADMIN" , "username" ),
330
+ newSecretEnvVar ("KEYCLOAK_ADMIN_PASSWORD" , "password" ),
331
+ }, nn .Name ,
332
+ )
333
+
334
+ envVars = append (envVars , kcEnvVars ... )
335
+
335
336
port := int32 (8080 )
336
337
337
338
ports := []core.ContainerPort {{
@@ -340,25 +341,16 @@ func makeKeycloak(o obj.ClowdObject, objMap providers.ObjectMap, _ bool, nodePor
340
341
Protocol : core .ProtocolTCP ,
341
342
}}
342
343
343
- probeHandler := core.ProbeHandler {
344
- TCPSocket : & core.TCPSocketAction {
345
- Port : intstr.IntOrString {
346
- Type : intstr .Int ,
347
- IntVal : port ,
348
- },
349
- },
350
- }
351
-
352
344
livenessProbe := core.Probe {
353
- ProbeHandler : probeHandler ,
345
+ ProbeHandler : baseProbeHandler ( port , "auth/health/live" ) ,
354
346
InitialDelaySeconds : 60 ,
355
347
TimeoutSeconds : 2 ,
356
348
PeriodSeconds : 10 ,
357
349
SuccessThreshold : 1 ,
358
350
FailureThreshold : 3 ,
359
351
}
360
352
readinessProbe := core.Probe {
361
- ProbeHandler : probeHandler ,
353
+ ProbeHandler : baseProbeHandler ( port , "auth/health/ready" ) ,
362
354
InitialDelaySeconds : 60 ,
363
355
TimeoutSeconds : 2 ,
364
356
PeriodSeconds : 10 ,
@@ -382,6 +374,10 @@ func makeKeycloak(o obj.ClowdObject, objMap providers.ObjectMap, _ bool, nodePor
382
374
"true" ,
383
375
"--http-relative-path" ,
384
376
"/auth" ,
377
+ "--health-enabled" ,
378
+ "true" ,
379
+ "--metrics-enabled" ,
380
+ "true" ,
385
381
},
386
382
Ports : ports ,
387
383
LivenessProbe : & livenessProbe ,
0 commit comments