Шаблоны контейнеров в virtuozzo

24
Шаблоны контейнеров Денис Силаков, ст. системный архитектор [email protected]

Upload: cee-secr

Post on 14-Jan-2017

79 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Шаблоны контейнеров в Virtuozzo

Шаблоны контейнеровДенис Силаков, ст. системный архитектор

[email protected]

Page 2: Шаблоны контейнеров в Virtuozzo

Терминология

• Контейнер – «легковесное»виртуальное окружение

• Внутри гостей –- ядро основной ОС

Copyright © 2016 Virtuozzo. All Rights Reserved. 2

Page 3: Шаблоны контейнеров в Virtuozzo

Технологии

• Solaris Zones• FreeBSD Jails• Linux:

• LXC• Virtuozzo/OpenVZ• Docker (контейнеры «с наполнением»)

Copyright © 2016 Virtuozzo. All Rights Reserved. 3

Page 4: Шаблоны контейнеров в Virtuozzo

Пустой контейнер – плохой контейнер

Пользователям нужно наполнение:• Операционная система• Заданный набор приложений

Copyright © 2016 Virtuozzo. All Rights Reserved. 4

Page 5: Шаблоны контейнеров в Virtuozzo

Доставка контента в контейнер

• Использование заранее созданных ВМ• Просто и популярно (Docker)• Требует поддержки(“30% of Official Images in Docker Hub Contain High Priority Security Vulnerabilities” – BanyanOps, 2015)

• Автоматическая установка ОС/приложений после создания контейнера

Copyright © 2016 Virtuozzo. All Rights Reserved. 5

Page 6: Шаблоны контейнеров в Virtuozzo

Автоматическая установка ОС

• «Родные» программы установки ОС• Специфичны для каждого дистрибутива Linux• Требуют предварительной конфигурации• Ограниченные возможности автоматической установки

• Использование средств хост-системы• LXC c ALT Linux можно развернуть только в ALT Linux

• Инструменты установки одной ОС внутри другой• Debootstrap, supermin, rosa-bootstrap – ограничены по

функционалу

Copyright © 2016 Virtuozzo. All Rights Reserved. 6

Page 7: Шаблоны контейнеров в Virtuozzo

Средства управления конфигурацией

• Ansible, chef, puppet• … в совокупности с Vagrant …Работает, но требует отдельной настройки

Copyright © 2016 Virtuozzo. All Rights Reserved. 7

Page 8: Шаблоны контейнеров в Virtuozzo

Жизнь после установки

Мало установить систему, ее надо поддерживать• Устанавливать обновления• Устанавливать/удалять заданные приложения

Copyright © 2016 Virtuozzo. All Rights Reserved. 8

Page 9: Шаблоны контейнеров в Virtuozzo

Инструменты поддержки

• Docker – манипулирование «слоями» контейнеров• Недостаточно гибко

• Системы управления конфигурациями• Требуют настройки• Многие действия производят изнутри контейнеров

нужен доступ в интернет, права администратора, специальный агент и т.п.

Copyright © 2016 Virtuozzo. All Rights Reserved. 9

Page 10: Шаблоны контейнеров в Virtuozzo

Шаблоны контейнеров Virtuozzo

• Установка ОС в контейнере «с нуля»• Установка/удаление/обновление наборов программ• Унифицированный интерфейс для всех

дистрибутивов Linux• Нет необходимости в модификациях внутри

контейнеров (не нужно агентов, ssh-доступа, …)

Copyright © 2016 Virtuozzo. All Rights Reserved. 10

Page 11: Шаблоны контейнеров в Virtuozzo

Дистрибутив Linux

== набор пакетов:• Архив с файлами программ• Скрипты

Менеджер пакетов:• Распаковка архивов• Выполнение скриптов из пакетов• Выполнение системных триггеров

Copyright © 2016 Virtuozzo. All Rights Reserved.

11

Пакет

Файлы приложения

Скрипты установки / удаления

Зависимости от других компонентов ОС

Page 12: Шаблоны контейнеров в Virtuozzo

Управление пакетами

Установка ОС или набора программ == установка нужных пакетов в нужном порядке

Простой распаковки недостаточно:• Cкрипты и триггеры• Зависимости между пакетами

• Скрипт из пакета A требует утилиту из пакета B• Нюансы, о которых знают только менеджеры пакетов

конкретного дистрибутива

Copyright © 2016 Virtuozzo. All Rights Reserved. 12

Page 13: Шаблоны контейнеров в Virtuozzo

Virtuozzo vzpkg*

Модифицированные версии менеджеров пакетов для разных дистрибутивов Linux

• Заточены на развертывание ОС «с нуля» и ее последующее обслуживание извне контейнера

• Способны взаимодействовать с инструментами управления контейнерами

Copyright © 2016 Virtuozzo. All Rights Reserved. 13

Page 14: Шаблоны контейнеров в Virtuozzo

Виды шаблонов

• Шаблон ОС• Базовый• Дополнительные вариации

CentOS Minimal, CentOS WebServer, …• Шаблоны приложений

• PHP, Apache, MySQL, …

Copyright © 2016 Virtuozzo. All Rights Reserved. 14

Page 15: Шаблоны контейнеров в Virtuozzo

Шаблон ОС

• Списки пакетов, замкнутые по зависимостям• Скрипты, выполняемые программами установки ОС

• Настройка сети, часового пояса, …

Copyright © 2016 Virtuozzo. All Rights Reserved. 15

Дополнительныйшаблон ОС

Базовый шаблон

Доп. пакеты

Доп. скрипты

Page 16: Шаблоны контейнеров в Virtuozzo

Установка ОС

== подготовка образа диска с установленной ОС • Распаковка минимального окружения с

модифицированным менеджером пакетов• Скачивание и распаковка пакетов ОС• Выполнение скриптов из пакетов• Выполнение скриптов установки ОС

Copyright © 2016 Virtuozzo. All Rights Reserved. 16

Page 17: Шаблоны контейнеров в Virtuozzo

Шаблоны приложений

• Предназначены для установки поверх конкретного шаблона ОС

• Centos-7-x86_64-php• Содержат список пакетов для установки и

дополнительные скрипты

Copyright © 2016 Virtuozzo. All Rights Reserved. 17

Page 18: Шаблоны контейнеров в Virtuozzo

Работа с шаблонами

Утилита командной строки vzpkg• Создание и обновление кэша шаблонов

• Во избежание повторной распаковки набора пакетов• Установка/удаление шаблонов приложений в

контейнерах• Обновление пакетов, относящихся к шаблону

Copyright © 2016 Virtuozzo. All Rights Reserved. 18

Page 19: Шаблоны контейнеров в Virtuozzo

Challenges

• Поддержка разных пакетных менеджеров• Различные кодовые базы (yum, zypper, dpkg/apt)• Различные условия сборки• Обновления при обновлении ОС

• Скрипты установки ОС

Copyright © 2016 Virtuozzo. All Rights Reserved. 19

Page 20: Шаблоны контейнеров в Virtuozzo

Изменения в пакетных менеджерах

• Установка пакетов в заданный контейнер• Работа с идентификаторами пользователей/групп• Обработка зависимостей• …• Работа с VZFS

• «Слияние» одинаковых файлов из разных контейнеров • Больше не нужна (в Virtuozzo 7 заменена на pfcache)

Размер: 1-3KLoC (50% - поддержка VZFS)

Copyright © 2016 Virtuozzo. All Rights Reserved. 20

Page 21: Шаблоны контейнеров в Virtuozzo

Использование

• Командная строка• Шаблон – параметр при создании контейнера• Vzpkg – «пакетный менеджер» для шаблонов

• GUI – Virtuozzo Automator

Copyright © 2016 Virtuozzo. All Rights Reserved. 21

Page 22: Шаблоны контейнеров в Virtuozzo

Командная строка

# prlctl create c1 --ostemplate ubuntu-16.04-x86_64 --vmtype=ct

# vzpkg install c1 php

# vzpkg update c1 ubuntu-16.04-x86_64

# vzpkg remove c1 php

Copyright © 2016 Virtuozzo. All Rights Reserved. 22

Page 23: Шаблоны контейнеров в Virtuozzo

Настройки vzpkg

• Списки пакетов, скрипты – в текстовом виде• Репозитории-источники пакетов• Ключи для доступа к закрытым репозиториям по

подписке

Copyright © 2016 Virtuozzo. All Rights Reserved. 23

Page 24: Шаблоны контейнеров в Virtuozzo

Ресурсы

• Шаблоны Virtuozzohttps://src.openvz.org/projects/OVZT

• Инструментарий управления шаблонамиhttps://src.openvz.org/projects/OVZ/repos/vztt

Copyright © 2016 Virtuozzo. All Rights Reserved. 24