The Airbnb Tech Blog | Medium на русском
Подписаться
Бесшовные обновления Istio в масштабе
Airbnb успешно обновил свою сервисную сетку Istio 14 раз, управляя десятками тысяч подов в десятках кластеров Kubernetes и тысячами виртуальных машин. Их процесс обновления ставит во главу угла отсутствие простоев и постепенное развертывание, позволяя проводить независимые обновления без вмешательства пользователя. Архитектура включает управляющий кластер для Istiod и несколько рабочих кластеров. Обновления следуют канареечной модели, запуская текущие и новые версии Istio параллельно.Это достигается путем координации обновлений управляющего плоскости (Istiod) и плоскости данных (istio-proxy). Важно отметить, что более старые версии istio-proxy не используются с более новыми Istiod; они обновляются атомарно. Центральный файл управления, rollouts.yml, определяет желаемое распределение версий Istio по пространствам имен. Для Kubernetes внутренний инструмент под названием Krispr вводит метки ревизии Istio в развертывания во время CI и при приеме подов.Этот механизм гарантирует обновление рабочих нагрузок, даже если они не развертываются часто. Для виртуальных машин обновления управляются демоном на хосте, mxagent, который устанавливает артефакты на основе тегов ВМ. Центральный контроллер, mxrc, обновляет эти теги в соответствии с rollouts.yml. Mxrc также отслеживает состояние ВМ, обеспечивая контролируемый процесс обновления. Такой подход эффективно отделяет обновления инфраструктуры от развертывания приложений. Непрерывные инвестиции Airbnb в поддерживаемость и безопасность позволили провести эти сложные, крупномасштабные обновления Istio.