Запуск контейнера / контейнера после запуска istio-proxy
Я пытаюсь реализовать сервисную сетку для сервиса с Kubernetes, используя Istio и Envoy. Мне удалось настроить службу и istio-proxy, но я не могу контролировать порядок запуска контейнера и istio-proxy.
Мой контейнер запускается первым и пытается получить доступ к внешнему ресурсу через TCP, но в то время istio-proxy не загружен полностью, как и ServiceEntry для внешнего ресурса.
Я попытался добавить панику в свой сервис, а также пробовал спать 5 секунд, прежде чем получить доступ к внешнему ресурсу.
Есть ли способ, которым я могу контролировать порядок этих?
2 ответа
Я не думаю, что вы можете контролировать порядок, кроме перечисления контейнеров в определенном порядке в спецификации вашего модуля. Поэтому я рекомендую вам настроить датчик готовности, чтобы модуль не был готов, пока ваш сервис не сможет отправлять некоторый трафик на улицу.
На istio версии 1.7.X и выше вы можете добавить параметр конфигурации
values.global.proxy.holdApplicationUntilProxyStarts
, который заставляет инжектор sidecar вводить sidecar в начале списка контейнеров модуля и настраивает его на блокировку запуска всех других контейнеров, пока прокси не будет готов. По умолчанию эта опция отключена.
Согласно https://istio.io/latest/news/releases/1.7.x/announcing-1.7/change-notes/
Github выпуск здесь:
Поддержка загрузочных зависимостей между контейнерами на одном модуле
В настоящее время мы рекомендуем разработчикам решить эту проблему самостоятельно, запустив сценарий запуска в контейнере приложения, который задерживает запуск приложения до тех пор, пока Envoy не получит свою первоначальную конфигурацию. Тем не менее, это немного взломать и требует внесения изменений в каждый из контейнеров разработчика.