Servisin düzgün işlədiyini yoxlayan endpoint — Kubernetes liveness/readiness probes-ların əsasıdır.
K8s bilməlidir: servis hazırdır? DB-yə qoşulub? Əgər sağlam deyilsə, trafiki göndərmə, servisi restart et.
Liveness: Ölübsə restart et. Readiness: Hazır deyilsə trafik yönləndirmə. Hər ikisi fərqli URL-dən baxır.
Spring Actuator: /actuator/health/liveness və /actuator/health/readiness endpointləri.
@Component
public class DatabaseHealthIndicator implements HealthIndicator {
@Autowired private DataSource dataSource;
@Override
public Health health() {
try (Connection conn = dataSource.getConnection()) {
if (conn.isValid(2)) {
return Health.up()
.withDetail("db", "PostgreSQL bağlantısı sağlamdır")
.build();
}
} catch (SQLException e) {
return Health.down()
.withDetail("error", e.getMessage())
.build();
}
return Health.down().build();
}
}spec:
containers:
- name: user-service
livenessProbe:
httpGet:
path: /actuator/health/liveness
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /actuator/health/readiness
port: 8080
initialDelaySeconds: 15