Перейти к содержанию

·Naasson Apps

Каталог, а не маркетплейс

Двести семьдесят приложений, вложенных в бинарник, вместо тысяч по ссылке. Разница в том, кто отвечает за то, что установка воспроизводима.

Маркетплейс приложений — это индекс со ссылками. Он большой, обновляется сам и ничего не гарантирует: содержимое по ссылке принадлежит третьей стороне.

Каталог — это набор, вложенный в сборку. Он меньше, обновляется вместе с инструментом и даёт одно свойство, которого у маркетплейса нет: воспроизводимость.

Мы выбрали второе.

Что значит «вложенный»

В бинарнике лежат: индекс приложений со статусами и метаданными, исходные описания, извлечённые значения Helm и архивы чартов.

Не ссылки на архивы — сами архивы. Приложение не устанавливается, если вложенного архива нет; в этом случае у него статус «отключено».

Что это даёт

Установка не зависит от доступности чужого сервера. В том числе в момент аварии, когда установка нужна срочно, а внешний репозиторий недоступен — потому что он тоже чей-то сервис.

Тот же бинарник через год даёт то же приложение. Это единственный способ получить такое свойство: пока артефакт снаружи, его содержимое может измениться под тем же адресом.

Проверка возможна. Приложение со статусом «проверено» действительно проверено в той конфигурации, которая лежит в этой сборке. Для маркетплейса такое утверждение не имеет смысла — проверять пришлось бы состояние на момент установки.

Чем за это платят

Размером. Вложенные чарты весят, и бинарник получается заметно больше, чем был бы с индексом ссылок.

Полнотой. Двести семьдесят с чем-то приложений против тысяч в публичных каталогах. В набор попадает то, что мы можем сопровождать, а не всё, что существует.

Скоростью появления новинок. Новое приложение появляется в каталоге со следующей сборкой, а не в момент публикации автором.

Почему полнота — не главное

Потому что в реальном проекте ставят не тысячу приложений, а десять-двадцать. Причём одни и те же: мониторинг, вики, трекер, автоматизация, панель состояния, учёт секретов, файловое хранилище.

Каталог из двухсот семидесяти позиций перекрывает этот набор с большим запасом. Разница между двумя сотнями и двумя тысячами почти не встречается на практике — а разница между воспроизводимой установкой и невоспроизводимой встречается при каждом восстановлении.

Промежуточный статус для остального

Приложение, описание которого импортировано, но которое ещё не сертифицировано, получает статус «кандидат» и ставится с явным флагом.

Это компромисс между полнотой и честностью: набор шире, чем список полностью проверенного, но граница между проверенным и непроверенным остаётся видимой — и в команде, и в истории.

Что здесь общего с остальными решениями

То же правило, что и с одним бинарником вместо панели управления, и с локальным GitOps-источником: конструкция не должна содержать узла, который требует чужой доступности.

Каталог по ссылке — именно такой узел. Он работает почти всегда и подводит в самый неподходящий момент.