Как настроить все модули для одновременного приема запросов на подключение? - PullRequest
1 голос
/ 11 мая 2019

У меня есть микросервисы, развернутые с использованием k8s. Есть некоторые межмикросервисные вызовы API. Проблема заключается в том, что когда я выполняю развертывание релиза, службы начинают произвольно принимать запросы через 40-100 секунд в зависимости от платформы приложения. Таким образом, некоторые службы начинают принимать запросы раньше, в то время как другим требуется больше времени для принятия первого запроса. Здесь некоторые вызовы API являются зависимыми службами. Таким образом, пока полное развертывание не выполнено, приложения выдают ошибки из-за отложенного развертывания зависимых сервисов. Я реализовал непрерывные обновления для беспрепятственного развертывания, поэтому при развертывании конкретного приложения нет простоев. Но в новом выпуске могут быть добавлены новые конечные точки API, которые влияют на другие приложения, пока он не начнет принимать запросы.

Во время развертывания можно ли как-то настроить все модули для начала приема запросов в определенное время?

Допустим, мне нужно обновить 5 сервисов в текущем выпуске. Тогда все новые 5 модулей должны начать принимать запросы сразу.

1 Ответ

1 голос
/ 11 мая 2019

Если я вас правильно понял, вы хотите реализовать зависимости служб, чтобы зависимые службы не запускались, если не запущены их требуемые службы. Вы можете реализовать это с помощью initContainers следующим образом:

spec:
  template:
    spec:
      initContainers:
      - name: waitfor
        image: jwilder/dockerize
        args:
        - -wait
        - "http://config-srv:7000/actuator/health"
        - -wait
        - "http://registry-srv:8761/actuator/health"
        - -wait
        - "http://rabbitmq:15672"
        - -timeout
        - 600s
      containers:
      - 

В этом примере основной контейнер не запустится до тех пор, пока не будут запущены три требуемые службы и они доступны через HTTP. Это то, чего вы хотите достичь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...