С огромным облегчением сегодня убрал последний хост с CoreOS.
Я уже писал о своих впечатлениях от CoreoOS, но с тех пор впечатлений прибавилось.
Частые атомарные обновления на бумаге выглядели вкусно (и в пользовательских ОС типа Android работают прекрасно), но вот на практике на серверах в том виде, в котором CoreOS их готовит, оказались совсем несъедобны.
Объясню, в чем проблема: Docker достаточно часто что-то ломает в API, и свежие ядра Linux ломают всякие важные вещи тоже довольно часто, причем зачастую даже в рамках patch-level обновлений. Например, работа с libpthread ломалась с ядра 3.19 (причем этот баг бекпорировали в Ubuntu 3.13.48 LTS, что добавило радости) и до 4.0, а потом с 4.1 до 4.2. Почитать про это можно например тут, хотя проблема затронула далеко не только Mono.
Короче, любой апдейт ОС надо хорошенько протестировать на стендах, и потом только обновлять прод.
А в случае CoreOS мы не можем контролировать, на какую версию обновляться. Обновляемся всегда на последнюю имеющуюся на их серверах версию, а она может уйти вперед за время обкатки на стендах.
Более того, чтобы откатиться на прошлую версию, в CoreOS нужно использовать волшебную конструкцию такого вида:
cgpt prioritize "$(cgpt find -t coreos-usr | grep --invert-match "$(findmnt --noheadings --raw --output=source --target=/usr)")"
При этом нет возможности узнать, на какую версию будет сделан откат.
CoreOS конечно молодцы, и в платной версии предлагают удобный дашборд для контроля выкатки конкретной версии на конкретную группу хостов. Но для обычных людей подобные радости недоступны.
В общем, на практике оказалось, что каждое обновление CoreOS это лишняя трата нервов, и любой вменяемый дистрибутив в минимальном виде и с оркестрацией через Ansible в разы удобнее, и главное предсказуемее. Ну вышло кривое ядро - увидел это на тестовых стендах, откатил пакет назад, и жди новую версию, где баг починили. При этом нет никакой проблемы обновить конкретный компонент с уязвимостью или багом.
А после работы с CoreOS я могу точно сказать, что пока не будет возможности полностью контролировать процесс обновления ОС (а лучше возможности самому собрать “апдейт”), я не готов даже рассматривать подобные дистрибутивы.