Важная, но не очень афишируемая особенность «открытой» операционной системы Cisco для центров обработки данных — это возможность создавать приложения и микросервисы с использованием Linux-контейнеров.
Контейнеры — не новая особенность Cisco NX-OS, но они приобретают все большее значение для идущей с июня кампании продвижения Cisco NX-OS в качестве «открытой», позволяющей создавать любые необходимые приложения для сетевого оборудования. Для этого в Open NX-OS предусмотрены объектное хранилище и модельно-ориентированный интерфейс программирования NX-API, поддерживающий схемы вызова REST и XML/JSON. Кроме того, ОС интегрируется со средствами конфигурационного управления и мониторинга Puppet, Chef и Ganglia; есть SDK для взаимодействия с другими приложениями и утилиты Linux, позволяющие интегрировать инструменты на уровне системы и в пределах сети.
Именно эти утилиты и возможности Cisco стоит подчеркивать, если в компании хотят извлечь выгоду из тенденции отделения программных сетевых функций от аппаратных. Сегодня эта волна охватила сервис-провайдеров, а в конечном счете, как ожидают аналитики, она дойдет и до корпоративных сетей. Сетевые контейнеры между тем предлагают и в VMware — на платформе виртуализации NSX.
«В ближайшие годы все большую важность будет приобретать развитая поддержка контейнеризации и микросервисов для сетевого оборудования, — уверен аналитик IDC Брэд Кейсмор. — В Cisco заявляют, что NX-OS как минимум частично отвечает этим требованиям. В IDC полагают, что все производители сетевого оборудования должны предложить конструктивные решения в области микросервисов и контейнеризации».
Неоднократные попытки побеседовать с кем-либо из руководителей Cisco по поводу поддержки Linux-контейнеров в NX-OS не увенчались успехом. Но есть совместный доклад Cisco и Red Hat, где описывается технология LinuX Containers (LXC), которая обеспечивает виртуализацию на уровне операционной системы, позволяя выполнять по нескольку изолированных копий Linux — контейнеров на одной и той же хост-системе. С помощью LXC, указано в докладе, можно устанавливать на коммутатор произвольные приложения, необходимые конкретному заказчику.
Приложения, работающие в разных контейнерах, изолированы друг от друга, так что каждое не влияет на быстродействие и стабильность остальных, как и на работу самого коммутатора, подчеркивается в докладе. В каждом контейнере инкапсулируются все компоненты, от которых зависит приложение.
Благодаря изоляции на одной и той же системе могут сосуществовать несколько версий одних и тех же компонентов, но администрировать полноценный стек ПО для каждого контейнера не нужно.
Linux-контейнеры позволяют однажды созданным приложениям работать на разных платформах — это ускоряет разработку и развертывание, благодаря чему контейнеры оптимальны для DevOps, разработки во взаимодействии с пользователями. Контейнеризованные приложения могут работать на физических серверах, виртуальных машинах, в общедоступных облаках и на сетевых устройствах.
Контейнеры дают целый ряд преимуществ при выпуске приложений: снижение затрат, ускорение разработки и более простое обеспечение безопасности. Нередко контейнер добавляет к самому приложению всего несколько мегабайтов, тогда как типичная виртуальная машина может занимать сотни мегабайтов или даже гигабайтов, отмечается в докладе.
Кроме того, контейнеры упрощают освоение новых моделей ИТ-сред, например гибридных облаков и архитектур на основе микросервисов. Микросервисы — это компоненты, объединяемые в приложение через сеть. Каждый компонент написан на лучшем для своей задачи языке программирования и каждый можно развертывать и масштабировать независимо от других. Микросервисы можно быстро запускать и останаваливать, независимо масштабируя для каждого ресурсы процессора, памяти и др.
Контейнеры и микросервисы помогают оптимизировать работу отдела ИТ благодаря более быстрому вводу в действие приложений, упрощенной установке заплат для операционных систем и приложений, более оптимальному расходу ресурсов, повышению мобильности приложений, уменьшению количества администрируемых копий ОС и большей контролируемости рабочих задач. Как было сказано в упоминавшемся докладе, в Cisco создают «глобальную облачную сеть Intercloud на основе контейнеров и микросервисов, состоящую из нативных и гибридных облаков, реализующих модель непрерывной интеграции и развертывания, построенных на базе технологий OpenStack, VMware и др.».
В Cisco также видят возможность использовать Linux-контейнеры в рамках концепции Fog Computing, подразумевающей перенос облачных вычислений к границам сети и являющейся одним из основополагающих элементов инициативы «Интернета всего» (Internet of Everything), выдвинутой Cisco.
Linux-контейнеры позволяют приложениям автоматически конфигурировать сетевые ресурсы, а разработчикам — получать доступ к информации о быстродействии, состоянии и топологии сети, группам портов виртуальных машин и т. п. для нужд конфигурационного управления, в том числе для выбора подходящей VLAN, открытия нужных портов, настройки балансировки нагрузки, конфигурирования защиты портов с помощью списков контроля доступа, а также для применения сетевых политик качества обслуживания и др.
Когда новое контейнеризованное приложение вводится в рабочую эксплуатацию, сеть может автоматически распознать его требования и обеспечить соответствующую настройку.
В коммутаторах линейки Cisco Nexus 9000, работающих под NX-OS, с помощью LXC можно выполнять программирование таблиц переадресации. Как следует из материалов на сайте Cisco, данная особенность призвана дать разработчикам больше контроля над базами переадресации и возможность напрямую управлять соответствующей логикой коммутатора.
Программировать таблицы переадресации в NX-OS также можно, пользуясь средой разработки Cisco onePK и ее расширениями, предназначенными для работы с протоколом OpenFlow.
Как бывает практически с любой передовой технологией, широкое применение контейнеризации на предприятиях начнется лишь после ее внедрения сервис-провайдерами и появления проверенных сценариев применения, говорится в докладе Cisco и Red Hat. Но прежде еще предстоит преодолеть кое-какие препятствия, особенно в области безопасности.
Существует ряд проектов по решению проблемы, связанной с возможностью создания эксплойтов, работающих на уровне ядра хостовой ОС, которые могут затрагивать все контейнеры на хосте. В частности, совершенствуются средства принудительного контроля доступа, позволяющие защитить хост и контейнеры от вредоносных процессов, работающих в последних. Есть, к примеру, проект libseccomp, — компонент, ограничивающий выполнение системных вызовов, чтобы не позволить взломанному контейнеру скомпрометировать ядро.
Идет работа над программными каркасами для управления образами и оркестровки жизненного цикла контейнеров. Как полагают авторы доклада, для расширения использования контейнеров нужно, чтобы подобных проектов было не слишком много.
Один из подобных каркасов — libnetwork компании Docker, который Cisco поддерживает и помогает разрабатывать вместе с IBM, Joyent, Microsoft, Rancher, VMware и Weave. Libnetwork — это библиотека, реализующая модель сетевых контейнеров, она помогает в оснащении распределенных контейнерных приложений сетевыми функциями и переносе таких приложений между различными платформами.
«В Cisco видят в libnetwork критически важный интеграционный инструмент, который позволит компании осваивать новые возможности в области сетей центров обработки данных, — уверен Кейсмор. — Главная из таких возможностей — предложить заказчикам оптимизированную для контейнерных микросервисов управляемую масштабируемую инфраструктуру, состоящую из серверов на платформе UCS, коммутаторов Nexus и архитектуры программно-конфигурируемых сетей Cisco Application-Centric Infrastructure. В Cisco также видят возможности, связанные с разработкой основанных на ACI каркасов политик для приложений и процессов на базе микросервисов Docker, с развертыванием при помощи заказчиков приложений Docker в уже имеющихся средах, а также с содействием в проведении организационных перемен, которые позволят корпоративным заказчикам извлечь полную выгоду из микросервисов на основе Docker».
Наряду с этим есть проект по созданию журнала регистрации событий для контейнеров, сохраняющего сведения о том, когда и где контейнеры используются, а также об их содержимом. В таком журнале может содержаться информация о том, кто создал контейнер, о его компонентах — для нужд управления лицензиями — и сертификатах.