Запуск контейнера / контейнера после запуска 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 не получит свою первоначальную конфигурацию. Тем не менее, это немного взломать и требует внесения изменений в каждый из контейнеров разработчика.

Другие вопросы по тегам