From 291dcadb8d6e5c9c15e2886756cdbe9bfb7ffb1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20H=C3=BCgel?= Date: Tue, 25 Aug 2026 14:02:45 +0200 Subject: [PATCH 1/4] feat: split liveness and readiness check for admin api --- Applications/AdminApi/src/AdminApi/Program.cs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/Applications/AdminApi/src/AdminApi/Program.cs b/Applications/AdminApi/src/AdminApi/Program.cs index 2b762962c3..c7fb1d3752 100644 --- a/Applications/AdminApi/src/AdminApi/Program.cs +++ b/Applications/AdminApi/src/AdminApi/Program.cs @@ -19,6 +19,7 @@ using Backbone.Modules.Tokens.Application; using Backbone.Modules.Tokens.Module; using Backbone.Tooling.Extensions; +using Microsoft.AspNetCore.Diagnostics.HealthChecks; using Microsoft.Extensions.Options; using Microsoft.IdentityModel.Logging; using Serilog; @@ -204,7 +205,18 @@ static void Configure(WebApplication app, AdminApiConfiguration configuration) app.MapControllers(); app.MapFallbackToFile("{*path:regex(^(?!api/).*$)}", "index.html"); // don't match paths beginning with "api/" - app.MapHealthChecks("/health"); + app.MapHealthChecks("/health", new HealthCheckOptions + { + Predicate = _ => false + }); + app.MapHealthChecks("/health/ready", new HealthCheckOptions + { + Predicate = _ => true + }); + app.MapHealthChecks("/health/live", new HealthCheckOptions + { + Predicate = _ => false + }); } public partial class Program From 7452a7f6a19ab8251dcb23146b5d93805a9e377e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20H=C3=BCgel?= Date: Tue, 25 Aug 2026 14:02:52 +0200 Subject: [PATCH 2/4] feat: split liveness and readiness check for consumer api --- Applications/ConsumerApi/src/Program.cs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/Applications/ConsumerApi/src/Program.cs b/Applications/ConsumerApi/src/Program.cs index 86ffecfc7c..63b54eed27 100644 --- a/Applications/ConsumerApi/src/Program.cs +++ b/Applications/ConsumerApi/src/Program.cs @@ -30,6 +30,7 @@ using Backbone.Modules.Tokens.Infrastructure.Persistence.Database; using Backbone.Modules.Tokens.Module; using Backbone.Tooling.Extensions; +using Microsoft.AspNetCore.Diagnostics.HealthChecks; using Microsoft.AspNetCore.HttpOverrides; using Microsoft.Extensions.Options; using Microsoft.IdentityModel.Logging; @@ -214,7 +215,18 @@ static void Configure(WebApplication app, ConsumerApiConfiguration configuration app.UseAuthentication().UseAuthorization(); app.MapControllers(); - app.MapHealthChecks("/health"); + app.MapHealthChecks("/health", new HealthCheckOptions + { + Predicate = _ => false + }); + app.MapHealthChecks("/health/ready", new HealthCheckOptions + { + Predicate = _ => true + }); + app.MapHealthChecks("/health/live", new HealthCheckOptions + { + Predicate = _ => false + }); app.UseResponseCaching(); } From 3cc4c837c814123312f32b6287910bf70bf01614 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20H=C3=BCgel?= Date: Tue, 25 Aug 2026 14:02:57 +0200 Subject: [PATCH 3/4] feat: split liveness and readiness check for sse server --- Applications/SseServer/src/SseServer/Program.cs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/Applications/SseServer/src/SseServer/Program.cs b/Applications/SseServer/src/SseServer/Program.cs index 513b579f4c..0fb79bc1a9 100644 --- a/Applications/SseServer/src/SseServer/Program.cs +++ b/Applications/SseServer/src/SseServer/Program.cs @@ -10,6 +10,7 @@ using Backbone.SseServer.Controllers; using Backbone.SseServer.Extensions; using Backbone.Tooling.Extensions; +using Microsoft.AspNetCore.Diagnostics.HealthChecks; using Microsoft.AspNetCore.HttpOverrides; using Microsoft.Extensions.Options; using Serilog; @@ -149,7 +150,18 @@ static void Configure(WebApplication app, Configuration configuration) app.MapControllers(); - app.MapHealthChecks("/health"); + app.MapHealthChecks("/health", new HealthCheckOptions + { + Predicate = _ => false + }); + app.MapHealthChecks("/health/ready", new HealthCheckOptions + { + Predicate = _ => true + }); + app.MapHealthChecks("/health/live", new HealthCheckOptions + { + Predicate = _ => false + }); } static void LoadConfiguration(WebApplicationBuilder webApplicationBuilder, string[] strings) From d27dd673a0a9ab5a28e34d395180a6bc2f8cbe22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20H=C3=BCgel?= Date: Tue, 25 Aug 2026 14:11:11 +0200 Subject: [PATCH 4/4] feat: use in deployment liveness and readiness probes --- helm/templates/adminui/deployment.yaml | 4 ++-- helm/templates/consumerapi/deployment.yaml | 4 ++-- helm/templates/sseserver/deployment.yaml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/helm/templates/adminui/deployment.yaml b/helm/templates/adminui/deployment.yaml index 7d9f316e25..2eba753886 100644 --- a/helm/templates/adminui/deployment.yaml +++ b/helm/templates/adminui/deployment.yaml @@ -61,7 +61,7 @@ spec: protocol: TCP livenessProbe: httpGet: - path: /health + path: /health/live port: 8080 initialDelaySeconds: {{ .Values.adminui.livenessProbe.initialDelaySeconds }} periodSeconds: {{ .Values.adminui.livenessProbe.periodSeconds }} @@ -69,7 +69,7 @@ spec: failureThreshold: {{ .Values.adminui.livenessProbe.failureThreshold }} readinessProbe: httpGet: - path: /health + path: /health/ready port: 8080 initialDelaySeconds: {{ .Values.adminui.readinessProbe.initialDelaySeconds }} periodSeconds: {{ .Values.adminui.readinessProbe.periodSeconds }} diff --git a/helm/templates/consumerapi/deployment.yaml b/helm/templates/consumerapi/deployment.yaml index 85bc1836d4..3afb08db5b 100644 --- a/helm/templates/consumerapi/deployment.yaml +++ b/helm/templates/consumerapi/deployment.yaml @@ -83,7 +83,7 @@ spec: {{- include "generateEnvVars" (list .Values.global.env .Values.consumerapi.env) | nindent 12 }} livenessProbe: httpGet: - path: /health + path: /health/live port: 8080 initialDelaySeconds: {{ .Values.consumerapi.livenessProbe.initialDelaySeconds }} periodSeconds: {{ .Values.consumerapi.livenessProbe.periodSeconds }} @@ -91,7 +91,7 @@ spec: failureThreshold: {{ .Values.consumerapi.livenessProbe.failureThreshold }} readinessProbe: httpGet: - path: /health + path: /health/ready port: 8080 initialDelaySeconds: {{ .Values.consumerapi.readinessProbe.initialDelaySeconds }} periodSeconds: {{ .Values.consumerapi.readinessProbe.periodSeconds }} diff --git a/helm/templates/sseserver/deployment.yaml b/helm/templates/sseserver/deployment.yaml index 55a0dd44b6..8bc24e8e70 100644 --- a/helm/templates/sseserver/deployment.yaml +++ b/helm/templates/sseserver/deployment.yaml @@ -84,7 +84,7 @@ spec: {{- include "generateEnvVars" (list .Values.global.env .Values.sseserver.env) | nindent 12 }} livenessProbe: httpGet: - path: /health + path: /health/live port: 8080 initialDelaySeconds: {{ .Values.sseserver.livenessProbe.initialDelaySeconds }} periodSeconds: {{ .Values.sseserver.livenessProbe.periodSeconds }} @@ -92,7 +92,7 @@ spec: failureThreshold: {{ .Values.sseserver.livenessProbe.failureThreshold }} readinessProbe: httpGet: - path: /health + path: /health/ready port: 8080 initialDelaySeconds: {{ .Values.sseserver.readinessProbe.initialDelaySeconds }} periodSeconds: {{ .Values.sseserver.readinessProbe.periodSeconds }}