Type: L3 Worker Category: 7XX Project Bootstrap Parent: ln-770-crosscutting-setup
Configures health check endpoints for Kubernetes probes and monitoring.
Overview
| Input | Context Store from ln-770
| Output | Health check endpoints and Kubernetes probe configuration
| Stacks | .NET (AspNetCore.Diagnostics.HealthChecks), Python (FastAPI routes)
Phase 1: Receive Context + Identify Dependencies
Accept Context Store and scan for dependencies to monitor.
Required Context:
-
STACK: .NET or Python -
PROJECT_ROOT: Project directory path
Idempotency Check:
-
.NET: Grep for
AddHealthChecksorMapHealthChecks -
Python: Grep for
/healthroute -
If found: Return
{ "status": "skipped" }
Dependency Detection:
| PostgreSQL
| Npgsql in csproj
| psycopg2 or asyncpg in requirements
| MySQL
| MySql.Data in csproj
| mysql-connector-python in requirements
| Redis
| StackExchange.Redis in csproj
| redis in requirements
| RabbitMQ
| RabbitMQ.Client in csproj
| pika or aio-pika in requirements
| MongoDB
| MongoDB.Driver in csproj
| pymongo in requirements
Phase 2: Design Health Check Strategy
Define three types of health endpoints per Kubernetes best practices.
Endpoint Types
| /health/live
| Liveness
| Is app alive?
| App responds (no dependency checks)
| /health/ready
| Readiness
| Can app serve traffic?
| All dependencies healthy
| /health/startup
| Startup (K8s 1.16+)
| Is app initialized?
| Initial warmup complete
When Each Probe Fails
| Liveness | Container restart | kubelet restarts container
| Readiness | Remove from service | Traffic stopped, no restart
| Startup | Delay other probes | Liveness/Readiness paused
Phase 3: Research Health Check Patterns
Use MCP tools for current documentation.
For .NET:
MCP ref: "ASP.NET Core health checks Kubernetes probes"
Context7: /dotnet/aspnetcore
For Python:
MCP ref: "FastAPI health check endpoint Kubernetes"
Context7: /tiangolo/fastapi
Key Patterns to Research:
-
Database health checks (connection pool)
-
Redis connectivity check
-
Custom health check implementation
-
Health check response writer customization
Phase 4: Configure Kubernetes Probes
Determine probe timing based on application characteristics.
Probe Configuration
| initialDelaySeconds
| 10
| 5
| 0
| periodSeconds
| 10
| 5
| 5
| timeoutSeconds
| 5
| 3
| 3
| failureThreshold
| 3
| 3
| 30
| successThreshold
| 1
| 1
| 1
Startup Probe Calculation:
Max startup time = initialDelaySeconds + (periodSeconds × failureThreshold)
Default: 0 + (5 × 30) = 150 seconds
Phase 5: Generate Implementation
.NET Output Files
| Extensions/HealthCheckExtensions.cs
| Health check registration
| HealthChecks/StartupHealthCheck.cs
| Custom startup check
Generation Process:
-
Use MCP ref for current ASP.NET Core health checks API
-
Generate HealthCheckExtensions with:
AddHealthChecks registration
-
Database health check (if detected)
-
Redis health check (if detected)
-
Custom StartupHealthCheck
-
Configure three endpoints with proper tags
Packages to Add:
-
AspNetCore.HealthChecks.NpgSql(if PostgreSQL) -
AspNetCore.HealthChecks.Redis(if Redis) -
AspNetCore.HealthChecks.MySql(if MySQL)
Registration Code:
builder.Services.AddHealthCheckServices(builder.Configuration);
// ...
app.MapHealthCheckEndpoints();
Python Output Files
| routes/health.py
| Health check router
| services/health_checker.py
| Dependency health checks
Generation Process:
-
Use MCP ref for FastAPI health patterns
-
Generate health router with:
/health/live endpoint (simple)
-
/health/ready endpoint (with dependency checks)
-
/health/startup endpoint
-
Generate health_checker service for dependency verification
Registration Code:
from routes.health import health_router
app.include_router(health_router)
Kubernetes Manifest Snippet
Generate for inclusion in deployment.yaml:
livenessProbe:
httpGet:
path: /health/live
port: 5000
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 3
readinessProbe:
httpGet:
path: /health/ready
port: 5000
initialDelaySeconds: 5
periodSeconds: 5
timeoutSeconds: 3
failureThreshold: 3
startupProbe:
httpGet:
path: /health/startup
port: 5000
periodSeconds: 5
failureThreshold: 30
Phase 6: Validate
Validation Steps:
- Syntax check:
.NET: dotnet build --no-restore
-
Python:
python -m py_compile routes/health.py -
Endpoint test:
curl http://localhost:5000/health/live
curl http://localhost:5000/health/ready
curl http://localhost:5000/health/startup
- Verify response format:
{
"status": "Healthy",
"checks": {
"database": { "status": "Healthy", "duration": "00:00:00.0234" },
"redis": { "status": "Healthy", "duration": "00:00:00.0012" }
},
"totalDuration": "00:00:00.0250"
}
- Dependency failure test:
Stop database
-
Verify
/health/readyreturns 503 -
Verify
/health/livestill returns 200
Return to Coordinator
{
"status": "success",
"files_created": [
"Extensions/HealthCheckExtensions.cs",
"HealthChecks/StartupHealthCheck.cs"
],
"packages_added": [
"AspNetCore.HealthChecks.NpgSql"
],
"registration_code": "builder.Services.AddHealthCheckServices(configuration);",
"message": "Configured health checks with liveness, readiness, and startup probes"
}
Reference Links
Version: 2.0.0 Last Updated: 2026-01-10