web-dev-qa-db-fra.com

Kubernetes - Implémentation de la sonde Living and Readiness

Je développe un service à l'aide de Spring et le déploie sur OpenShift. Actuellement, j'utilise le point de terminaison de santé Spring Actuator pour servir de sonde de vivacité et de préparation pour Kubernetes.

Cependant, je vais ajouter un appel à un autre service dans un point de terminaison d'intégrité de l'actionneur, et il me semble que dans ce cas, je dois implémenter une nouvelle sonde de vivacité pour mon service. Si je ne le fais pas, un échec dans un deuxième service entraînera un échec de la sonde de vivacité et Kubernetes redémarrera mon service sans aucun besoin réel.

Est-il correct, pour une sonde de vivacité, d'implémenter un simple contrôleur REST qui retournera toujours le statut HTTP 200? Si cela fonctionne, le service peut toujours être considéré comme vivant? Ou y a-t-il mieux façon de le faire?

12
dplesa

Plutôt que de créer un contrôleur personnalisé pour la préparation (comme suggéré dans d'autres réponses), Spring Boot Actuator a un support inhérent à cela.

Préparation

Dans Spring Boot 2.0+, il est vraiment facile d'implémenter une sonde de préparation avec Spring Boot Actuator:

@Component
@Endpoint(id = "readiness")
public class ReadinessEndpoint {

    @ReadOperation
    public String getReadiness() {
        // do a custom check for readiness
        if (...) {

        } else {
            throw new RuntimeException("Not ready");
        }
    }
}

Ce point de terminaison est alors disponible (par défaut) à /actuator/readiness. C'est configurable.

Vivacité

La vivacité est déjà disponible avec le point de terminaison d'intégrité Spring Boot Actuator situé (par défaut) à /actuator/health. C'est configurable.

0
dustin.schultz