Интересно, расскажете где не получилось?
Нормальное обновление без останова сложной системы - это итеративный многостадийны процесс с кучей сценариев вида:
"развернуть сервис версии n+1, настроить меш по переводу на него тестовых пользователей, прогнать тесты на тестовых пользователях, проверить логи, запросить у админа разрешение продолжить, настроить меш на перевод 1% пользователей, подождать час, проверить логи, запросить у админа разрешения продолжить, перевести 10% пользователей, подождать день" и т.п.
Плюс еще параллельные миграции (в том числе долгосрочные), совместимость разных сервисов, переключения фичафлагов по факту окончания выкладки и так далее.
Рулить этим из ансибла (который сделан в идеологии "привести целевые сервера в соответствие с описанным декларативно идеалом") очень неудобно (хотя, конечно, реально - но очень не выгодно).
Впрочем, удобных инструментов для сложной выкладки на рынке нет. Что-то можно сделать на грэдле, что-то можно сделать груви-сценариями в Jenkins (с кучей плагинов), но удобной платформы - нет.
Основные проблемы - это "долгосрочные операции" (подождать час, а потом анализировать статистику), событийные модули (а если сработал алерт на прометеусе - откатить выкладку), взаимодействие с оператором (после 10% пользователей такая-то статистика - продолжать или нет).