Контейнеры представляют собой облегченную версию пользовательского пространства операционной системы Linux – фактически, это «голый» минимум. Тем не менее, это все равно полноценная операционная система, и поэтому качество этого самого контейнера так же важно, как полновесной операционной системы. Именно поэтому долгое время мы предлагали образы Red Hat Enterprise Linux (RHEL), чтобы пользователи могли иметь сертифицированные, современные и актуальные контейнеры корпоративного уровня. Запуск образов контейнеров (container images) RHEL на хостах контейнеров (container hosts) RHEL обеспечивает совместимость и переносимость между средами, не говоря уже о том, что это – уже знакомые инструменты. Была, правда, одна проблема. Вы не могли просто передать такой образ кому-то еще, даже если речь шла о заказчике или партнере, использующем Red Hat Enterprise Linux.
Но теперь все изменилось
С выпуском универсального образа Red Hat Universal Base Image (UBI) теперь можно получать привычную надежность, безопасность и высокую производительность официальных образов контейнеров Red Hat независимо от того, есть ли подписка или нет. Это означает, что можно строить контейнизированное приложение на UBI, помещать его в реестр контейнеров по вашему выбору и делиться им со всем миром. Red Hat Universal Base Image позволяет строить, делиться и вести совместную работу над контейнизированным приложением в любом окружении – там, где хотите.
Благодаря UBI существует возможность публиковать и запускать свои приложения практически в любой инфраструктуре. Но если запускать их на платформах Red Hat, таких как Red Hat OpenShift и Red Hat Enterprise Linux, то можно получить дополнительные преимущества (больше золота!). И пока мы не перешли к более подробному описанию UBI, позвольте предоставить короткий FAQ, зачем нужна RHEL Subscription. Итак, что будет при запуске образа UBI на платформе RHEL/OpenShift?
А теперь, когда на маркетинг доволен, поговорим подробней про UBI
Причины применять UBI
Что вы должны чувствовать, чтобы понять, что UBI будет вам полезен:
- Мои разработчики хотят использовать образы контейнеров, которые можно распространять и запускать в любом окружении
- Моя команда operations хочет поддерживаемый базовый образ с жизненным циклом корпоративного уровня
- Мои архитекторы хотят предлагать Kubernetes Operator моим заказчикам/конечным пользователям
- Мои заказчики хотят
в ус не дутьподдержку корпоративного уровня для всего своего окружении Red Hat - Мое сообщество хочет делиться, запускать, публиковать контейнизированные приложения буквально везде
Если хотя бы на один из сценариев вам подходит, то определенно следует обратить внимание на UBI.
Больше, чем просто некий базовый образ
UBI – меньше, чем полноценная ОС, но у UBI есть три важных вещи:
- Набор из трех базовых образов (ubi, ubi-minimal, ubi-init)
- Образы с уже готовыми средами выполнения различных языков программирования (nodejs, ruby, python, php, perl, и т.д.)
- Набор связанных пакетов в репозитории YUM с наиболее распространенными зависимостями
UBI создавался в качестве основы для cloud – native и веб-приложений, разрабатываемых и поставляемых в контейнераx. Весь контент в UBI является подмножеством RHEL. Все пакеты в UBI поступают через каналы RHEL и поддерживаются подобно RHEL при запуске на поддерживаемых Red Hat платформах, таких как OpenShift и RHEL.
Для обеспечения качественной поддержки контейнеров требуется немало усилий инженеров, специалистов по безопасности и другие дополнительные ресурсы. Требуется не только тестирование базовых образов, но также анализ их поведения на любом поддерживаемом хосте.
Чтобы облегчить задачи, связанные с обновлением, Red Hat активно развивает разработку и поддержку, благодаря чему UBI 7 можно запускать, например, на хостах RHEL 8, а UBI 8 – на хостах RHEL 7. Это обеспечивает пользователям необходимую гибкость, уверенность и спокойствие в процессе, например, обновлений платформ в образах контейнеров или используемых хостов. Теперь все это можно разделить на два самостоятельных проекта.
Три базовых образа
Минимальный – предназначен для приложений со всеми зависимостями (Python, Node.js, .NET, etc.)
- Минимальный набор предустановленного контента
- Без исполняемых файлов suid
- Минимальный инструментарий менеджера пакетов (установка, обновление и удаление)
Платформа – для любых приложений, запускаемых на RHEL
- Унифицированный криптографический стек OpenSSL
- Полный стек YUM
- Включены полезные основные утилиты ОС (tar, gzip, vi, и т.д.)
Multi-Service – упрощает запуск нескольких сервисов в одном контейнере
- Сконфигурирован для запуска systemd при старте
- Возможность включения сервисов на этапе сборки
Образы контейнеров с уже готовыми средами выполнения языков программирования
В дополнение к базовым образам, которые позволяют устанавливать поддержку языков программирования, UBI включают в себя предварительно собранные образы с уже готовыми средами выполнения ряда языков программирования. Многие разработчики могут просто взять образ и приступить к работе над приложением, которое они разрабатывают.
С запуском UBI Red Hat предлагает два набора образов – на базе RHEL 7 и на базе RHEL 8. За их основу были взяты, соответственно, Red Hat Software Collections (RHEL 7) и Application Streams (RHEL 8). Эти среды выполнения поддерживаются в актуальном состоянии и стандартно получают до четырех обновлений в год, таким образом, всегда есть возможность для работы с самыми свежими и стабильными версиями.
Вот перечень образов контейнеров UBI 7:
Вот перечень образов контейнеров для UBI 8:
Ассоциированные пакеты
Использование готовых образов действительно очень удобно. Red Hat поддерживает их актуальность и обновляет их вместе с выпуском новой версии RHEL, а также при появлении критических обновлений CVE в соответствии с политикой обновлений RHEL image policy для того, чтобы можно было взять один из этих образов и сразу же приступить к работе над приложением.
Но иногда при создании приложения вам может внезапно потребоваться какой-то дополнительный пакет. Или, иногда, чтобы заставить приложение работать, нужно обновить тот или иной пакет. Именно поэтому образы UBI поставляются с набором RPM, которые доступны посредством yum, и которые распространяются с помощью быстрой и высокодоступной сети доставки контента (вам пакет!). Когда вы запускаете yum-обновление на своем CI / CD в тот критический момент релиза, вы можете быть уверены – оно будет работать.
RHEL – это основа
Мы не устаем повторять, что RHEL – это основа всего. Знаете, какие команды в Red Hat работают над созданием базовых образов? Например вот эти:
- Инженерно-техническая группа, отвечающая за обеспечение того, чтобы базовые библиотеки, такие как glibc и OpenSSL, а также языковые среды выполнения, такие как Python и Ruby, обеспечивали стабильную производительность и надежно работали с рабочими нагрузками, при использовании в контейнерах.
- Группа обеспечения безопасности продуктов занимается своевременным исправлением ошибок и проблем безопасности в библиотеках и языковых средах, эффективность их работы оценивается с помощью специального индекса Container Health Index grade.
- Команда менеджеров по продукту и инженеров занимается добавлением новых функций и обеспечивают длительный жизненный цикл продукта, что дает уверенность во вложенных инвестициях, которые можно будет использовать в качестве основы.
Red Hat Enterprise Linux выступает в роли отличного хоста и образа для контейнеров, но для многих разработчиков важна возможность работы с системой в самых различных форматах, некоторые из которых могут выходить за рамки поддерживаемых сценариев использования Linux системы. И здесь на помощь приходят универсальные образы UBI.
Предположим, конкретно сейчас, на данном этапе, вы просто ищете базовый образ, чтобы начать работу над простым контейнизированным приложением. Или вы уже ближе к будущему и двигаетесь от автономных контейнеров, работающих на container engine, к cloud-native истории с использованием операторов (building and certifying Operators), работающих на OpenShift. В любом случае UBI обеспечит для этого отличную основу.
Контейнеры включают в себя облегченную версию пользовательского пространства операционной системы в новом формате пакетирования. Выпуск образов UBI устанавливает новый отраслевой стандарт для контейнизированной разработки, при этом контейнеры корпоративного класса становятся доступными для любых пользователей, независимых разработчиков ПО, open source сообществ. В частности, разработчики ПО могут стандартизировать свои продукты, используя единую, проверенную основу для всех своих контейнизированных приложений, в том числе Kubernetes Operators. Компаниям-разработчикам, использующим UBI, также доступны сертификация Red Hat Container Certification и Red Hat OpenShift Operator Certification, а это в свою очередь позволяет непрерывно верифицировать программное обеспечение, запускаемое на платформах Red Hat, таких как OpenShift.
Как начать работать с образом
Если коротко – очень просто. Podman доступен не только в RHEL, но также в Fedora, CentOS и в ряде других дистрибутивов Linux. Все, что нужно сделать – выгрузить образ из одного из следующих репозиториев, и вперед.
Для UBI 8:
podman pull registry.access.redhat.com/ubi8/ubi
podman pull registry.access.redhat.com/ubi8/ubi-minimal
podman pull registry.access.redhat.com/ubi8/ubi-init
Для UBI 7:
podman pull registry.access.redhat.com/ubi7/ubi
podman pull registry.access.redhat.com/ubi7/ubi-minimal
podman pull registry.access.redhat.com/ubi7/ubi-init
Ну и посмотрите полный Universal Base Image Guide
Автор: Red Hat