Русский
Русский
English
Статистика
Реклама

Блог компании red hat

Шпаргалка по pip, 6 заблуждений насчет AIOps, бесплатный онлайн-курс, а еще про Windows-программы на Linux

11.03.2021 18:13:13 | Автор: admin

Собрали много инсайтов, мероприятий, книжек и шпаргалок. Оставайтесь с нами станьте частью DevNation!

Узнать новое

  • Edge-вычисления и IoT идеальная парочка
    Edge локализует обработку данных как можно ближе к устройствам IoT, что положительно влияет на задержки, производительность, затраты и безопасность корпоративных ИТ-систем

Скачать

  • Шпаргалка по pip
    Поможет эффективно использовать pip менеджер сторонних пакетов для Python

Почитать на досуге

Мероприятия:

  • Виртуальный Red Hat Summit 2021, 27-28 апреля
    Бесплатная онлайн-конференция Red Hat Summit это отличный способ узнать последние новости ИТ-индустрии, задать свои вопросы техническим экспертам, услышать истории успеха непосредственно от заказчиков Red Hat и увидеть, как открытый код генерирует инновации в корпоративном секторе

Подробнее..

3 стратегии сегментации для граничных вычислений

01.04.2021 18:23:17 | Автор: admin

По прогнозам IDC, в 2024 году размер мирового рынка граничных вычислений (edge computing) достигнет $250,6 млрд, так что эта технология определенно заслуживает пристального внимания. И сегодня мы поговорим о таком ее важном аспекте, как сегментация: что это, зачем она нужна, и как реализуется.

Суть концепции edge computing физически перенести вычисления как можно ближе к конечному потребителю, чтобы предоставлять их максимально быстро и эффективно. Однако в отличие от распределенной архитектуры ЦОД, где информационный обмен между сервисами сводится к взаимодействию кластеров машин, сконцентрированных в одной локации, граничные вычисления подразумевают использование физических устройств, которые рассредоточены на обширной территории (например, банкоматы) и даже могут активно перемещаться в пространстве (складские погрузчики или беспилотные автомобили). Такое резкое увеличение парка и разнообразия устройств, образующих цифровой домен, принципиально меняет архитектурные подходы к распределенным вычислениям, см. Рис. 1.

Рис. 1: Граничные вычисления повышают уровень сегментации распределенных вычислений.Рис. 1: Граничные вычисления повышают уровень сегментации распределенных вычислений.

Критическим фактором при проектировании архитектуры граничных вычислений является сегментация: физическая, логическая и на уровне данных. В edge computing очень важно, где и как именно существуют вычислительные ресурсы, образующие домен приложения. Кроме того, если в облачных вычислениях главным предметом обеспокоенности является защита данных, то в граничных вычислениях не менее важно защищать от вредоносного вторжения и сами устройства, между которыми циркулируют данные, а количество таких устройств может исчисляться не только десятками и сотнями, но и тысячами. В самом деле, вам вряд ли понравится, если хакер подключится к умной колонке в вашей гостиной и начнет прослушивать домашние разговоры? Или, не дай бог, перехватит управление электронным ассистентом в вашем автомобиле и устроит Армагеддон прямо посреди города.

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

В этой статье мы рассмотрим сегментацию граничных вычислительных сред, обсудим сопутствующие таким средам проблемы, и разберем различные подходы к сегментации: физические, логические и на уровне данных.

Проблемы на пороге

Вместе с граничными вычислениями в распределенных системах появляется ряд факторов, которые усложняют архитектурное проектирование сегментации. Если классическая среда облачных вычислений относительно однородна и состоит из дата-центров, заполненных стойками серверов x86 или мейнфреймов, которые связаны оптоволоконным Ethernet-ом и общаются по TCP/IP, то граничные вычисления выводят на арену широкий спектр устройств и коммуникационных протоколов на базе различных аппаратных архитектур и чипсетов. Одни из этих устройств, такие как банкоматы, используют стандартные процессоры x86. Другие, например, различные системы на базе микрокомпьютеров Raspberry PI, построены на архитектуре ARM. И наконец, третьи, вроде роботизированных систем или автомобилей, используют узко специализированные чипсеты.

Помимо железа взрыв разнообразия происходит и на уровне коммуникационных протоколов. Одни устройства могут напрямую подключаться Ethernet-кабелем, другие по беспроводному 802.11x, третьи через Bluetooth. И все эти устройства требуется поддерживать.

Другой важный момент обновление этих новых граничных систем. Для стандартных вычислительных устройств, таких как ноутбуки, планшеты или мобильные телефоны, обновление выполняется довольно просто, поскольку они, как правило, почти всегда доступны по сети. Но как обновить ПО на беспилотном автомобиле, который использует очень специфическое железо и протоколы, а к сети подключен отнюдь не постоянно? Это создает серьезные вызовы при проектировании ИТ-архитектуры предприятия, которые надо всесторонне учитывать. И именно поэтому в граничных вычислениях так важно тщательно прорабатывать сегментацию на физическом и логическом уровнях, а также на уровне данных.

Физическая сегментация

Физическая сегментация это про то, как разнести части распределенной архитектуры по различным физическим машинам. Как уже говорилось, в дата-центре физическая сегментация обычно сводится к размещению оборудования в серверных стойках внутри одного здания. В ситуациях, когда требуется обеспечить молниеносную связь между какими-то конкретными машинами, их надо размещать как можно ближе друг к другу. Это просто законы физики: чем меньше расстояние, тем быстрее обмен данными. Для приложений, менее требовательных в плане задержек, физическое расстояние между машинами внутри дата-центра не критично, им просто достаточно быть в одном здании.

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

Одна из таких моделей разбиения получила название туманных вычислений (fog computing) и подразумевает наличие промежуточных дата-центров и точек сбора данных, расположенных между устройствами IoT и главным центром обработки данных, см. Рис. 2.

Рис. 2: Туманные вычисления (fog computing) это способ сегментации физических вычислительных ресурсов между устройствами IoT и главным дата-центром.Рис. 2: Туманные вычисления (fog computing) это способ сегментации физических вычислительных ресурсов между устройствами IoT и главным дата-центром.

В рамках fog-модели дата-центры зачастую выступают в роли квази-граничных устройств: они работают в частных сетях, обслуживают какую-то конкретную локацию и решают какую-то специфическую задачу.

Хорошим примером fog-архитектуры является городская система дорожных камер, которые группами подключаются к районным ЦОД в городской сети, а эти ЦОД уже подключены к главному дата-центру города. Передача данных при этом становится эффективнее, так как каждая камера подключена к fog-облаку. Однако простое перемещение данных туда и обратно имеет смысл только с точки зрения логики использования этих данных. Здесь можно добиться хорошей эффективности, если разместить критически важный программный интеллект в правильно выбранном относительно других вычислительных активов месте. И именно здесь в игру вступает сегментирование программной логики.

Сегментирование логики

Интеллект веб-приложений часто распределяется таким образом, чтобы реализовать логику пользовательского интерфейса, правила проверки и некоторых вычислительных задачи непосредственно на веб-странице или на клиентском устройстве. Вычислительная логика более сложных многоуровневых приложений, вроде покупок на сайте Amazon, реализуется в дата-центре. Во многих отношениях архитектура веб-приложений близка к традиционной архитектуре клиент-сервер.

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

Эмпирическое правило гласит, что на каждом физическом уровне должно присутствовать столько логики, сколько требуется для выполнения работы на этом участке. Допустим, IoT-устройство это умный складской погрузчик с геолокацией в реальном времени, который может сам находить нужный отсек на складе и забирать оттуда паллету с запрошенным товаром. В этом случае логика безопасного передвижения по складу должна быть реализована на самом погрузчике. Погрузчик не должен постоянно спрашивать сервер, как ему двигаться по складу. Кроме того, непосредственно на погрузчике должна иметься и логика его обновления. Это может быть SSH-сервер, чтобы оператор или bash-скрипт могли делать обновление. Либо это может быть подписчик системы обмена сообщениями, привязанный к расположенному в fog-облаке брокеру и получающий от него сигнал о необходимости обновить свой код и затем связывающийся с fog-сервером с помощью клиента HTTP.

Навигация по складу, выбор паллеты с нужным товаром и активное участие в обновлении своего ПО это основные функции погрузчика. А вот работа с данными клиентского заказа, к которому относится товар, к основным функциям погрузчика не относится. Поэтому соответствующая логика должна реализовываться уже в другом месте, например, на серверной миниферме на том же складе, где работает погрузчик, либо выше, где-то в частном fog-облаке, накрывающем территорию склада.

Также логично будет разграничить обработку заказов, чтобы каждый склад обрабатывал только свои заказы. Есть и следующий, более высокий уровень логики, где клиентский заказ уже отслеживаются в рамках общей картины управления цепочками поставок, и который реализуется на уровне корпоративной системы ERP, охватывающей все регионы присутствия компании, см. Рис. 3.

Рис. 3: В архитектуре граничных вычислений логика должна разделяться согласно ключевым функциям уровня сегментации.Рис. 3: В архитектуре граничных вычислений логика должна разделяться согласно ключевым функциям уровня сегментации.

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

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

Сегментирование на уровне данных

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

Впрочем, всегда полезно помнить, что маленькие пакеты проще передаются по сети и быстрее обрабатываются, чем большие. Преобразование данных в двоичный формат, такой как Protocol Buffers, и потоковая передача данных, такая как gRPC, обеспечивают очень быстрый обмен данными. Обратная сторона перехода на двоичные структуры данных и потоковую передачу усложнение архитектуры за счет упаковки и обработки данных. Как бы то ни было, основное правило здесь следующее: маленькие пакеты это хорошо, а потоковые данные еще лучше! Запомним это правило и вернемся к сценарию со складом и умным погрузчиком.

В этом сценарии есть три точки обмена данными: умный погрузчик, локальное частное fog-облако склада и координирующая цепочку поставок ERP-система, которая расположена в защищенном глобальном облаке.

Задача погрузчика забрать паллету с нужным товаром из складского отсека. Для этого локальное fog-облако склада отправляет погрузчику соответствующую информацию о заказе.

Причем, fog-облако отслеживает передвижения погрузчика, а также отправляет в ERP-систему данные по выполнению заказа после того, как погрузчик заберет на складе паллету с товаром и загрузит ее в грузовик для доставки клиенту.

В свою очередь, расположенная в глобальном облаке ERP отправляет складскому fog-облаку информацию по заказам, которые надо отправить клиентам. Полностью этот сценарий показан на Рис.3.

Теперь займемся сегментацией данных с учетом конечных точек.

Как происходит обмен данными в средах IoT

Начнем с погрузчика. Он, во-первых, должен отправлять в частное fog-облако свое местоположении, чтобы fog мог строить оптимальный маршрут к нужному складскому отсеку. Во-вторых, погрузчик сообщает в fog свой операционный статус, чтобы склад своевременно знал, если погрузчик вышел из строя.

Данные о местоположении и статусе очень чувствительны ко времени. Если какой-то проезд по складу оказывается заблокирован, то погрузчик должен срочно изменить свой маршрут. Или если погрузчик вдруг сломался, то заказ, который он обрабатывал, необходимо передать другому погрузчику. Погрузчик может инкапсулировать данные о местоположении, маршрутизации и состоянии в небольшие структурированные сообщения, которые непрерывным потоком передаются в складское fog-облако. Как уже говорилось, потоковые данные передаются быстро и эффективно, особенно если текст предварительно трансформируется в двоичный формат. Таким образом, сегментация данных в двоичные сообщения с потоковой пересылкой gRPC, решает поставленную задачу.

Что касается клиентского заказа, то погрузчику достаточно знать лишь ID заказа, идентификатор товара (SKU) и складской отсек, где хранится паллета с этим товаром. Эти три значения можно упаковать в очень маленькое сообщение, которое погрузчик будет получать от fog-облака. Доставку таких сообщений легко организовать с помощью типового запроса-ответа HTTP на RESTful API, а чтобы ускорить передачу информации о заказе, погрузчик и fog-облако могут общаться через двусторонний поток gRPC.

На самом деле неважно, какой транспортный метод используется в системе. Важно лишь чтобы данные, которыми обмениваются устройство IoT (в нашем случае погрузчик) и частное fog-облако, координирующее работу этого устройства на складе, сегментировались на небольшие сообщения, которые можно было отправлять и принимать очень быстро. Короче говоря, здесь прежде всего важна скорость. И именно под эту задачу и сегментируются данные.

Сегментирование данных при обмене между fog-облаком и корпоративным облаком

Сегментация данных при информационном обмене между складским fog-облаком и корпоративной системой ERP, расположенной в глобальном облаке, существенно отличается от только что рассмотренной выше, и прежде всего тем, что здесь совсем не так критичен фактор времени.

Обмен данными между устройством IoT и fog-облаком должен быть практически мгновенным, то есть измеряться миллисекундами. Обмен данными между fog-облаком и глобальной системой ERP вполне переживет задержку в секунду-две. Кроме того, системе ERP и складскому fog-облаку нужна только информация о выполнении заказа. Иначе говоря, здесь вполне возможен пакетный обмен, когда одно сообщение содержит данные сразу по нескольким заказам. В результате сообщения становятся больше, но это не страшно, поскольку на обмен информацией есть гораздо больше времени, см. рис. 4.

Рис. 4: Сегментация данных это важный аспект корпоративной архитектуры в средах edge computing.Рис. 4: Сегментация данных это важный аспект корпоративной архитектуры в средах edge computing.

Обмен данными можно упростить за счет использования стандартного HTTP через RESTful API или же передавать их потоковым методом, тут уже дело личных предпочтений. Кому-то работать через REST на уровне ERP покажется намного проще, чем создавать и поддерживать механизмы кодирования-декодирования двоичных потоков данных по открытому и постоянному сетевому соединению. Интересно отметить, что наряду с сегментацией данных с учетом специфики физической среды и решаемых задач, для успешной работы организации требуется и сегментация ИТ-специалистов по профессиональным навыкам, чтобы нужные люди были на нужных местах.

Для программирования устройств IoT требуется совсем другие навыки, чем для кодирования систем ERP, особенно при работе со специализированными IoT-устройствами с проприетарными языками программирования. И организации склонны сегментировать ИТ-разработчиков соответствующим образом. Поэтому выбор используемых API-фреймворков и форматов данных в некоторой степени определяется и наличием людей с определенными квалификациями, а не только спецификой задач, которые решаются в ходе обмена данными, и особенностями физической среды, где происходит такой обмен.

Подводим итоги

Граничные вычисления это следующий большой шаг в распределенных вычислениях. Неуклонный рост интернета вещей и все более широкое распространение коммерческих веб-приложений выводит граничные вычисления в разряд главных задач проектирования и построения ИТ-архитектур.

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

Подробнее..

Поваренная книга Quarkus Cookbook, бесплатный Developer Sandbox for OpenShift и руководство CentOS Project

25.02.2021 12:15:55 | Автор: admin

Мы собрали для вас короткий дайджест полезных материалов, найденных нами в сети за последние две недели. Оставайтесь с нами станьте частью DevNation!

Начни новое:

Качай:

  • Бесплатный Developer Sandbox for OpenShift
    Это ваш личный OpenShift в облаке, всего за пару минут и без какой бы то ни было инсталляции. Среда создана специально для разработчиков и включает в себя Helm-диаграммы, builder-образы Red Hat, инструменты сборки s2i, также CodeReady Workspaces, облачную IDE с веб-интерфейсом.

Мероприятия:

Подробнее..

4 книги по цифровой трансформации для тимлидов, шпаргалка по Quarkus amp Observability

19.11.2020 12:06:35 | Автор: admin


Мы собрали для вас короткий дайджест полезных материалов, найденных нами в сети за последние две недели. Оставайтесь с нами станьте частью DevNation!

Начни новое:



Качай:


  • Debezium на OpenShift
    Debezium это распределенная опенсорсная платформа для отслеживания изменений в данных. Благодаря ее надежности и скорости ваши приложения смогут реагировать быстрее и никогда не пропустят события, даже если что-то пойдет на так. Наша шпаргалка поможет с развертыванием, созданием, запуском и обновление DebeziumConnector на OpenShift.
    Загрузить шпаргалку
  • Шпаргалка Quarkus & Observability (придется зарегистрироваться в девелоперской программе и стать частью community, мухахаха)



Почитать на досуге:


  • Объясняем простым языком, что такое гибридное облачное хранилище
    Что это вообще и какие задачи оно решает в условиях постоянного роста объемы данных и эволюции приложений.
    Вкратце: гибридные облачные хранилища сейчас в тренде, и не зря. Майк Пих (Mike Piech), вице-президент и генеральный менеджер Red Hat по облачным хранилищам и дата-сервисам, а также другие эксперты рассказывают о преимуществах, сценариях использования и ограничениях этой технологии.
  • 4 книги по цифровой трансформации, которые должен прочесть каждый руководитель
    Технологии это далеко не всё, на чем фокусируются руководители, успешно осуществляющие цифровую трансформацию. Представленные книги расширят ваше понимание путей развития корпоративные заказчиков, глобальных рынков и других важных тем.
    Вкратце: эти 4 книги помогут освежить понимание перспектив цифровой трансформации.


  • 7 способов применения микрокомпьютеров Raspberry Pi на предприятии
    От тимбилдинга до сверхдешевых средств безопасности и экспериментов с Kubernetes рассказываем, как задействовать Raspberry Pi на предприятиях.
    Вкратце: крохотный Raspberry Pi способен придать большой импульс развитию корпоративной ИТ-системы.

Смотри в записи:


  • jconf.dev (30 сентября)
    Бесплатная виртуальная Java-конференция прямо у вас на экране: четыре техно-трека с нашими комьюнити-экспертами по Java и облаку, 28 углубленных сессий и два потрясающих основных доклада.
  • AnsibleFest (13-14 октября)
    Два дня интереснейших докладов, демонстраций и практических занятий. Отличная возможность узнать, как разработчики, администраторы и ЛПР в сфере ИТ отвечают на вызовы перемен с помощью гибких технологий автоматизации с открытым кодом, которые позволяют перейти от того, что есть, к тому, что нужно.
  • J4K Conference (13-14 октября)
    Новая виртуальная конференция по Kubernetes, Java и облаку: 17 сессий с сотрудниками Red Hat, включая доклад Марка Литтла (Mark Little), главного человека в Red Hat по связующему ПО.
  • График предстоящих мероприятия DevNation
    Ознакомьтесь с планом мероприятия DevNation на портале Red Hat Developer, включая все вебинары Tech Talks и мастер-курсы, чтобы заранее спланировать свое расписание и зарегистрироваться на заинтересовавшие вас мероприятия.

По-русски:


Подробнее..

Подборка бесплатных книг по OpenShift, 4 преимущества стандартизованной операционной среды SOE и цифровая трансформация

03.12.2020 18:17:56 | Автор: admin

enterprisersproject.com

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

Начни новое:



Качай:


Подборка бесплатных книг по OpenShift:


Почитать на досуге:



Мероприятия:


  • 4 декабря, Создание гибридной облачной инфраструктуры с Red Hat и Microsoft Azure
    На вебинаре эксперты Red Hat и Microsoft расскажут про новые продукты и сервисы Red Hat на Microsoft Azure, благодаря которым можно быстро развернуть надежную и гибкую гибридную облачную среду. На вебинаре детально обсудим, как эффективно интегрировать ресурсы публичного облака в существующую инфраструктуру, а также использовать новые архитектуры приложений, которые расширяют ваши возможности.

Смотри в записи:
  • jconf.dev
    Бесплатная виртуальная Java-конференция прямо у вас на экране: четыре техно-трека с нашими комьюнити-экспертами по Java и облаку, 28 углубленных сессий и два потрясающих основных доклада.
  • AnsibleFest
    Два дня интереснейших докладов, демонстраций и практических занятий. Отличная возможность узнать, как разработчики, администраторы и ЛПР в сфере ИТ отвечают на вызовы перемен с помощью гибких технологий автоматизации с открытым кодом, которые позволяют перейти от того, что есть, к тому, что нужно.
  • J4K Conference
    Новая виртуальная конференция по Kubernetes, Java и облаку: 17 сессий с сотрудниками Red Hat, включая доклад Марка Литтла (Mark Little), главного человека в Red Hat по связующему ПО.
  • График предстоящих мероприятия DevNation
    Ознакомьтесь с планом мероприятия DevNation на портале Red Hat Developer, включая все вебинары Tech Talks и мастер-курсы, чтобы заранее спланировать свое расписание и зарегистрироваться на заинтересовавшие вас мероприятия.

По-русски:



Не забудьте отдать свой голос в конкурсе на лучшие OpenShift
настройки веб-консоли с использованием поддерживаемых механизмов OpenShift 4! Присоединяйтесь к нам на openshift.tv и выбирайте победителя!
Подробнее..

7 вещей, которые нужно проработать, прежде чем запускать OpenShift в продакшн

24.12.2020 16:21:15 | Автор: admin
Взрывной рост использования контейнеров на предприятиях впечатляет. Контейнеры идеально совпали с ожиданиями и потребностями тех, кто хочет снизить затраты, расширить свои технические возможности и продвинуться вперед по пути agile и devops. Контейнерная революция открывает новые возможности и для тех, кто подзадержался с обновлением ИТ-систем. Контейнеры и Kubernetes это абсолютно и принципиально новый способ управления приложениями и ИТ-инфраструктурой.



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

Многие решают ускорить переход на контейнеры с помощью Red Hat OpenShift Container Platform, ведущей отраслевой Kubernetes-платформы для корпоративного сектора. Это решение автоматически берет на себя множество задач первого дня и предлагает лучшую Kubernetes-экосистему на базе единой, тщательно протестированной и высоко защищенной платформы. Это наиболее комплексное и функциональное решение для предприятий, которое содержит всё необходимое для начала работы и устраняет массу технических барьеров и сложностей при построении Kubernetes-платформы.

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

1. Стандартизация правил именования и метаданных


В компьютерных науках есть только две трудные вещи: аннулирование кэша и именование сущностей.
Фил Карлтон (Phil Karlton)

У всякой сущности в OpenShift и Kubernetes есть свое имя. И у каждого сервиса должно быть свое DNS-имя, единственное ограничение здесь правила именования DNS. А теперь представьте, что монолитное приложение разложилось на 100500 отдельных микросервисов, каждый с собственной базой данных. И да, в OpenShift всё является либо иерархическим, связанным, либо должно соответствовать шаблону. Так что именовать придется массу и массу всего. И если заранее не подготовить стандарты, это получится настоящий Дикий Запад.

Вы уже распланировали схему реализации сервисов? Допустим, это будет одно большое пространство имен, например, databases, в котором все будут размещать свои базы данных. OK, и даже допустим, что все так и будут делать, но потом-то они начнут размещать свои кластеры Kafka в своих собственных пространствах имен. Да, а нужно ли заводить пространство имен middleware? Или лучше назвать его messaging? И как обычно, в какой-то момент появляются ребята, которые всегда идут своим путем и считают себя особенными, и говорят, что им нужны собственные пространства имен. И слушайте, у нас же в организации 17 подразделений, может надо приделать ко всем пространствам имен наши стандартные префиксы подразделений?

Прежде чем пускать что-либо в продакшн, продумайте стандарты именования и сопоставления сэкономите массу времени и сил, если сделаете это заранее. Введите стандарты на всё. Причем, здесь важно не столько их качество, сколько наличие, целостность и выполнение.

Другая мегаполезная вещь это метаданные. Стандартизируйте, какие активы хотите отслеживать, и убедитесь, что на соответствующих ресурсах прописаны нужные метаданные. Начните с рекомендованных меток. Например, аннотация support_email в метаданных пространства имен может сэкономить драгоценное время при выходе на техподдержку второго уровня в случае серьезного отказа. Кроме того, метаданные можно использовать, чтобы сократить имена ресурсов до вменяемой длинны, а не прописывать туда всю необходимую информацию через дефис. Привлеките всех, от архитекторов приложений до ИТ-эксплуатантов, устройте мозговой штурм и просчитайте наперед, что может здесь понадобиться, чтобы иметь продуманные стандарты к моменту запуска OpenShift.

2. Стандартизация корпоративных базовых образов


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

Возьмем, к примеру, базовое java-приложение. Ваши разработчики вряд ли ошибутся с выбором OpenJDK, а вот с управлением уязвимостями, обновлением библиотек и прочими вопросами ИТ-гигиены вполне могут. Мы все знаем, что бизнес-задачи зачастую решаются ценой технических компромиссов, вроде намеренного использования старых версий Java. К счастью, такие задачи легко автоматизируются и управляются на уровне предприятия. Вы по-прежнему может использовать базовые образы вендора, но одновременно задавать и контролировать свои циклы обновления, создавая собственные базовые образы.

Возвращаясь к примеру выше, допустим, разработчикам нужна Java 11, а вам, соответственно, надо, чтобы они всегда использовали самую последнюю версию Java 11. Тогда вы создаете корпоративный базовый образ (registry.yourcompany.io/java11), используя в качестве отправной точки базовый образ от вендора ОС (registry.redhat.io/ubi8/openjdk-11). А когда этот базовый образ обновляется, вы автоматом помогаете разработчикам задействовать последние обновления. К тому же, таким образом реализуется уровень абстракции, позволяющий бесшовно дополнять стандартный образ необходимыми библиотеками или Linux-пакетами.

3. Стандартизация проверок работоспособности и готовности


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

  • Запущено ли приложение (health check работоспособность).
  • Готово ли приложение (readiness check готовность).

Существует масса и других метрик, чтобы облегчить мониторинг приложений, но вот эти две это основа основ не только мониторинга, но и масштабирования. Работоспособность обычно определяется наличием сетевого подключения и способностью узла, на котором выполняется приложение, отозваться на запрос. Что касается готовности, то здесь уже каждое приложение должно реагировать на запросы по своим стандартам. Например, запуск приложения с очень низкими задержками может сопровождаться длительным обновлением кэша или прогревом JVM. И соответственно, пауза между ответами Запущено и Готово может достигать нескольких минут. А вот, например, для stateless REST API с реляционной базой данных эти ответы будут приходить одновременно.

Самое главное в этих проверках не отходить от сугубо двоичной логики. Запущено значит запущено, без всяких там как бы запущено. Готово значит готово, и никаких градаций, вроде на такие запросы готово отвечать, а на такие нет. Принцип простой: всё или ничего.

Второй аспект таких проверок это стандартизация. Как проверить готовность? Если у вас нет стандартов, то даже такой простой вопрос может стать настоящим кошмаром для мониторинга. Просто сравните, как разошлись друг от друга стандарты Quarkus и стандарты Spring Boot. А ведь никто этого не хотел, но со стандартами всегда так. Единственная разница в том, что теперь ваша организация сама имеет власть разрабатывать и вводить стандарты.
Примечание на полях. Не изобретайте свои стандарты. Просто найдите и используйте какой-нибудь готовый.

4. Стандартизация логов


Продолжая тему мониторинга, отметим, что сочетание недорогих хранилищ и решений класса big data породило на предприятиях нового монстра тотальное журналирование. Раньше это были неструктурированные и архаичные консольным логи, которые жили недолго и создавались от случая к случаю. Теперь норовят запротоколировать всё подряд и выстроить датасайнс с машинным обучением, чтобы самым революционным образом оптимизировать операции и мониторинг. Увы, надо признать очевидное: любые попытки начать собирать логи сотен приложений, не имея при этом абсолютно никаких стандартов и даже не задумываясь о них, неизменно приводят к бессмысленным и непомерным тратам на инструменты для управления логами и трансформации данных лишь для того, чтобы только начать работу. То есть еще до того, как вы поймете, что сообщения Выполнен переход или Этот блок сработал вряд имеют хоть какое-то отношение к вашим операциям.

Стандартизировать надо структуру. Повторимся: целостность стандартов важнее их правильности. Вы должны быть способы написать отдельный лог-парсер для каждого приложения, которое есть на предприятии. Да, это будут сугубо штучные, не тиражируемые вещи. Да, у вас будет куча исключений, которые нельзя контролировать, особенно для коробочных приложений. Но не выплескивайте ребенка вместе с водой, уделите внимание деталям: например, временная метка в каждом логе должна отвечать соответствующему стандарту ISO; сам вывод должен быть в формате UTC с точностью до 5-го знака в микросекундах (2018-11-07T00:25:00.07387Z). Уровни журнала должны быть оформлены CAPS-ом и там должны быть элементы TRACE, DEBUG, INFO, WARN, ERROR. В общем, задайте структуру, а уже затем разбирайтесь с подробностями.

Стандартизация структуры заставит всех придерживаться одних правил и использовать одни и те же архитектурные шаблоны. Это верно для логов как приложений, так и платформ. И не отклоняйтесь от готового решения без крайней нужды. EFK-стек (Elasticsearch, Fluentd и Kibana) платформы OpenShift должен быть в состоянии обработать все ваши сценарии. Он ведь вошел в состав платформы не просто так, и при ее обновлении это еще одна вещь, о которой не надо беспокоиться.

5. Переход на GitOps


Одна из главных прелестей OpenShift заключается в том, что здесь всё буквально: всё в конечном является либо конфигурацией, либо кодом, а значит, может контролироваться через систему управления версиями. Это позволяет революционизировать способы доставки и избавиться от бюрократии при запуске в продакшн.

В частности, традиционную схему на основе тикетов можно полностью заменить на модель с pull-запросами git. Допустим, владелец приложения хочет подкорректировать выделяемые приложению ресурсы после реализации в нем новых функций, например, увеличить память с 8 до 16 ГБ. В рамках традиционной схемы разработчику для этого надо создать тикет и ждать, пока кто-то другой выполнит соответствующую задачу. Этим кем-то другим чаще всего оказывается ИТ-эсплуатант, который лишь вносит ощутимую задержку в процесс реализации изменений, никак не повышая ценность этого процесса, или хуже того, навешивая на этот процесс лишние дополнительные циклы. В самом деле, у эсплуатанта есть два варианта действий. Первое: он рассматривает заявку и решает ее выполнить, для чего входит в продакшн-среду, вносит затребованные изменения вручную и перезапускает приложение.
Помимо времени на проведение самой работы здесь возникает и дополнительная задержка, поскольку у эксплуатанта, как правило, всегда есть целая очередь заявок на выполнение. Кроме того, возникает риск человеческой ошибки, например, ввод 160 ГБ вместо 16 ГБ. Второй вариант: эксплуатант ставит заявку под сомнение и тем самым запускает цепную реакцию по выяснению причин и последствий запрашиваемых изменений, да так, что иногда уже приходится вмешиваться начальству.

Теперь посмотрим, как это делается в GitOps. Запрос на изменения попадает в репозиторий git и превращается в pull-запрос. После чего разработчик может выставить этот pull-запрос (особенно, если это изменения в продакшн-среде) для утверждения причастными сторонами. Таким образом, специалисты по безопасности могут подключиться уже на ранней стадии, и всегда есть возможность отследить последовательность изменений. Стандарты в этой области можно внедрять программно, используя соответствующие средства в инструментальной цепочке CI/CD. После того, как его утвердили, pull-запрос версионируется и легко поддается аудиту. Кроме того, его можно протестировать в среде pre-production в рамках стандартного процесса, полностью устранив риск человеческой ошибки.

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

6. Схемы приложений (Blueprints)


Переход от монолитных приложений к микросервисам усиливает роль шаблонов проектирования (паттернов) приложений. В самом деле, типичное монолитное приложение не особо поддается классификации. Как правило, там есть и REST API, и пакетная обработка, и событиями оно управляется. HTTP, FTP, kafka, JMS и Infinispan? Да пожалуйста, а еще оно одновременно работает с тремя разными базами данных. И как прикажете создавать схему, когда здесь намешана целая куча шаблонов интеграции корпоративных приложений? Да никак.

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

  • REST API для управления данными в СУБД.
  • Пакетная обработка, которая проверят FTP-сервер на предмет обновления данных и отправляет их в топик kafka.
  • Camelадаптер, берущий данные из этого kafka-топика и отправляющий их в REST API
  • REST API, которые выдают обобщенную информацию, собираемую из Data Grid, которая действует как конечный автомат.

Итак, теперь у нас есть схемы, а схемы уже можно стандартизировать. REST API должны отвечать стандартам Open API. Пакетные задания будут управляться как пакетные задания OpenShift. Интеграции будут использовать Camel. Схемы можно создавать для API, для пакетных заданий, для AI/ML, для multicast-приложений, да для чего угодно. А затем уже можно определять, как развертывать эти схемы, как их конфигурировать, какие шаблоны использовать. Имея такие стандарты, не надо будет каждый раз изобретать колесо, и вы сможете лучше сфокусироваться на действительно важных задачах, вроде создания нового бизнес-функционала. Проработка схем может показаться пустой тратой времени, но затраченные усилия сторицей вернутся в будущем.

7. Подготовьтесь к API


Вместе с микросервисной архитектурой приходят и API. Ими тоже придется управлять и лучше подготовиться к этому заранее.

Во-первых, здесь опять понадобятся стандарты. В качестве отправной точки можно взять стандарты Open API, но придется углубиться в дебри. Хотя здесь важно соблюсти баланс и не впасть в чрезмерную зарегламентированность с кучей ограничений. Посмотрите на эти вопросы: когда новая сущность создается с помощью POST, что надо возвращать, 201 или 200? разрешается ли обновлять сущности с помощью POST, а не PUT? В чем разница между 400-ми и 500-ми ответами? примерно такой уровень детализации вам нужен.

Во-вторых, понадобится сервисная сетка service mesh. Это реально сильная вещь и со временем она станет неотъемлемой частью Kubernetes. Почему? Потому что трафик рано или поздно превратится в проблему, и вам захочется управлять им как внутри дата-центра (т.н. трафик восток-запад), так и между дата-центром и внешним по отношению к нему миром (север-юг). Вам захочется вытащить из приложений аутентификацию и авторизацию и вывести их на уровень платформы. Вам понадобятся возможности Kiali по визуализации трафика внутри service mesh, а также сине-зеленые и канареечные схемы развертывания приложений, или, к примеру, динамический контроль трафика. В общем, service mesh без вопросов входит в категорию задач первого дня.

В-третьих, вам понадобится решение для централизованного управления API. Вам захочется иметь одно окно для поиска и повторного использования API. Разработчикам понадобится возможность зайти в магазин API, найти там нужный API и получить документацию по его использованию. Вы захотите единообразно управлять версиями и deprecation-ами. Если вы создаете API для внешних потребителей, то такое решение может стать конечной точкой север-юг во всем, что касается безопасности и управления нагрузкой. 3Scale даже может помочь с монетизицией API. Ну и рано или поздно ваше руководство захочет получить отчет, отвечающий на вопрос Какие у нас есть API?.

В заключение особо отметим, что хотя определение областей для стандартизации и документирование корпоративных стандартов уже сами по себе могут выглядеть пугающе, львиная доля усилий уходит не на это, а на мониторинг и контроль соблюдения стандартов. Мощная смесь организационной энтропии и вполне естественного нежелания конфликтовать с коллегами с самого начала работают против стандартов. Борьба распадается на бессчетное количество крошечных и порой незаметных сражений: здесь отсутствует требуемая метка, а это имя хоть и не полностью, но все же в достаточной мере отвечает стандарту. Стандарты обычно умирают смертью от тысячи порезов, и об этом в организации мало кто знает, если знает вообще. В каком-то смысле стандарты это как физические упражнения: никто не хочет потеть и напрягаться, но все знают, что без них невозможна долгая и здоровая жизнь.

Однако, надежда есть, и она заключается в автоматизации. Любой из перечисленных выше стандартов можно внедрить с помощью автоматизации. Процесс GitOps может проверять, что во всех соответствующих yaml-файлах присутствуют все требуемые метки и аннотации. Процесс CI/CD может контролировать соблюдение стандартов на корпоративные образы. Все может быть кодифицировано, проверено и приведено в соответствие. Кроме того, автоматизацию можно доработать, когда вы вводите новые стандарты или меняете существующие. Безусловное преимущество стандартизации через автоматизацию заключается в том, что компьютер не избегает конфликтов, а просто констатирует факты. Следовательно, при достаточной проработанности и инвестициях в автоматизацию, платформа, в которую вы вкладываете столько средств сегодня, может принести гораздо больший возврат инвестиций в будущем в виде повышения производительности и стабильности.
Подробнее..

Изучаем Bash путем написания интерактивой игры, создаем культуру DevOps, а также шпаргалка по MariaDB и MySQL

14.01.2021 16:09:15 | Автор: admin

Начинаем 2021 год с нового дайджеста полезных материалов. Собрали много инсайтов, записей важных вебинаров, книжек и шпаргалок. Оставайтесь с нами станьте частью DevNation!

Начни новое:

  • 5 тенденций гибридного облака, на которые стоит обратить внимание в 2021 году

    Гибридное облако становится главной моделью построения корпоративных ИТ-систем. Наши эксперты рассказывают, как изменятся сами облачные платформы, а также обсуждают дифференцированный выбор облачных сред для рабочих нагрузок, вопросы безопасности и другие темы.

    Вкратце: главный архитектор Red Hat Эмили Бренд (Emily Brand) и другие эксперты делятся советами с ИТ-руководителям.

  • Удаленная работа: 3 способа взбодрить свою команду в 2021 году

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

    Вкратце: главный технический специалист Red Hat по работе с публичным сектором Дэвил Эгтс (David Egts) рассказывает о виртуальных комнатах отдыха и других подобных вещах.

Почитать на досуге:

Скачать:

  • Шпаргалка по MariaDB и MySQL

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

Еще полезное:

  • Запускаем Kubernetes на Raspberry Pi

    Каждую главу этой электронной книги можно читать как самостоятельную единицу или как часть общего руководства по запуску Kubernetes на Raspberry Pi.

  • Шпаргалка по Kubectl

    9 критически важных команд kubectl для устранения неполадок и управления при администрировании кластера Kubernetes.

  • Шпаргалка по Emacs

    В Emacs огромное множество клавиатурных сокращений для быстрого вызова команд, эта шпаргалка познакомит с основными из них.

Подробнее..

Изучаем Bash путем написания интерактивной игры, создаем культуру DevOps, а также шпаргалка по MariaDB и MySQL

14.01.2021 18:11:53 | Автор: admin

Начинаем 2021 год с нового дайджеста полезных материалов. Собрали много инсайтов, записей важных вебинаров, книжек и шпаргалок. Оставайтесь с нами станьте частью DevNation!

Начни новое:

  • 5 тенденций гибридного облака, на которые стоит обратить внимание в 2021 году

    Гибридное облако становится главной моделью построения корпоративных ИТ-систем. Наши эксперты рассказывают, как изменятся сами облачные платформы, а также обсуждают дифференцированный выбор облачных сред для рабочих нагрузок, вопросы безопасности и другие темы.

    Вкратце: главный архитектор Red Hat Эмили Бренд (Emily Brand) и другие эксперты делятся советами с ИТ-руководителям.

  • Удаленная работа: 3 способа взбодрить свою команду в 2021 году

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

    Вкратце: главный технический специалист Red Hat по работе с публичным сектором Дэвил Эгтс (David Egts) рассказывает о виртуальных комнатах отдыха и других подобных вещах.

Почитать на досуге:

Скачать:

  • Шпаргалка по MariaDB и MySQL

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

Еще полезное:

  • Запускаем Kubernetes на Raspberry Pi

    Каждую главу этой электронной книги можно читать как самостоятельную единицу или как часть общего руководства по запуску Kubernetes на Raspberry Pi.

  • Шпаргалка по Kubectl

    9 критически важных команд kubectl для устранения неполадок и управления при администрировании кластера Kubernetes.

  • Шпаргалка по Emacs

    В Emacs огромное множество клавиатурных сокращений для быстрого вызова команд, эта шпаргалка познакомит с основными из них.

Подробнее..

Представляем Quarkus на Red Hat OpenShift

21.01.2021 14:15:10 | Автор: admin

Red Hat очень серьезно относится к будущему Java, остающейся самым популярным языком разработки корпоративных приложений. Почти две трети всех программистов мира относят себя к умеренным или заядлым пользователям Java, которая вот уже 18 лет подряд входит в тройку лучших языков программирования в рейтинге TIOBE. Можно смело сказать, что несмотря на небывалый выбор и доступность новых языков программирования, Java остается де-факто стандартом разработки критически важных бизнес-приложений. Мы в Red Hat считаем своим долгом поддерживать Java-разработчиков и прокладывать для них новые пути для продолжения инноваций.

Среди множества технологий, призванных сохранить роль и место Java в облачных реалиях будущего, одной из наиболее перспективных является Quarkus, фреймворк для разработки Kubernetes-нативных Java-приложений. Quarkus изначально создавался как способ оптимизировать Java для контейнерных сред, и, как результат, способен значительно повысить продуктивность разработчиков и снизить эксплуатационные расходы, превращаясь в ключевой компонент контейнерных рабочих нагрузок. Несмотря на свою молодость и бурный рост, Quarkus уже стал заметным игроком на рынке технологий разработки и задает новый формат работы программистов. Сегодня мы рады сообщить, что Quarkus теперь входит в состав Red Hat OpenShift, и это важный шаг для будущего Java как инструмента разработки современных облачных приложений.

Quarkus на Red Hat OpenShift

Quarkus и до этого уже полностью поддерживался и был доступен в рамках Red Hat Runtimes, но теперь он входит в состав и полностью интегрирован с Red Hat OpenShift, что еще больше упрощает разработку. Разработчики получают знакомые инструменты, возможность удаленной разработки на кластерах с помощью IDE, таких как CodeReady Workspaces, интеграцию с управляемыми конфигурациями, развертывание serverless-нагрузок и управление хранилищами приложений.

В состав Quarkus входят несколько компонентов для разработки и развертывания на OpenShift:

  • Quarkus-расширение генерация кода для новых проектов, управление зависимостями проектов, удаленная разработка и отладка, а также простое, в один шаг, развертывание в OpenShiftPlugins для CodeReady Workspaces, включая предварительно настроенные стеки рабочих пространств разработчика, подсказки по свойствам конфигураций и автозавершение кода, снипеты для стандартных типов классов Quarkus, а также создание и развертывание кода в OpenShift непосредственно из IDE.

  • Автоматическая привязка тестов исправности (health checks), подключение секретов и предоставление метрик для простой интеграции со средствами мониторинга, наподобие Prometheus

  • Автоматическое развертывание контейнеризированных приложений Quarkus в качестве serverless-нагрузок OpenShift.

  • Knative-развертывания в один шаг.

Также обеспечивается интеграция с Kubernetes API, включая generic API client и поддержку динамической конфигурации приложений с использованием Kubernetes ConfigMaps и Secrets.

Migration Toolkit for Applications

Мы также обновили Migration Toolkit for Applications, чтобы помочь с переносом приложения Spring Boot в Quarkus на OpenShift. Этот тулкит для консультантов, архитекторов и разработчиков помогает проанализировать Java-код или двоичные файлы с точки зрения различных вариантов трансформации (задаются в виде наборов правил) для эффективной модернизации и миграции приложений. Свежая версия Migration Toolkit for Applications сочетает правила Containerization, OpenJDK и Linux со специально разработанными и протестированными правилами для переноса кода Spring Boot в Quarkus на OpenShift, чтобы лучше учесть особенности гибридного облака.

Теперь Quarkus доступен еще большему число разработчиков, а чтобы узнать о нем больше и начать использовать, обратитесь к сайту: https://developers.redhat.com/products/quarkus/getting-started

Подробнее..

14 лучших практик разработки приложений на OpenShift

18.02.2021 14:23:54 | Автор: admin

Много работая с командами разработки, только что перешедшими на OpenShift, мы стремимся дать им рекомендации и лучшие практики для успешного создания и внедрения приложений на этой платформе. По итогам этой работы мы отобрали 14 ключевых, на наш взгляд, практик, которые можно разбить на две категории: надежность приложений и безопасность приложений. Эти категории пересекаются, поскольку чем выше надежность, тем лучше безопасность, и наоборот, а сам список лучших практик выглядит следующим образом.

Надежность приложений

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

1. Не храните конфигурацию приложения внутри контейнера

Если контейнерный образ содержит конфигурацию для какой-то конкретной среды (Dev, QA, Prod), его не получится без изменений переносить между средами. Это плохо с точки зрения надежности процесса выпуска версий, поскольку в продакшн пойдет уже не тот образ, который тестировался на предыдущих этапах. Поэтому не держите внутри контейнера конфигурацию приложения для конкретной среды, а храните ее отдельно, например, с помощью ConfigMaps и Secrets.

2. Задавайте ресурсные требования и лимиты в определениях podа

Без должной настройки требований к ресурсам приложения могут создавать непосильную нагрузку на память и процессор. И наоборот, имея явно прописанные требования приложения к ЦП и памяти, кластер может эффективно выполнять диспетчеризацию так, чтобы предоставлять приложению запрашиваемые ресурсы.

3. Прописывайте зонды активности (liveness) и готовности (readiness) в определениях podа

С помощью этих зондов кластер может обеспечивать базовую устойчивость: перезапускать приложение, если не проходит liveness, или больше не маршрутизировать на него трафик, когда не отвечает readiness. Подробнее см. раздел Мониторинг работоспособности приложений в документации OpenShift Platform.

4. Используйте PodDisruptionBudget для защиты приложений

Иногда podы приходится убирать с узла кластера, например, при обслуживании хоста, или когда autoscaler даунсайзит кластер, отключая лишние узлы. Чтобы приложение при этом оставалось доступным, надо настроить объекты PodDistruptionBudget.

5. Правильное завершение работы podов

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

6. Один контейнер один процесс

Старайтесь, чтобы каждый процесс работал в своем собственном контейнере. Это повышает изоляцию процессов и предотвращает проблемы с маршрутизацией сигналов и появление зомби-процессов, которые иначе придется периодически вычищать. Подробнее см. разделИзбегайте нескольких процессовв документации OpenShift Platform.

7. Используйте системы мониторинга приложений и оповещения

Мониторинг приложений средствами Prometheus и Grafana помогает поддерживать нормальную работу приложений в продакшн-режиме согласно требованиям бизнеса.

8. Пусть приложения пишут свои логи в stdout/stderr

Тогда OpenShift сможет собирать и пересылать их в централизованную систему обработки (ELK, Splunk). Логи это бесценный ресурс при анализе работы приложения в продакшн-режиме. Кроме того, оповещения, генерируемые на базе содержимого логов, помогают проконтролировать, что приложение работает как задумано.

9. Изучите целесообразность применения Circuit breakers, Timeouts, Retries, Rate Limiting

Эти механизмы повышают устойчивость приложения к отказам, защищая от перегрузок (Rate Limiting, Circuit Breakers) и помогая справляться с сетевыми проблемами (Timeouts, Retries). Рассмотрите возможность применения решения OpenShift Service Mesh, которое позволяет реализовать эти функции, не трогая код приложений.

Безопасность приложений

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

10. Используйте только доверенные контейнерные образы

Применяйте вендор-образы везде, где это возможно, поскольку они гарантировано тестируются, дорабатываются на безопасность и обеспечиваются поддержкой. Что касается community-образов, используйте наработки только тех сообществ, которым доверяете. И помните, что в публичных реестрах, вроде Docker Hub, имеются образы неизвестного происхождения не используйте их ни в коем случае!

11. Используйте последние версии базовых контейнерных образов

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

12. build-образы отдельно, runtime-образы отдельно

Build-образ содержит зависимости, которые нужны при сборке приложения, но не нужны при запуске. Поэтому создавайте отдельные runtime-образы с минимумом зависимостей, чтобы уменьшить поверхность атак, а заодно и размер образа.

13. Restricted security context constraint (SCC) везде, где только возможно

Модифицируйте образы, чтобы они могли работать в рамках restricted SCC (подробнее см. раздел Поддержка произвольных идентификаторов пользователей в документации). Риски взлома приложений включают в себя и ситуации, когда злоумышленник получает контроль над самим приложением, и restricted SCC позволяет обезопасить узел кластера на этот случай.

14. TLS для защиты коммуникаций между компонентами приложения

Компоненты приложения могут пересылать друг другу конфиденциальные данные. Если сеть, в которой работает OpenShift, не может считаться безопасной, то трафик между компонентами приложения можно защитить с помощью TLS-шифрования, а уже упомянутый OpenShift Service Mesh позволяет сделать это, не трогая код приложений.

Заключение

Итак, теперь у вас есть список из 14 лучших практик для построения более надежных и безопасных приложений OpenShift. Это хорошее начало для выработки собственного кодекса разработки для членов вашей команды. Дополнительные сведения и рекомендации можно найти в разделе Создание образов документации OpenShift.

Подробнее..

Рекомендации по запуску приложений в OpenShift Service Mesh

15.04.2021 12:10:33 | Автор: admin

В этом посте мы собрали советы и рекомендации, которые стоит изучить, прежде чем переносить свои приложения в сервисную сетку OpenShift Service Mesh (OSSM). Если вы никогда не сталкивались с сервисными сетками Service Mesh, то для начала можно глянуть страницу OSSM на сайте Red Hat и почитать о том, как система Istio реализована на платформе OpenShift.

Начав изучать Istio, вы скорее всего столкнетесь с приложением bookinfo, которое почти повсеместно используется в качеств наглядного пособия, или же с более продвинутым вариантом в виде приложения Travel Agency. Разбирая эти и другие примеры, вы сможете лучшее понять, как устроена mesh-сетка, и затем уже переносить в нее свои приложения

Сначала о главном

Начать стоит с официальная документация OpenShift Service Mesh 2.0 (OSSM), в ней можно найти массу полезных материалов, в том числе:

Когда дойдет до интеграции вашего приложения в mesh-сетку, надо будет копнуть поглубже и заглянуть в документацию по Istio. Также стоит ознакомиться с release notes соответствующих версий компонентов, входящих Red Hat OSSM.

Если еще не сделали это, то протестируйте свою mesh-сетку с помощью приложения-примера Bookinfo. Если все пройдет нормально, то в нее уже можно будет добавлять ваше приложение.

Первое, что надо сделать при добавлении в mesh-сетку своего приложения убедиться, что sidecarы проксей Envoy правильно внедрены в podы вашего приложения. В OSSM такое внедрение делается довольно просто и хорошо описывается в документации.

Потом воспользуйтесь примером, где описывается, как настраивать ingress-шлюз для приложения Bookinfo, и примените эту конфигурацию к своему приложению, чтобы к нему можно было получать доступ не только изнутри кластера OpenShift, но и извне.

Выбор протоколов

Важно четко понимать, как Istio определяет, какие протоколы использует ваше приложение. Для этого изучите все, что связано с Protocol Selection и app and version labelsв разделе документации Pods and Services.

В противном случае скорее всего произойдет следующий казус. Допустим, вы внедряете в свое приложение sidecarы проксей Istio, загружаете его тестовым трафиком и идёте смотреть граф Kiali. И видите там совсем не то, что ожидали (рис. ниже). Почему? Потому что Kiali и Istio не смогли правильно определить, какие протоколы используют наши сервисы, и отобразили соединения между ними как TCP, а не HTTP.

На графе Kiali есть только TCP-соединенияНа графе Kiali есть только TCP-соединения

Istio должен точно знать, какой протокол используется. Если Istio не может определить протокол автоматически, то трактует трафик как обычный (plain) TCP. Если у вас какие-то другие протоколы, их надо вручную прописать в определениях служб Kubernetes Service вашего приложения. Подробнее об этом написано в документации, раздел Protocol Selection.

Чтобы вручную задать, какой протокол использует ваш сервис, надо соответствующим образом настроить объекты Kubernetes Service. В нашем случае в них по умолчанию отсутствовало значение параметра spec -> ports -> name. Если прописать "name: http" для сервисов A, B и C, то граф отобразит эти соединения как HTTP.

Kiali

Kiali это отличный инструмент для того, чтобы начать работать с OpenShift Service Mesh. Можно даже сказать, что именно на нем и надо сосредоточиться, когда вы начинаете работать с mesh-сеткой.

Kiali визуализирует метрики, генерируемые Istio, и помогает понять, что происходит в mesh-сетке. В качестве одной из первоочередных задач мы настоятельно рекомендуем изучить документацию Kiali.

Kiali не только пригодится для визуализации вашего приложения, но и поможет с созданием, проверкой и управлением конфигурациями mesh-сетки. Поначалу изучение конфигураций Istio может быть делом сложным, и Kiali тут сильно поможет.

В Kiali есть много полезных вещей, поэтому мы очень советуем изучить список ее возможностей и FAQ. Например, там есть следующие интересные вещи:

Другая важная вещь умение маркировать сервисы приложения с помощью меток (label). Istio, а следовательно и Kiali, требует, чтобы маркировка велась строго определенным образом, который поначалу отнюдь не кажется очевидным, особенно когда весь ваш опыт исчерпывается работой с приложением-примером Bookinfo, где все метки уже есть и всё прекрасно работает из коробки.

Развертывания с использованием меток app и version это важно, поскольку они добавляет контекстную информацию к метрикам и телеметрии, которые собираются Istio и затем используются в Kiali и Jaeger.

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

Еще одна полезная вещь в Kiali это то, что она может провести проверку вашей mesh-сетки, что особенно полезно, когда вы сами создаете конфигурации.

Поначалу графы Kiali могут несколько обескураживать. Поэтому стоит изучить различные типы графов, начав с того, как генерировать графа сервиса и какие бывают функций наблюдения.

Jaeger-выборки

При первоначальном тестировании своего приложения в mesh-сетке вам, скорее всего, захочется, чтобы частота трассировки была больше 50%, желательно, 100%, чтобы отслеживать все тестовые запросы, проходящие через приложение. В этом случае Jaeger и Kiali быстрее наберут необходимые данные, а вам не придется долго ждать обновления информации.

Иначе говоря, нам надо, чтобы sample rate был равен 100% (тут есть соответствие: 10000 = 100%).

Для этого надо подредактировать объект ServiceMeshControlPlane (обычно называется basic-install) в вашем проекте Control Plane (обычно istio-system) и добавить или изменить там следующее значение:

spec: tracing:  sampling: 10000 # 100%

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

Распространение заголовков контекста трассировки

Jaeger помогает убрать одну из проблем, которая возникает при переходе на микросервисную архитектуру, но для этого все сервисы вашего приложения должны правильно распространять заголовки трассировки (trace headers).

Очень полезно отслеживать, как запросы ходят через сервисы (или даже множество сервисов) в вашей mesh-сетке. OSSM может здесь помочь за счет сбора данных в форме spanов и трасс (trace). Просмотр трасс очень помогает понять сериализацию, параллелизм и источники задержек в вашем приложении. Вкратце, span это интервал от начала выполнения единицы работы до ее завершения (например, полная отработка запроса клиент-сервер). Трасса это путь, по которому запрос проходит, двигаясь по mesh-сети, или, другими словами, по мере того, как он передается от одного сервиса вашего приложения к другому. Подробнее об этом можно и нужно почитать в документации OSSM.

Обратите внимание, что в OSSM spanы (единицы работы) автоматически генерируются средствами Istio, а вот трассы нет. Поэтому чтобы распределенные трассы (distributed traces) были полностью просматриваемыми, разработчик должен изменить код так, чтобы любые существующие trace-заголовки правильно копировались при передаче запроса между сервисами. К счастью, вы не обязаны сами генерировать эти заголовки. Если изначально их нет, то они будут автоматически сгенерированы и добавлены первым Envoy-прокси, который встретится на пути запроса (обычно это прокси на ingress-шлюзе).

Вот список заголовков для распространения:

  • x-request-id

  • x-b3-traceid

  • x-b3-spanid

  • x-b3-parentspanid

  • x-b3-sampled

  • x-b3-flags

  • x-ot-span-context

Распространение заголовков может выполняться вручную или с использованием клиентских библиотек Jaeger, реализующих OpenTracing API.

Вот как делается ручное распространение trace-контекста на Java:

HttpHeaders upstreamHttpHeaders = new HttpHeaders();if (downstreamHttpHeaders.getHeader(headerName: "x-request-id") != null)   upstreamHttpHeaders.set("x-request-id", downstreamHttpHeaders.getHeader( headerName: "x-request-id"));

Примечание: это надо повторить для всех заголовков из списка выше.

Мастера Kiali и редактор YAML

Проверки

Ручная настройка yaml-манифестов дело утомительное, особенно если значения в одном yaml должны совпадать со значениями в другом, а еще ведь есть жесткие правила отступов. К счастью, в Kiali есть отличная функция, которая поможет при создании и проверке конфигураций.

Создание Istio-ресурсов с помощью Kiali-мастеров

Большую часть конфигураций, которые понадобятся вам в первое время, можно создать с помощью соответствующих мастеров Kiali, которые вызываются через меню Services.

YAML-редактор

Kiali имеет собственный редактор YAML для просмотра и редактирования конфигурационных ресурсов Istio напрямую, который также выявляет некорректные конфигурации.

Часто бывает так, что граф Kiali вдруг выявляет в вашем приложении неизвестные ранее (в том числе и разработчикам) коммуникационные пути. Другими словами, Kiali помогает найти и выявить все существующие пути во время тестирования вашего приложения. Это, конечно, полезно, но иногда может и раздражать. В этом случае их можно просто не отображать на графе, введя "node=unknown" в поле ввода над графом Kiali.

Уберите из кода шифрование коммуникаций

Если вы уже защитили соединения между своими сервисами и/или (скорее всего) используете TLS для внешних соединений, то при переводе приложения в mesh-сетку их надо будет в обязательном порядке выключить и переключиться на чистый HTTP без шифрования. А всем шифрованием теперь займутся Envoy-прокси.

Если ваши сервисы будут связываться с внешними сервисами по TLS, то Istio не сможет инспектировать трафик и Kiali будет отображать эти соединения только как TCP.

В общем, используйте для взаимодействия сервисов только HTTP, но не HTTPS.

Также про внешние сервисы надо поставить в известность и вашу mesh-сетку (см. ниже Настройка внешних сервисов).

Упростите код

Самое время пересмотреть код вашего приложения и убрать из него лишнее.

Одно из преимуществ Service Mesh состоит в том, что реализацию многих вещей по сервисам можно убрать из приложения и отдать на откуп платформе, что помогает разработчикам сосредоточиться на бизнес-логике и упростить код. Например, можно рассмотреть следующие доработки:

  • Как сказано выше, убрать HTTPS-шифрование.

  • Убрать всю логику обработки таймаутов и повторных попыток.

  • Убрать все ставшие ненужными библиотеки.

  • Помните, что mesh-сетка увеличивает количество пулов подключений. Если раньше два сервиса связывались напрямую, то теперь у каждого из них есть свой прокси-посредник. То есть фактически вместо одного пула подключений появляются три:

    1. От вашего первого сервиса к локальному для него sidecarу Envoy (расположены в одном и том же podе).

    2. От этого sidecarа к другому sidecarу Envoy, который обслуживает второй сервис и расположен в одном podе с этим сервисом.

    3. И наконец, от того другого sidecarа, собственно, ко второму сервису. Поэтому, возможно, стоит упростить конфигурацию, чтобы не раздувать пулы подключений. Подробнее об этом хорошо написано здесь.

Еще один плюс оптимизации кода это возможность уменьшить размер сервисов и (возможно) поднять их производительность, убрав из них те вещи, которые теперь реализуются на уровне mesh-сетки.

Объекты Service

Убедитесь, что все сервисы вашего приложения взаимодействуют друг с другом через имена объектов Kubernetes Service, а не через OpenShift Routes.

Просто проверьте, вдруг ваши разработчики используют OpenShift Routes (конечные точки ingress на кластере) для организации коммуникаций между сервисами в пределах одного кластера. Если эти сервисы должны входить в одну и ту же mesh-сетку, то разработчиков надо заставить поменять конфигурации/манифесты своих приложений, чтобы вместо конечных точек OpenShift Route использовались имена объектов Kubernetes Service.

Функции аварийного переключения (fallback)

В коде вашего приложения, возможно, потребуется поменять еще кое-что. Envoy-прокси конечно заботятся о таймаутах и повторах, чтобы межсервисные коммуникации были более надежными, но иногда сервисы падают полностью, и такие отказы можно отработать только на уровне приложения. Для этого в коде приложения надо реализовать функции аварийного переключения (fallback), чтобы оно уже само решало, как быть дальше, когда Envoy-прокси уже ничем не может помочь.

Настройка внешних сервисов

Envoy-прокси могут работать не только внутри кластера, но и отправлять трафик за его пределы, если зарегистрировать внешние сервисы в mesh-сетке.

Скорее всего, ваше приложение общается с сервисами за пределами mesh-сетки. Поскольку это внешние по отношению mesh-сетке сервисы, то толку от нее здесь не будет, да? А вот и нет. Эти внешние сервисы можно прописать в Service Mesh и использовать часть её функций и для них.

Подробнее и с примерами можно почитать об этом в документации OSSM. Есть и подробный разбор, как визуализировать внешний трафик Istio в Kiali, и как использовать TLS originationдля зашифрованного egress-трафика.

Вот некоторые из функций Istio, которые можно использовать при работе с внешними сервисами:

  1. Шифрование (и простое, и Mutual TLS).

  2. Таймауты и повторы.

  3. Circuit breakerы.

  4. Маршрутизация трафика.

Заключение

С OpenShift Service Mesh вы можете лучше понять, как устроена ваша mesh-сетка, сделать ее более просматриваемой, что, в свою очередь, помогает поднять общий уровень сложности микросервисной архитектуры. Бонусом идет возможность реализовать больше функций и возможностей на уровне самой платформе OpenShift, а не кодировать их на уровне отдельных приложений, что облегчает жизнь разработчикам. Еще один плюс реализация вещей, которые раньше казались неподъемными, например, канареечное развертывание, A/B-тестирование и т.п. Кроме того, вы получаете целостный подход к управлению микросервисными приложениями на всех своих кластерах OpenShift, что хорошо с точки зрения преемственности людей и непрерывности процессов. В конечном итоге, это поможет перейти от монолитных приложений к распределенной микросервисной архитектуре и работать в большей степени на уровне конфигураций, чем кода.

Подробнее..

Перевод CICD-конвейеры с охватом нескольких кластеров OpenShift

29.04.2021 16:13:12 | Автор: admin

Традиционно конвейеры CI/CD строились поверх физических серверов и виртуальных машин. Контейнерные платформы, вроде Kubernetes и OpenShift, появились на этой сцене гораздо позже. Однако по мере того, как все больше и больше рабочих нагрузок переводится на платформу OpenShift, туда же движутся и конвейеры CI/CD, а конвейерные задания все чаще выполняются внутри контейнеров, работающих на кластере.

Этот пост представляет собой перевод блога нашего друга Алеса Носика, автора блога имени себя ("Helping you navigate the world of Kubernetes"). Девиз Алеса: "Software developer and architect passionate about new technologies, open-source and the DevOps culture. Making the world a better place with software".

Вы можете задать любой вопрос после прочтения Алесу в комментариях. Ну и куда без этого Алес хочет подарить за самые каверзные вопросы набор пешего туриста с картой маршрутов от Red Hat. И шляпу.

В реальном мире компании не ограничиваются одним-единственным кластером OpenShift, а имеют их сразу несколько. Почему? Чтобы запускать рабочие нагрузки как в различных публичных облаках, так и на своих собственных ИТ-мощностях. Либо если организация хранит верность какому-то одному поставщику платформ для того, чтобы эффективно работать в различных регионах мира. А иногда необходимо иметь несколько кластеров и в одном регионе, например, при наличии нескольких зон безопасности, в каждой из которых должен быть свой кластер.

Как видим, у организаций есть масса причин иметь нескольких кластеров OpenShift. Соответственно, конвейеры CI/CD должны уметь работать в таких мультикластерных системах, и ниже мы расскажем, как проектировать такие конвейеры.

CI/CD-конвейер Jenkins

Jenkins это настоящая легенда в мире CI/CD. А ведь когда-то давно он назывался Hudson, впрочем, это совсем уже древняя история. Вернемся к нашей теме и зададимся вопросом, как построить конвейер Jenkins, охватывающий сразу несколько кластеров OpenShift? При проектировании такого конвейера очень важно предусмотреть единую информационную панель, где отображались бы результаты выполнения всех заданий, задействованных в этом конвейере. Если немного подумать, то для этого надо иметь некий главный Jenkins (назовем его мастер-Jenkins), который будет связан с каждым кластером OpenShift. При выполнении конвейера мастер-Jenkins сможет запускать отдельные задания на любом из подключенных кластеров, а журналы вывода заданий будут собираться отправляться на этот мастер-Jenkins, как обычно. Если у нас есть три кластера OpenShift (Dev, Test и Prod), то схема будет выглядеть следующим образом:

Для подключения Jenkins к OpenShift есть замечательный Kubernetes-plugin, с помощью которого мастер-Jenkins сможет создавать эфемерные worker-ы на кластере. Каждому кластеру можно присвоить свою метку узла, чтобы иметь возможность запускать каждый этап конвейера на разных кластерах, просто задавая соответствующую метку. Вот как выглядит простое определение такого конвейера:

stage ('Build') {  node ("dev") {    // running on dev cluster  }}stage ('Test') {  node ("test") {    // running on test cluster  }}stage ('Prod') {  node ("prod") {    // running on prod cluster  }}

В OpenShift есть специальный шаблон для Jenkins, который можно найти в проекте openshift. Этот шаблон позволяет создать мастер-Jenkins, который преднастроен для запуска worker-podов на одном кластере. А дальше придется приложить определенные усилия, чтобы подключить этот мастер-Jenkins к другим кластерам OpenShift, и вся хитрость здесь заключается в настройке сети. Jenkins-овский worker-pod после запуска подключается к мастер-Jenkins. Поэтому нам надо, чтобы мастер-Jenkins был доступен для worker-ов, работающих на любом из наших кластеров OpenShift.

Кроме того, стоит обсудить безопасность. Если мастер-Jenkins может запускать worker-овские pod-ы на OpenShift, то значит он может запускать на этих worker-ах произвольный код. Кластер OpenShift не имеет возможности контролировать, какой код запустит Jenkins-овский worker. Определения заданий управляется Jenkins, поэтому только Jenkins-овские средства контроля доступа решают, можно ли выполнять то или иное задание на том или ином кластере.

Kubernetes-нативный конвейер Tekton

Теперь посмотрим, как организовать мультикластерный конвейер CI/CDВ с помощью Tekton. В отличие от Jenkins, Tekton это Kubernetes-нативное решение: он реализован на основе строительных блоков Kubernetes и тесно интегрирован с Kubernetes. Естественная граница Tekton это кластер. И как тут построить конвейер, который будет охватывать сразу несколько кластеров OpenShift?

Для этого можно скомпоновать схему из несколько конвейеров Tekton. Чтобы объединить несколько конвейеров в один, мы создадим задачу execute-remote-pipeline, которая будет запускать Tekton-конвейер, расположенный на удаленном кластере OpenShift. При выполнении удаленного конвейера эта задача будет подхватывать его вывод. Теперь с помощью этой задачи мы можем объединять несколько конвейеров Tekton на разных кластерах OpenShift и запускать их как один конвейер. Например, на диаграмме ниже показана композиция из трех конвейеров, где каждый из них расположен на своем кластере OpenShift (Dev, Test и Prod):

Выполнение этого конвейера начинается на кластере Dev. Конвейер Dev запустит конвейер Test, который, в свою очередь, запустит конвейер Prod. Объединенные логи можно отследить к окне терминала:

$ tkn pipeline start dev --showlogPipelinerun started: dev-run-bd5fsWaiting for logs to be available...[execute-remote-pipeline : execute-remote-pipeline-step] Logged into "https://api.cluster-affc.sandbox1480.opentlc.com:6443" as "system:serviceaccount:test-pipeline:pipeline-starter" using the token provided.[execute-remote-pipeline : execute-remote-pipeline-step][execute-remote-pipeline : execute-remote-pipeline-step] You have one project on this server: "test-pipeline"[execute-remote-pipeline : execute-remote-pipeline-step][execute-remote-pipeline : execute-remote-pipeline-step] Using project "test-pipeline".[execute-remote-pipeline : execute-remote-pipeline-step] Welcome! See 'oc help' to get started.[execute-remote-pipeline : execute-remote-pipeline-step] [execute-remote-pipeline : execute-remote-pipeline-step] Logged into "https://api.cluster-affc.sandbox1480.opentlc.com:6443" as "system:serviceaccount:prod-pipeline:pipeline-starter" using the token provided.[execute-remote-pipeline : execute-remote-pipeline-step] [execute-remote-pipeline : execute-remote-pipeline-step][execute-remote-pipeline : execute-remote-pipeline-step] [execute-remote-pipeline : execute-remote-pipeline-step] You have one project on this server: "prod-pipeline"[execute-remote-pipeline : execute-remote-pipeline-step] [execute-remote-pipeline : execute-remote-pipeline-step][execute-remote-pipeline : execute-remote-pipeline-step] [execute-remote-pipeline : execute-remote-pipeline-step] Using project "prod-pipeline".[execute-remote-pipeline : execute-remote-pipeline-step] [execute-remote-pipeline : execute-remote-pipeline-step] Welcome! See 'oc help' to get started.[execute-remote-pipeline : execute-remote-pipeline-step] [execute-remote-pipeline : execute-remote-pipeline-step] [prod : prod-step] Running on prod cluster[execute-remote-pipeline : execute-remote-pipeline-step] [execute-remote-pipeline : execute-remote-pipeline-step][execute-remote-pipeline : execute-remote-pipeline-step]

Обратите внимание, что в этом примере показано каскадное выполнение конвейеров Tekton. Есть и способ компоновки последовательное выполнение нескольких удаленных конвейеров.

Прежде чем переходить к заключению, кратко обсудим компоновку конвейеров с точки зрения безопасности. Kubernetes-нативность Tekton означает, что все управление доступом в нем осуществляется через RBAC. Поэтому, чтобы задача, запущенная на локальном кластере (допустим, на кластере Test на нашей схеме), могла запустить конвейер на удаленном кластере (Prod), у нее должны быть соответствующие разрешения, которые задаются на удаленном кластере (Prod). Таким образом, удаленный кластер, работающий в среде более высоко уровня (Prod), может ограничивать доступ для задач, работающие в среде более низкого уровня (Test). Например, Prod может разрешать Test-у запускать только штатные продакшн-конвейеры, поэтому Test не сможет создавать новые конвейеры в кластере Prod.

Заключение

Итак, мы показали, как в Jenkins и Tekton создавать конвейеры CI/CD, охватывающие сразу несколько кластеров OpenShift, обсудив некоторые аспекты их проектирования, безопасности и реализации.

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

Автор: Ales Nosek

13 мая Алес расскажет про Apache Airflow на OpenShift, и там тоже можно будет задавать вопросы, получать подарки и все такое.

Подробнее..

Представляем OpenShift Pipelines

27.05.2021 16:21:56 | Автор: admin

3 мая 2021 года Red Hat выпустила первую общедоступную версию OpenShift Pipelines, облачно-ориентированной системы непрерывной интеграции на базе СПО-проекта Tekton. Решение реализует Kubernetes фреймворк CI/CD для разработки и выполнения конвейеров, в которых каждый шаг запускается в своем собственном контейнере, что позволяет масштабировать шаги независимо друг от друга. Сегодня мы вкратце рассмотрим ключевые особенности и преимущества этого решения, а также приведем список дополнительных ресурсов для дальнейшего знакомства с ней и освоения.

Но, прежде чем переходить к OpenShift Pipelines, освежим в памяти основные концепты Tekton.

Основные концепты Kubernetes-нативной CI/CD

OpenShift Pipelines дополняет Kubernetes/OpenShift соответствующими CRD (ресурсами, определяемыми пользователем) для концептов CI/CD, таких как конвейер (pipeline), задача (task), шаг (step). В результате, эти концепты становятся своими (native) инстанцируемыми их можно создавать в виде отдельных экземпляров и, как следствие, полноценно масштабировать и развертывать, а также обеспечивать их безопасность средствами Kubernetes.

Поэтому для начала вспомним, что такое концепты Tekton:

Рис. 1. КонцептыTektonРис. 1. КонцептыTekton

По сути, основные концепты Tekton делятся на два вида: те, что задают конвейер, и те, что запускают конвейер.

Концепты, задающие конвейер (define pipeline)

  • Task повторно используемые и слабо связанные серии шагов (step), которые выполняют определенную задачу, например, сборку контейнерного образа.

  • Pipeline описание конвейера и задач (Task), которые он должен выполнять.

Концепты, запускающие конвейер (run pipelines)

  • TaskRun запуск и результаты выполнения экземпляра Task.

  • PipelineRun запуск и результаты выполнения экземпляра конвейера, который включает в себя ряд концептов TaskRun.

Подробнее об этих концептах можно почитать в официальной документации.

Теперь разберемся, что такое OpenShift Pipelines и для чего он нужен

Что такого особенного в OpenShift Pipelines?

OpenShift Container Platform это ведущая отраслевая Kubernetes-платформа корпоративного класса, которая предоставляет разработчикам множество функций, среди которых есть и CI/CD.

OpenShift Pipelines базируется на СПО-проекте Tekton и расширяет функционал платформы OpenShift стандратными методами, что сильно облегчает жизнь разработчикам.

Установка OpenShift Pipelines через механизм Operator

OpenShift Pipelines поддерживается на уровне механизма операторов, поэтому он легко устанавливается и обновляется, и, соответственно, легко администрируется.

OpenShift Pipelines доступен на сайте OperatorHub, где представлены более 450 различных операторов для OpenShift Container Platform:

Установка OpenShift Pipelines предельно проста, и он сразу устанавливается как оператор уровня кластера, автоматически становясь доступным для всех проектов:

OpenShift Pipelines также дополняет OpenShift соответствующими CR, которые позволят добиться еще большей универсальности в плане конфигурации и интеграции с консолью OpenShift и т.д.

При появлении в OperatorHub новой версии OpenShift Pipelines, вы как администратор можете выбрать обновление до следующей версии, задав нужный канал обновления.

Развитый UI в рамках консоли OpenShift

Tekton тоже дополняет стандартную поставку OpenShift концептами CI/CD, но в нем при создании и запуске конвейеров сложно обойтись без создания YAML-кода, и этого кода требуется писать очень много, тысячи строк. Поэтому Red Hat реализовала в консоли OpenShift полноценный UI для запуска и визуализации конвейеров (как тех, что работают сейчас, так и тех, что уже отработали), а также для графического создания конвейеров. При этом все необходимые YAML-файлы создаются автоматически, без написания какого-либо кода.

Ниже показано графическое представление конвейера, который уже был выполнен на платформе OpenShift, причем прямо из него можно получить доступ к журналам и событиям всех задач этого конвейера:

Рис. 2. Конвейеры в консоли OpenShiftРис. 2. Конвейеры в консоли OpenShift

При желании можно легко просмотреть полный лог выбранной задачи:

Чтобы еще больше облегчить жизнь разработчикам, OpenShift Pipelines позволяет рисовать конвейеры прямо в консоли OpenShift, поэтому вам больше не нужен черный пояс по YAML, чтобы создать свой первый конвейер Tekton:

Рис. 3. Графическое проектирование конвейера в консоли OpenShiftРис. 3. Графическое проектирование конвейера в консоли OpenShift

Но если вы, как обладатель черного пояса по YAML, захотите что-то подправить, это всегда можно сделать прямо из консоли OpenShift:

Рис. 4. YAML примеры и снипеты в консоли OpenShiftРис. 4. YAML примеры и снипеты в консоли OpenShift

Более того, OpenShift Pipelines пригодится, даже если вы решите пойти по пути чистого YAML, и предложит вам готовые примеры и снипеты кода для более быстрой разработки конвейеров YAML. Кроме того, в систему можно интегрировать ваши корпоративные снипеты, сделав их доступными всем разработчикам. Именно для этого мы и добавили специальный CRD под названием ConsoleYAMLSamples.

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

Хотите увязать запуск конвейеров с некими внешними событиями (в терминах Tekton это называется Trigger), например, push- или pull-запросами Github или Gitlab? Вообще не проблема, в OpenShift Pipelines это есть из коробки, причем поддерживаются различные вендоры, включая Github, Gitlab, BitBucket и т.д.

Рис. 5. Добавление триггера в консоли OpenShiftРис. 5. Добавление триггера в консоли OpenShift

Вы просто создаете нужный триггер в UI, а OpenShift сам формирует все необходимые концепты, такие как EventListeners, TriggerTemplates (подробнее о них можно почитать в официальной документации).

Готовые повторно используемые задачи и кастомизация

OpenShift Pipelines из коробки содержит десятки готовых задач, которые можно использовать в составе конвейеров, включая задачи по клонированию кода из репозитория, сборки приложений на различных языках программирования, таких как java, dotnet core, python go, nodejs или использования инструментов сборки вроде maven, развертывания приложений и т.д. Список доступных задач можно увидеть в консоли OpenShift, раздел ClusterTasks, меню Pipelines -> Tasks:

Рис. 6. OpenShift Pipelines из коробки предлагает десятки готовых задачРис. 6. OpenShift Pipelines из коробки предлагает десятки готовых задач

Кроме того, этот список можно легко расширить. Для этого достаточно добавить ClusterTasks в кластер, после чего вам станут доступны сотни дополнительных задач на сайте TektonHub, который представляет собой публичный репозиторий для обмена задачами Tekton:

Рис. 7.TektonHub публичный репозиторий повторно используемых задач и конвейеров TektonРис. 7.TektonHub публичный репозиторий повторно используемых задач и конвейеров Tekton

Интеграция с IDE

Разработчики, использующие командную строку и IDE, могут воспользоваться преимуществами Tekton CLI, расширения Tekton для Visual Studio Code и плагина Tekton для IntelliJ, чтобы взаимодействовать с конвейерами прямо из своей обычной среды разработки и создавать, запускать, просматривать и выполнять действия на кластере непосредственно из командной строки.

Рис. 8. Расширение VSCode для OpenShift PipelinesРис. 8. Расширение VSCode для OpenShift Pipelines

Полезные ресурсы

В заключение советуем посмотреть видеоверсию этой статьи на английском:

А также рекомендуем следующие ресурсы (EN):

Видеоролики на русском:

Вебинары:

Подробнее..

Шпаргалка по Linux grep, домашний термостат на Raspberry Pi, эл. книга Ansible for DevOps и PostgreSQL на Linux

25.03.2021 12:22:32 | Автор: admin

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

Узнать новое:

  • 4 инструмента для Linux
    С Linux практически любая железка превращается в универсальный сервер общего доступа для файлов, аудио-, видео- и прочих ресурсов, с которыми легко и удобно работать с других платформ и устройств.

Скачать:

  • Шпаргалка по Raspberry Pi
    Как загрузить, как поставить ОС, как включить SSH и подключиться по WiFi, как установить ПО и обновить систему, а также где найти дополнительную справку и ответы на вопросы.

  • Шпаргалка по Linux grep
    Постигаем секреты поиска строк в файлах с помощью регулярных выражений.

Почитать на досуге:

Мероприятия:

  • Виртуальный Red Hat Summit 2021, 27-28 апреля
    Бесплатная онлайн-конференция Red Hat Summit это отличный способ узнать последние новости ИТ-индустрии, задать свои вопросы техническим экспертам, услышать истории успеха непосредственно от заказчиков Red Hat и увидеть, как открытый код генерирует инновации в корпоративном секторе

  • BCC и Red Hat: Освобождение от рутины. Как Ansible automation platform помогает решить задачи IT инфраструктуры любого уровня, 30 марта
    В ходе практической online-сессии проекта ВСС WEBINAR детально изучаем инструменты платформы Red Hat Ansible Automation, необходимые для реализации автоматизации предприятия. Также вас ждет 2 демо-сессии по оптимизации IT-инфраструктуры с помощью Ansible Automation Platform на примере настройки межсетевого экрана в среде Windows и в среде Linux

  • Вебинар про решения Red Hat для SAP на IBM Power Systems, 8 апреля
    Ваш бизнес зависит от среды SAP? Она поддерживает критически важные процессы и предоставляет данные? Неэффективная среда может вызвать задержки, снизить гибкость и повысить расходы в ваших ИТ-подразделениях. Более чем 20-летний опыт инноваций позволяет компаниям Red Hat и SAP разрабатывать решения, отвечающие требованиям критически важных приложений. Red Hat Enterprise Linux это не только стабильная платформа, она дает конкретные преимущества при работе с инсталляциями SAP

Смотри в записи:

  • AnsibleFest
    Два дня интереснейших докладов, демонстраций и практических занятий. Отличная возможность узнать, как разработчики, администраторы и ЛПР в сфере ИТ отвечают на вызовы перемен с помощью гибких технологий автоматизации с открытым кодом, которые позволяют перейти от того, что есть, к тому, что нужно

  • J4K Conference
    Новая виртуальная конференция по Kubernetes, Java и облаку: 17 сессий с сотрудниками Red Hat, включая доклад Марка Литтла (Mark Little), главного человека в Red Hat по связующему ПО.

Подробнее..

Пишем Hello World на WebAssembly, шпаргалка по Linux-команде sed, а также 15 самых востребованных ИТ-сертификатов года

08.04.2021 18:23:51 | Автор: admin

И вновь мы приготовили для вас много инсайтов, мероприятий, книжек и шпаргалок. Оставайтесь с нами станьте частью DevNation!

Узнать новое:

Скачать:

  • Шпаргалка по Linux-команде sed
    SED (Stream EDitor) это потоковый текстовый редактор, который построчно обрабатывает входной поток (файл).

  • Бесплатный Developer Sandbox for OpenShift
    Это ваш личный OpenShift в облаке, всего за пару минут и без какой бы то ни было инсталляции. Среда создана специально для разработчиков и включает в себя Helm-диаграммы, builder-образы Red Hat, инструменты сборки s2i, также CodeReady Workspaces, облачную IDE с веб-интерфейсом.

Почитать на досуге:

Мероприятия:

  • Виртуальный Red Hat Summit 2021, 27-28 апреля
    Бесплатная онлайн-конференция Red Hat Summit это отличный способ узнать последние новости ИТ-индустрии, задать свои вопросы техническим экспертам, услышать истории успеха непосредственно от заказчиков Red Hat и увидеть, как открытый код генерирует инновации в корпоративном секторе

Подробнее..

Миграция приложений и аварийное восстановление с помощью Red Hat Advanced Cluster Management (ACM)

10.12.2020 14:11:17 | Автор: admin
Всем привет! В предыдущем посте мы рассказали, как применять ACM для сине-зеленого развертывания, миграции приложений между кластерами и аварийного восстановления.



Сегодня покажем, как с помощью ACM провести бесшовную миграцию приложения reversewords между нашими кластерами и рассмотрим, как с помощью PlacementRules реализовать базовый сценарий аварийного восстановления.

Миграция приложений с помощью Red Hat ACM


Создаем новые PlacementRules и Subscription


Мы создадим два новых PlacementRule, одно для кластеров в регионе EU, другое для US. Кроме того, для развертывания нашего приложения в том регионе, где оно должно выполняться, задействуем новую Subscription.

1. Создаем новый Namespace для хранения необходимых манифестов.

oc --context hub create -f https://raw.githubusercontent.com/RHsyseng/acm-app-lifecycle-blog/master/acm-manifests/reversewords-region/00_namespace.yaml

2. Создаем PlacementRules, необходимые для таргетирования кластеров в регионах EU и US.

# PlacementRule targeting EU region clustersoc --context hub create -f https://raw.githubusercontent.com/RHsyseng/acm-app-lifecycle-blog/master/acm-manifests/reversewords-region/01_placement_rule_EU.yaml# PlacementRule targeting US region clustersoc --context hub create -f https://raw.githubusercontent.com/RHsyseng/acm-app-lifecycle-blog/master/acm-manifests/reversewords-region/02_placement_rule_US.yaml

3. Создаем Subscription и Application.

ПРИМЕЧАНИЕ. Здесь Subscription сконфигурирована для развертывания приложения с помощью PlacementRule, отбирающего кластеры в регионе EU.

oc --context hub create -f https://raw.githubusercontent.com/RHsyseng/acm-app-lifecycle-blog/master/acm-manifests/reversewords-region/03_subscription-region.yamloc --context hub create -f https://raw.githubusercontent.com/RHsyseng/acm-app-lifecycle-blog/master/acm-manifests/reversewords-region/04_application-region.yaml

4. Теперь убедимся, что наше приложение работает на кластере в регионе EU (это наш Development-кластер).

oc --context dev -n reverse-words-region get deployments,services,podsNAME                                  READY   UP-TO-DATE   AVAILABLE   AGEdeployment.extensions/reverse-words   1/1     1            1           4m39sNAME                    TYPE           CLUSTER-IP      EXTERNAL-IP                                                                  PORT(S)          AGEservice/reverse-words   LoadBalancer   172.30.79.111   a3115b78bce924ddc885d2b7dab766a6-1199935412.eu-central-1.elb.amazonaws.com   8080:30254/TCP   4m39sNAME                                 READY   STATUS    RESTARTS   AGEpod/reverse-words-68795d69ff-xmwc6   1/1     Running   0          4m39s

5. Теперь выполним этот же запрос на кластере в регионе US (это наш Production-кластер) и убедимся, что там нет ни одного запущенного podа.

oc --context pro -n reverse-words-region get deployments,services,podsNo resources found in reverse-words-region namespace.

Выполняем миграцию приложения


Теперь предположим, что по каким-то юридическим причинам наше приложение больше не может выполняться на серверах в регионе EU, и поэтому его надо перенести на американские серверы. Не вопрос, это делается всего одной командой.

Как помните, у нас есть два PlacementRules, одно для серверов EU s, одно для серверов US. Поэтому мы просто пропатчим нашу Subscription, чтобы она прекратила использовать PlacementRule для серверов в EU и начала использовать PlacementRule для серверов в US.

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

1. Патчим Subscription.

Патч ниже правит PlacementRule, которое используется Subscription, на кластеры в регионе us.

oc --context hub -n reverse-words-region patch subscription.apps.open-cluster-management.io/reversewords-region-app-subscription -p '{"spec":{"placement":{"placementRef":{"name":"us-region-clusters"}}}}' --type=merge

2. В результате, наше приложение автоматически перенесется с EU-кластеров на US-кластеры, что можно отследить по выводу команд ниже.

Приложение больше не выполняется в регионе EU (это кластер development).

oc --context dev -n reverse-words-region get deployments,services,podsNo resources found in reverse-words-region namespace.

Теперь оно выполняется в регионе US (это кластер production).

oc --context pro -n reverse-words-region get deployments,services,podsNAME                                  READY   UP-TO-DATE   AVAILABLE   AGEdeployment.extensions/reverse-words   1/1     1            1           92sNAME                    TYPE           CLUSTER-IP       EXTERNAL-IP                                                              PORT(S)          AGEservice/reverse-words   LoadBalancer   172.30.177.196   a90273a7fa3ea4015989fac522b6b36e-709976322.us-west-2.elb.amazonaws.com   8080:30375/TCP   2m33sNAME                                 READY   STATUS    RESTARTS   AGEpod/reverse-words-68795d69ff-jlktw   1/1     Running   0          92s

Как видите, PlacementRules позволяют легко и непринужденно переносить приложения между кластерами. В качестве критерия мы использовали регион, но в PlacementRule можно использовать и любые другие метки, которые сконфигурированы на кластерах.

Аварийное восстановление с помощью Red Hat ACM


Теперь покажем, как с помощью PlacementRules реализовать базовый сценарий аварийного восстановления.

Конфигурируем необходимые манифесты ACM


Мы воспользуемся манифестами ACM из предыдущего раздела, иначе говоря, будем использовать Namespace под названием reverse-words-region и Subscription, которая называется reversewords-region-app-subscription.

Нам надо создать новое PlacementRule с новыми свойствами, вот такими:

apiVersion: apps.open-cluster-management.io/v1kind: PlacementRulemetadata:  name: us-eu-region-clusters  namespace: reverse-words-regionspec:  clusterConditions:    - type: "ManagedClusterConditionAvailable"      status: "True"  clusterSelector:    matchExpressions:    - key: region      operator: In      values:      - EU      - US    matchLabels: {}  clusterReplicas: 1

  1. Свойство matchExpressions используется для отбора всех кластеров, у которых в метке region прописано значение EU или US.
  2. Свойство clusterReplicas нужно для того, чтобы выбрать из отобранных в предыдущем пункте кластеров только один.
  3. Кроме того, мы отбираем только кластеры в исправном состоянии (healthy).

Это новое PlacementRule гарантирует, что если один из кластеров перейдет в состояние non-healthy, то кластер, возвращаемый PlacementRule, изменится на один из кластеров в состоянии healthy.

Настраиваем Subscription, чтобы использовать это новое PlacementRule


1. Теперь создадим PlacementRule, про который только что говорили.

oc --context hub create -f https://raw.githubusercontent.com/RHsyseng/acm-app-lifecycle-blog/master/acm-manifests/reversewords-region/05_placement_rule_DR.yaml

Если посмотреть список кластеров, возвращаемый этим PlacementRule, то там будет только один кластер (в нашем случае Production).

oc --context hub -n reverse-words-region get placementrule us-eu-region-clusters -o yaml<OMITTED_OUTPUT>status:  decisions:  - clusterName: managed-cluster1-dev    clusterNamespace: managed-cluster1-dev

2. Идем дальше и обновим Subscription, которой мы пользовались в предыдущем разделе про миграцию. Мы пропатчим ее, чтобы использовать PlacementRule, которое мы только что создали.

oc --context hub -n reverse-words-region patch subscription.apps.open-cluster-management.io/reversewords-region-app-subscription -p '{"spec":{"placement":{"placementRef":{"name":"us-eu-region-clusters"}}}}' --type=merge

3. Приложение запустится в кластере EU (это Development), что можно отследить по выводу команд ниже:

oc --context dev -n reverse-words-region get deployments,services,podsNAME                                  READY   UP-TO-DATE   AVAILABLE   AGEdeployment.extensions/reverse-words   1/1     1            1           42sNAME                    TYPE           CLUSTER-IP      EXTERNAL-IP                                                                PORT(S)          AGEservice/reverse-words   LoadBalancer   172.30.185.94   a520ed21ff982452abeacf63b0b58cc5-31012041.eu-central-1.elb.amazonaws.com   8080:32283/TCP   42sNAME                                 READY   STATUS    RESTARTS   AGEpod/reverse-words-68795d69ff-crzqp   1/1     Running   0          42s

4. Теперь убьем кластер EU, чтобы имитировать чрезвычайную ситуацию, и посмотрим, что произойдет.

ПРИМЕЧАНИЕ. Мы сейчас реально убьем наш кластер. Если не хотите убивать свой, то просто удалите из него метку region: EU.

  1. Как только ACM увидит, что кластер EU исчез, вывод PlacementRule обновится и будет указывать на кластер US.

    oc --context hub -n reverse-words-region get placementrule us-eu-region-clusters -o yaml
    

    Теперь PlacementRule указывает на кластер US.

    <OMITTED_OUTPUT>status:  decisions:  - clusterName: managed-cluster2-prod    clusterNamespace: managed-cluster2-prod
    

  2. Приложение автоматически переместилось в кластер US.

    oc --context pro -n reverse-words-region get deployments,services,podsNAME                                  READY   UP-TO-DATE   AVAILABLE   AGEdeployment.extensions/reverse-words   1/1     1            1           76sNAME                    TYPE           CLUSTER-IP       EXTERNAL-IP                                                               PORT(S)          AGEservice/reverse-words   LoadBalancer   172.30.187.142   a1c7d218d901c40ac98375f4a9474084-1310645059.us-west-2.elb.amazonaws.com   8080:31095/TCP   78sNAME                                 READY   STATUS    RESTARTS   AGEpod/reverse-words-68795d69ff-ttzz5   1/1     Running   0          77s
    

  3. Кластера EU больше нет.



5. Когда кластер EU снова появится в сети, он будет автоматически добавлен в PlacementRule.

Заключение


Итак, в первой части мы рассмотрели базовые концепции жизненного цикла приложения в Red Hat ACM и показали, как их применять на примере развертывания приложения в двух кластерах. Во второй, как применять ACM для сине-зеленого развертывания, миграции приложений между кластерами и аварийного восстановления. А в заключительной части разобрали миграцию приложений и аварийное восстановление с помощью в Red Hat ACM. До новых встреч!
Подробнее..

8 Kubernetes-инсайтов, шпаргалка по Curl и онлайн-курс Разработка облачных приложений с микросервисными архитектурами

28.01.2021 20:21:55 | Автор: admin

Мы приготовили для вас много новых инсайтов, записей важных вебинаров, книжек и шпаргалок. Прокачивайте скилы, читайте, смотрите, думайте, применяйте на практике! Станьте частью DevNation!

Начни новое:

Скачать:

  • Шпаргалка по команде Curl
    Примеры использования и синтаксис curl, включая ее использование для запроса API.

  • Шпаргалка по базовым вещам Podman

  • Debezium на OpenShift
    Debezium это распределенная опенсорсная платформа для отслеживания изменений в данных. Благодаря ее надежности и скорости ваши приложения смогут реагировать быстрее и никогда не пропустят события, даже если что-то пойдет на так. Наша шпаргалка поможет с развертыванием, созданием, запуском и обновление DebeziumConnector на OpenShift.
    Загрузить шпаргалку

Чем заняться на досуге:

Мероприятия:

  • 28 января, DevNation: The Show
    Еженедельный часовой чат в прямом эфире. Как обычно, в программе свежие новости и интерактивная игра для участников.

  • DevNation Deep Dive: Kubernetes
    Поспешите, поезд Kubernetes уже отправляется узнайте, как применять, развертывать и использовать Kubernetes для решения задач, с которые вы сталкиваетесь в облаке .

Смотри в записи:

  • Вебинар DevNation Tech Talk Сборка kubectl-плагина с помощью Quarkus
    Разбираем, как с нуля спроектировать kubectl-плагин и собрать его, используя Quarkus. Также рассмотрим удобную работу с Kubernetes-кластером с использованием нативной компиляции для получения сверхбыстрых бинарников и расширений для Kubernetes-клиента.

  • jconf.dev
    Бесплатная виртуальная Java-конференция прямо у вас на экране: четыре техно-трека с нашими комьюнити-экспертами по Java и облаку, 28 углубленных сессий и два потрясающих основных доклада.

  • AnsibleFest
    Два дня интереснейших докладов, демонстраций и практических занятий. Отличная возможность узнать, как разработчики, администраторы и ЛПР в сфере ИТ отвечают на вызовы перемен с помощью гибких технологий автоматизации с открытым кодом, которые позволяют перейти от того, что есть, к тому, что нужно.

  • J4K Conference
    Новая виртуальная конференция по Kubernetes, Java и облаку: 17 сессий с сотрудниками Red Hat, включая доклад Марка Литтла (Mark Little), главного человека в Red Hat по связующему ПО.

По-русски:

Подробнее..

Поэтапное преобразование виртуализованных нагрузок в контейнеры OpenShift

18.03.2021 14:16:42 | Автор: admin

Унаследованные приложения, как правило, имеют монолитную архитектуру и запускаются на одной или нескольких виртуальных машинах. Некоторые из таких систем легче поддаются модернизации, поскольку в мире контейнеров для них есть неплохие аналоги (EAP, Spring Boot и т.д.). Однако большие классические приложения на .Net, работающие под IIS на Windows-сервере, модернизировать гораздо сложнее, тем более за одну итерацию. Но благодаря OpenShift Virtualization такие ВМ-нагрузки можно импортировать в OpenShift как есть и затем контейнеризировать их поэтапно.

В OpenShift виртуальные машины являются привилегированными гражданами и имеют ровно те же возможности, что и podы, включая обращение к другим объектам и предоставление доступа к себе через конечные точки служб (service endpoints). Поэтому выполнив первичный перенос ВМ-приложения в OpenShift, его затем можно поэтапно модернизировать, а заодно и расширять функционал.

Стратегия миграции Shift and Modernize

Чтобы показать, как это делается, мы для примера возьмем приложение .Net, работающее под IIS на виртуалке Windows Server, импортируем его в OpenShift Virtualization, а затем поэтапно контейнеризуем все его логические слои. Обратите внимание, что стратегия shift and modernize подходит и для других связок операционная системасвязующее ПО.

Этап 1. Импорт ВМ в OpenShift Virtualization

Импорт ВМ в OpenShift возможен несколькими способами. Для виртуальных машин VMware можно использоватьвстроенный инструментарий миграции, который позволяет подключиться к экземпляру VSphere и напрямую импортировать эти виртуалки в OpenShift Virtualization. Для других платформ виртуализации, включая Hyper-V и Xen, можно использовать virt-v2v, чтобы конвертировать образ ВМ в формат, поддерживаемый OpenShift Virtualization, а затем импортировать этот образ, используя методы описанные здесь (EN).

Виртуальная машина запускается с помощью Yaml-конфигурации, базовый вариант которой можно найтиздесь. Этот Yaml-файл содержит определение ВМ, а также объектов service и route, плюс, некоторые функциональные конфигурации для более эффективной работы Windows-ВМ на платформе OpenShift Virtualization.

Нас интересует следующее секция:

 features: acpi: {} apic: {} hyperv: reenlightenment: {} ipi: {} synic: {} synictimer: {} spinlocks: spinlocks: 8191 reset: {} relaxed: {} vpindex: {} runtime: {} tlbflush: {} frequencies: {} vapic: {} evmcs: {} # do not use evmcs if testing with nested virt

После применения этого yaml, мы получаем доступ к графическому интерфейсу Windows UI через VNC Console, которую нам дает OpenShift Virtualization.

Кроме того, теперь у нас есть доступ к приложению через exposed route.

Этап 2. Контейнеризация UI приложения

Не всегда можно мигрировать всё сразу, особенно в случае больших приложений. Например, этому могут препятствовать зависимости от библиотек, которые есть в классическом .NET, но отсутствуют в .Net Core. В этом случае код приложения придется доработать.

И поскольку это можно делать поэтапно, мы начнем с веб-интерфейса и после того, как переведем UI-слой на .Net Core, упакуем его в контейнерный образ для OpenShift. Этот новый UI-pod будет потреблять API, которые предоставляются старым сайтом, работающем под IIS на виртуальной машине.

Приведенный ниже Dockerfile компилирует ваш код .Net Core и создает runtime-образ. Это также можно сделать через сборки S2I.

# https://hub.docker.com/_/microsoft-dotnet-coreFROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS buildWORKDIR /source# copy csproj and restore as distinct layersCOPY ./source .RUN dotnet restore# copy and publish app and librariesCOPY . .RUN dotnet publish -c release -o /app --no-restore# final stage/imageFROM mcr.microsoft.com/dotnet/core/aspnet:3.1WORKDIR /appCOPY --from=build /app .ENTRYPOINT ["dotnet", "ClientListUI.dll"]

Для сборки и отправки этого образа в реестр можно использовать podman. Затем остается только развернуть этот отвечающий за веб-интерфейс pod вместе с виртуальной машиной приложения.

Этап 3. Контейнеризация API

Вслед за UI-слоем мигрируем на .Net Core слой API и развернем его в виде отдельного podа. После чего на исходной виртуалке остается только база данных SQL Server. Соответствующим образом поправим сервис ВМ в части описания доступа:

kind: ServiceapiVersion: v1metadata: name: stage3-win2019-db-vm namespace: stage3 labels: kubevirt.io: virt-launcher kubevirt.io/domain: stage3-win2019-iis-vmspec:  ports: - protocol: TCP port: 1433 targetPort: 1433 selector: kubevirt.io: virt-launcher kubevirt.io/domain: stage3-win2019-iis-vm

Итак, теперь UI-pod нашего приложения вызывает API через service URL нашего API-podа, а тот в свою очередь использует service URL нашей виртуальной машины, чтобы делать запросы к базе данных.

Этап 4. Контейнеризация БД

Да, вы правильно поняли: миграция экземпляра MS SQL в контейнер RHEL. Лет пять назад такое и в голову бы никому не пришло, но сегодня это вполне рабочий вариант и подробнее узнать о том, как настроить и запустить MS SQL в контейнере, можно узнать здесь (EN).

После того, SQL-pod будет готов, остается настроить port forwarding, чтобы можно было работать с БД через MS SQL Management Studio или Azure Data Studio:

 oc get pod | grep sql | grep Runningsql2019-1-1-gp29h 1/1 Running 0 39h oc port-forward sql2019-1-1-gp29h 1433:1433Forwarding from 127.0.0.1:1433 -> 1433Forwarding from [::1]:1433 -> 1433Handling connection for 1433

Теперь можно переносить БД из экземпляра MS SQL на Windows-виртуалке в контейнер SQL Server. После чего, необходимо изменить строку подключения для API-podа приложения и указать в ней pod, где теперь живет ваш MS SQL.

Всё, приложение полностью, на 100% контейнеризовано, и виртуальную машину которую, мы перенесли на первом этапе, можно навсегда отключить.

Заключение

Поэтапная миграция ВМ-нагрузки по методу shift and modernize позволяет снизить технический долг, минимизировать любого рода регрессии, которые могут возникнуть входе этого процесса, ну и попутно расширить функционал приложения в рамках проводимой при такой миграции доработки кода.

Подробнее..

Гайд по git stash, разбиваем диск под Linux с GNU Parted, шпаргалка по SQLite и полезное руководство по графикам

22.04.2021 12:11:11 | Автор: admin

Новая порция инсайтов, мероприятий, книжек и шпаргалок. Оставайтесь с нами станьте частью DevNation!

Узнать новое:

Скачать:

Почитать на досуге:

Мероприятия:

  • Виртуальный Red Hat Summit 2021, 27-28 апреля
    Бесплатная онлайн-конференция Red Hat Summit это отличный способ узнать последние новости ИТ-индустрии, задать свои вопросы техническим экспертам, услышать истории успеха непосредственно от заказчиков Red Hat и увидеть, как открытый код генерирует инновации в корпоративном секторе.

  • Cook Your Own Cloud: OpenShift + OpenStack + немного перца! 30 апреля
    Миграция на облачную платформу тем актуальнее, чем сложнее инфраструктура и выше число изменений. Как насчет того, чтобы автоматизировать рутинные задачи и сконцентрироваться на бизнес-процессах? Мы в Red Hat знаем, как создать облачное решение для IaaS и PaaS- платформ. И мы хотим поделиться своим опытом! На вебинаре архитектор Дмитрий Алехин расскажет про связку Red Hat Openstack Platform и Red Hat Openshift Container Platform, которые позволяют осуществить стратегию открытого гибридного облака. Регистрируйтесь и приходите!

Подробнее..

Бесплатный онлайн-курс Основы Ansible, шпаргалка по GNU Screen, запись Red Hat Summit и многое другое

06.05.2021 14:05:14 | Автор: admin

Мы знаем, как провести эти праздники максимально полезно: собрали для вас много новых инсайтов, записей важных вебинаров, книжек и шпаргалок. Прокачивайте скилы, читайте, смотрите, думайте, применяйте на практике! Станьте частью DevNation!

Узнать новое:

Скачать:

Что еще интересного:

Мероприятия:

Вебинары:

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru