5
// livenessController реализует контроллер для обработки запросов
6
// liveness probe сервиса.
7
type livenessController struct {
8
mainService MultiServiceInterface
11
// newLivenessService реализует конструктор сервиса для обработки запросов
12
// Liveness probe от Kubernetes. Под капотом использует HTTP сервер из net/http
13
// для реализации API проверки доступности.
14
func newLivenessService(
16
mainService MultiServiceInterface,
17
ServerConfig ...*http.Server,
19
controller := &livenessController{
20
mainService: mainService,
23
mux := http.NewServeMux()
24
mux.HandleFunc("/ready", controller.Ready)
25
mux.HandleFunc("/alive", controller.Alive)
27
if 0 == len(ServerConfig) {
28
ServerConfig = append(ServerConfig, nil)
31
return HttpService(`0.0.0.0`, port, mux, 5, ServerConfig[0])
34
// Ready обрабатывает запросы к API для получения статуса готовности для
36
func (l *livenessController) Ready(writer http.ResponseWriter, _ *http.Request) {
37
status := http.StatusOK
40
if !l.mainService.IsServicesRun() {
41
status = http.StatusInternalServerError
42
message = `Is not ready`
45
writer.WriteHeader(status)
46
_, _ = writer.Write([]byte(message))
49
// Alive обрабатывает запросы к API для получения статуса работоспособности для
51
func (l *livenessController) Alive(writer http.ResponseWriter, _ *http.Request) {
52
status := http.StatusOK
55
if !l.mainService.IsServicesAlive() {
56
status = http.StatusInternalServerError
57
message = `Is not ready`
60
writer.WriteHeader(status)
61
_, _ = writer.Write([]byte(message))