Разница между упаковщиком hashicorp и linuxkit

Я использовал упаковщик hashicorp для создания запеченных образов ВМ.

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

Хотите знать точную разницу между работой этих двух и их вариантов использования.

Также может быть какой-либо вариант использования как упаковщика, так и linuxkit.


person mchawre    schedule 14.12.2017    source источник
comment
Я думаю, что самая большая разница в том, что в linuxkit все работает как контейнер. Даже инициализация или DHCP. Таким образом, вместо установки пакетов с помощью упаковщика вы упаковываете ядро ​​и кучу контейнеров вместе. Кроме того, оба делают одно и то же, более или менее.   -  person odk    schedule 14.12.2017


Ответы (1)


Я использовал оба довольно широко (раскрытие информации: я добровольно сопровождаю LinuxKit). Я использовал упаковщик в течение достаточно долгого времени и переключил почти всю работу, которую я делал в упаковщике, на LinuxKit (lkt).

В принципе, оба являются инструментами с открытым исходным кодом, которые служат одной и той же цели: создать образ ОС, который можно запустить. На практике большинство использует его для образов виртуальных машин для запуска на vbox, AWS, Azure, GCR и т. д., но вы можете создать образ, который будет работать на «голом железе», что я тоже сделал.

Packer, будучи старше, имеет более обширный набор средств обеспечения, сборщиков, плагинов и т. д. Он пытается быть довольно широким и непредвзятым. Создавайте везде, запускайте любую установку, которую хотите.

LinuxKit запускает почти все — onboot процессов и services непрерывных — в контейнере. Даже фаза init, на которой будет загружаться образ ОС, настраивается путем копирования файлов из образов OCI.

Твердое мнение LinuxKit о том, как запускать и создавать вещи, может в некотором смысле ограничивать, но также и освобождать.

Наиболее важные отличия, на мой взгляд, следующие:

  1. lkt создает наращивает с нуля до необходимого минимума; Пакет строится из существующей базы ОС.
  2. Поверхность безопасности lkt для атак будет меньше, потому что он начинается не с существующей ОС, а вообще ни с чем.
  3. Образы lkt могут быть значительно меньше, потому что вы добавляете только то, что вам нужно.
  4. Сборки lkt запускаются локально. Packer запускает виртуальную машину (vbox, EC2 и т. д.), запускает какой-то базовый образ, изменяет его в соответствии с вашими инструкциями, а затем сохраняет как новый образ. lkt просто манипулирует образами OCI, загружая и копируя файлы для создания нового образа.

Я могу получить тот же чистый результат для различий 1-3 с помощью Packer и LinuxKit, хотя lkt требует гораздо меньше работы. Например. Я предоставил пакет getty для LinuxKit, чтобы отделить и контролировать, когда и как запускается getty и в каком пространстве имен. Объем работы по отделению и контролю этого в образе упаковщика, построенном на полной ОС, был бы намного сложнее. То же самое для пакета tpm. И т.п.

Самое большое отличие, по моему мнению, это шаг 4. Поскольку Packer запускает виртуальную машину и выполняет в ней команды, он намного медленнее и сложнее в отладке. Один и тот же образ упаковщика, на сборку которого у меня уходит более 10 минут, в lkt может быть построен за 30 секунд. Ваш пробег может варьироваться в зависимости от того, загружаются ли изображения OCI или нет, и от того, насколько сложно то, что вы делаете, но для меня это действительно было на порядок быстрее.

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

Как я уже сказал, это мое личное мнение, но это причины, по которым я перенес почти всю свою работу по сборке в lkt, внес свой вклад и согласился присоединиться к отличной группе сопровождающих, когда команда попросила меня.

В то же время я глубоко признателен HashiCorp за их фантастический набор инструментов. Пакер сослужил мне хорошую службу; в настоящее время LinuxKit служит мне лучше.

person deitch    schedule 15.12.2017