Связаться по Skype: vkarabedyants
Позвонить Написать
+7 (499) 404-28-83

Блог о системном администрировании серверов и сайтов

Установка, настройка программного обеспечения Linux, Windows операционных систем

Установка InfraKit Docker

InfraKit от Docker основан на GoP и первое, что мне пришлось сделать — установить пакеты golang. Проект рекомендует использовать версию не ниже 17,1, но в Ubuntu 16.04 по умолчанию доступна только 1.6. У меня не было личного опыта работы с Go, но загрузка последнего архива с https://golang.org/dl, проверка его контрольной суммы sha256sum (не забывайте об этом) и последующая распаковка в каталог/usr/local не показались чем-то особенным. По крайней мере, на моей свежеразвернутой виртуальной машине для тестирования:

Разумеется, эту переменную PATH нужно было на постоянной основе добавить в мой пользовательский профиль. Потребовалось изменить еще кое-какие параметры:

Переменная GOPATH также была добавлена в мой профиль. После клонирования релозиториев в локальный каталог можно собрать двоичные файлы (которые появятся в подкаталоге binaries), выполнив следующие команды:

установка docker infrakit

Наряду с самим infraKit я увидел набор файлов group’ (группы), ‘instance’ (экземпляры) и flavor’ (дистрибутивы). Если указать их с аргументом ‘help’, вы увидите удобную, хотя и краткую, справку по ним.
Вместе с InfraKit есть руководство, которое я употребил в остальной части этой статьи (расширив и предоставив чуть больше полезных сведений). Я хотел создать группу и выполнить некоторое онлайн-масштабирование, а также ознакомиться с частью свойств самовосстановления, которыми Docker наделил infraKit Идеальный плагин для тестирования — instance-file, рекомендуемый специально для этой цели. Для простейшей конфигурации мне также понадобились плагины group-default и flavorvanilla;

Здесь я запустил плагин для группы по умолчанию, создал каталог test для хранения тестовых экземпляров, затем запустил файл instance и плагины flavor-vanilla. Я убедился, что плагины слушают web-сокет, выпопнив команду

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

Чтобы заставить InfraKit сделать нечто по-настоящему полезное, мне надо передать ему некоторые данные о конфигурации. B/flfratfrtдля этого используется JSON. Лично я предпочитаю YAML. Формат не слишком сложен — воспользуйтесь рисунком на этой странице. Создав этот файл и сохранив его как cattle.json, я выполнил следующую команду:

В сеансе терминала, где была запущена команда group-default, я сразу же увидел сообщения о том, что за группой «скота» осуществляется наблюдение и что в нее добавлены пять экземпляров для достижения необходимого общего количества. Я смог вывести список этих экземпляров, выполнив в «запасном» терминале команду

Одновременно в подкаталоге test появилось пять файлов, имена которых начинались с ‘instance’. Команда inspect показала одинаковое значение SHA для всех элементов одной и той же группы. У плагина группы есть Все это хорошо, но как проверить функцию самовосстановления? Проще всего для этого удалить файл из каталога test командой rm (например,  rm test/instance-2778212816405166139). После наикратчайшей из пауз в окне терминала плагина группы появилось сообщение о том, что был добавлен экземпляр для восстановления желаемого уровня. Разумеется, это простой пример, но на том месте с той же легкостью могла быть выполнена повторная подготовка виртуальной машины из AWS с подходящим набором плагинов Тут мне захотелось попробовать расширить группу, Я отредактировал файл cattle.json, изменив количество экземпляров в параметре ‘size’ с пяти до семи и сохранив файл. Выполнив команду

я увидел, что выполняется план обновления с приостановкой масштабирования и увеличением целевого размера согласно моим инструкциям. Вскоре после этого добавилась пара новых экземпляров (всё произошло менее чем за секунду). Уменьшение количества экземпляров до четырех и повторное выполнение команды имело обратный эффект. Мне понравилось, что в обоих случаях на довольно простом языке плагин сообщил о том, что план обновления вступил в действие: Executing update plan for cattle1: Terminates 3 instances to reduce the group size to 4
Потом я решил выполнить обновление другого рода — изменить свойства группы, Я скопировал файл caltlejson (в файл cattle2,json) и изменил значение свойства/примечания на версию 2.0 (‘version 2.0/). Я также снова увеличил количество экземпляров до пяти. Затем я смог получить описание обновленного файла на английском языке перед применением этого файла, выполнив команду

Performs a rolling update on 4 instances, then adds 1 instances to increase the group size to 5
Снова выполнив команду group update, на сей раз с файлом cattle2.j5on в качестве аргумента, я расшевелил плагин группы. Он определил «нежелательные» экземпляры и поочередно заменил их экземплярами с новой конфигурацией (и добавил один экземпляр, который я запрашивал). Это заняло некоторое время, но в итоге я получил пять экземпляров с обновленными значениями SHA, которые смог просмотреть командой group inspect cattle. Это было бы удобно с точки зрения обслуживания — здесь я фактически выполнил плавающее обновление запущенных экземпляров, что довольно часто требуется с точки зрения приложений.
При выполнении таких тестов легко забыть, что InfraKit пред-назначен преимущественно для уровня инфраструктуры. Здесь есть пересечения с функциями управления приложениями, расположенными выше в стеке, например, Docker Swarm. Продукт еще находится на ранней стадии развития — из документации к коду обновления сейчас явно видно, что некоторые функции отсутствуют — например, автоматизированный откат изменений или поддержка «канареечного» [canary release] и «зелено-синего [blue-green deployment] развертывания новых версий. В последних типах обновлений второй стек переводится в рабочий режим, и в него поступает трафик балансировщика нагрузки, чтобы легко его тестировать без старого стека. Даже в текущем состоянии InfraKit пригоден для таких задач — наличие двух файлов конфигурации с практически идентичным содержимым (за исключением идентификатора группы) позволит запускать их одновремен но друг с другом, хотя это достигалось и с помощью балансировщика нагрузки. Так каков же вердикт? Мне нравится InfraKit. Мои примеры были тривиальными, но у продукта есть потенциал. Я могу предположить недовольства после слияния с движком Docker Engine, учитывая объем работы, предпринятый е этой области. Но зато каждый, кто пользуется Docker, получит InfraKit в готовом виде.

Внедрение и поддержка инфраструктуры Docker, Infrakit, Ansible и другие, обращайтесь office@system-admins.ru

Оставить комментарий

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.