Springを使用してサービスを開発し、OpenShiftにデプロイしています。現在、Spring Actuatorヘルスエンドポイントを使用して、Kubernetesの活性と準備のプローブとして機能しています。
ただし、Actuatorヘルスエンドポイントの別のサービスへの呼び出しを追加します。その場合、サービスに新しい活性プローブを実装する必要があるようです。それを行わないと、2番目のサービスで障害が発生し、活性プローブで障害が発生し、Kubernetesは実際に必要なくサービスを再起動します。
活性プローブの場合、単純なRESTコントローラーを実装して、常にHTTPステータス200を返すことはできますか?機能する場合、サービスは常に生きていると見なすことができますか?それを行う方法?
(他の回答で提案されているように)準備のためにカスタムコントローラーを作成するのではなく、Spring Boot Actuatorはこれを本質的にサポートしています。
Spring Boot 2.0+では、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");
}
}
}
このエンドポイントは(デフォルトで)/actuator/readiness
で使用できます。これは構成可能です。
Livelinessは、/actuator/health
に(デフォルトで)配置されているSpring Boot Actuatorヘルスエンドポイントですでに使用可能です。これは構成可能です。