Для чего нужен openshift
Использование OpenShift в Azure
Применимо к: ✔️ виртуальные машины Linux ✔️ гибкие масштабируемые наборы
OpenShift — это открытая и расширяемая платформа приложений-контейнеров, которая позволяет использовать Docker и Kubernetes на предприятии.
OpenShift включает Kubernetes для оркестрации контейнеров и управления ими. Здесь добавлены инструменты для разработчиков и операций, позволяющие:
Существует несколько доступных версий OpenShift. Из этих версий только две пользователи могут использовать для развертывания в Azure: платформа контейнеров OpenShift и OKD (прежнее название OpenShift Origin).
Azure Red Hat OpenShift
Microsoft Azure Red Hat OpenShift представляет собой полностью управляемое предложение OpenShift, выполняемое в Azure. Эта служба управляется и поддерживается совместно корпорацией Майкрософт и Red Hat. Дополнительные сведения см. в документации по службе Azure Red Hat OpenShift.
Платформа контейнеров OpenShift
OpenShift Container Platform — это коммерческая версия корпоративного класса, которая разрабатывается и поддерживается компанией Red Hat. Чтобы использовать эту версию, клиенты должен приобрести необходимые права доступа к платформе OpenShift Container Platform. Кроме того, они сами устанавливают и администрируют всю инфраструктуру.
Так как клиенты являются владельцами самой платформы, они могут установить ее в локальном центре обработки данных или в общедоступном облаке (например, в Azure).
OKD — это высокоуровневый проект OpenShift с открытым кодом, который поддерживается сообществом. OKD можно установить в ОС CentOS или Red Hat Enterprise Linux (RHEL).
Национальная библиотека им. Н. Э. Баумана
Bauman National Library
Персональные инструменты
OpenShift
Содержание
Обзор
OpenShift включает Kubernetes для оркестрации контейнеров и управления ими. Здесь добавлены инструменты для разработчиков и операций, позволяющие:
Существует несколько версий OpenShift:
Платформа контейнеров OpenShift
OpenShift Container Platform — это коммерческая версия корпоративного класса, которая разрабатывается и поддерживается компанией Red Hat. Чтобы использовать эту версию, клиенты должен приобрести необходимые права доступа к платформе OpenShift Container Platform. Кроме того, они сами устанавливают и администрируют всю инфраструктуру. Так как клиенты являются владельцами платформы, они могут установить ее в локальном центре обработки данных или в общедоступном облаке (Azure, AWS или Google).
OpenShift в Azure
OpenShift в Azure — это полностью управляемое предложение OpenShift, выполняемое в Azure. Эта служба управляется и поддерживается совместно корпорацией Майкрософт и Red Hat. Кластер будет развернут в подписку Azure клиента. В настоящий момент служба находится в закрытой предварительной версии, а в начале CY 2019 планируется выпустить общедоступную версию. Дополнительные сведения будут представлены, когда предложение будет ближе к общедоступной версии. OKD (прежнее название — OpenShift Origin); OKD — это высокоуровневый проект OpenShift с открытым кодом, который поддерживается сообществом. OKD можно установить в ОС CentOS или Red Hat Enterprise Linux (RHEL).
OpenShift Dedicated
OpenShift Dedicated — это управляемая Red Hat однотенантная (получающая доступ к другим службам в выделенной среде) OpenShift, которая использует платформу контейнеров OpenShift. Red Hat управляет всей базовой инфраструктурой (виртуальными машинами, кластером OpenShift, сетью, хранилищем и т. д.). Кластер связан только с одним клиентом и выполняется в общедоступном облаке (AWS или Google). Начальный кластер включает четыре узла приложений, и все затраты — ежегодные и оплачиваются заранее.
OpenShift Online
OpenShift Online — это мультитенантная(обращающаяся к службам в общей среде в нескольких организациях) платформа OpenShift (на базе Container Platform) под управлением Red Hat. Red Hat управляет всей базовой инфраструктурой (виртуальными машинами, кластером OpenShift, сетью и хранилищем).
Чтобы использовать эту версию, клиенты развертывают контейнеры, но при этом они не могут выбирать, на каких узлах эти контейнеры выполняются. Так как OpenShift Online — это мультитенантная среда, контейнеры могут размещаться на тех же узлах виртуальных машин, что и контейнеры других клиентов. Стоимость вычисляется из расчета на один контейнер.
Преимущества для разработчиков
Преимущества для специалистов IT-систем
Общие предварительные требования для развертывания OpenShift в Azure
При установке OpenShift используются модули playbook Ansible. Чтобы выполнить действия по установке, Ansible использует Secure Shell (SSH) для подключения ко всем узлам кластера. Когда Ansible создает SSH-подключение к удаленным узлам, нет возможности ввести пароль. Поэтому развертывание завершится сбоем, если с закрытым ключом связана парольная фраза. Так как все виртуальные машины развертываются с помощью шаблонов Azure Resource Manager, для доступа к ним используется один открытый ключ. Нужно включить соответствующий закрытый ключ в виртуальную машину, на которой также выполняются все модули playbook. Чтобы сделать это безопасно, используйте Azure Key Vault для передачи закрытого ключа в виртуальную машину. Если контейнерам требуется постоянное хранилище, вам понадобятся постоянные тома. OpenShift поддерживает виртуальные жесткие диски Azure (VHD) для этой возможности, но сначала требуется настроить Azure в качестве поставщика облачных услуг. В этой модели OpenShift выполняет следующие действия:
Чтобы эта конфигурация работала, OpenShift нужны разрешения на выполнение указанных выше задач в Azure. Это достигается с помощью субъекта-службы. Субъект-служба — это учетная запись безопасности в Azure Active Directory, которой предоставляются разрешения на доступ к ресурсам. Субъект-служба должна иметь доступ к учетным записям хранения и виртуальным машинам, входящим в состав кластера. При развертывании всех ресурсов кластера OpenShift в одной группе ресурсов субъект-служба может получить разрешения на доступ к этой группе ресурсов. В этом руководстве описывается создание артефактов, связанных с необходимыми компонентами.
Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
Вход в azzure
Входим в Azure с помощью команды az login и следуем инструкциям на экране или щелкаем «Попробовать», чтобы использовать Cloud Shell.
Создание группы ресурсов
Создание хранилища ключей
Создайте хранилище ключей, где будут храниться ключи SSH для кластера, с помощью команды az keyvault create. Имя хранилища ключей должно быть глобально уникальным. В следующем примере создается хранилище ключей с именем keyvault в группе ресурсов keyvaultrg:
Создание ключа SSH
Ключ SSH необходим для защиты доступа к кластеру OpenShift. Создаем пару ключей SSH с помощью команды ssh-keygen (в Linux или macOS):
Сохранение закрытого ключа SSH в Azure Key Vault
Развертывание OpenShift использует созданный ключ SSH, чтобы защитить доступ к основному кластеру OpenShift. Чтобы обеспечить для развертывания безопасное извлечение ключа SSH, следует ключ в Key Vault с помощью следующей команды:
Создание субъекта-службы
OpenShift взаимодействует с Azure, используя имя пользователя и пароль или субъект-службу. Субъект-служба Azure является удостоверением безопасности, которое можно использовать с приложениями, службами и инструментами автоматизации, такими как OpenShift. Разработчик определять разрешения на то, какие операции может выполнять субъект-служба в Azure, и управлять ими. Рекомендуется ограничить область разрешений субъекта-службы определенными группами ресурсов, а не всей подпиской. Создаем субъект-службу с помощью команды az ad sp create-for-rbac и выведем учетные данные, необходимые для OpenShift: В следующем примере создается субъект-служба, а группе ресурсов с именем openshiftrg назначаются разрешения участника. Прежде всего создаем группу ресурсов с именем openshiftrg:
Далее рассмотрим как развернуть сам кластер OpenShift.
Развертывание платформы контейнеров OpenShift в Azure
Для развертывания платформы OpenShift Container Platform в Azure можно использовать один из нескольких способов: Можно вручную развернуть необходимые компоненты инфраструктуры Azure, а затем следовать инструкциям из документации по платформе OpenShift Container Platform. Также можно использовать существующий шаблон Resource Manager, упрощающий развертывание кластера платформы OpenShift Container Platform. Другой вариант — использовать предложение Azure Marketplace. Для всех вариантов подписка Red Hat является обязательной. Во время развертывания экземпляр Red Hat Enterprise Linux регистрируется в подписке Red Hat и связывается с идентификатором пула, который содержит права доступа к платформе OpenShift Container Platform. Убедитесь, что у вас есть действительное имя пользователя, пароль и идентификатор пула диспетчера подписки Red Hat (RHSM). Можно также использовать ключ активации, идентификатор организации и идентификатор пула. Данные можно проверить, войдя на сайт https://access.redhat.com.
Развертывание платформы контейнеров OpenShift с помощью шаблона Resource Manager
Для развертывания с использованием шаблона Resource Manager используется файл параметров, в котором указываются входные параметры. Для дополнительной настройки развертывания следует создать вилку репозитория GitHub и измените нужные элементы. Например, достаточно часто возникает потребность изменить следующие параметры:
Настройка файла параметров
Разные выпуски могут иметь разные параметры, поэтому следует проверить необходимые параметры для используемой ветви.
Развертывание с помощью Azure CLI
В примере ниже кластер OpenShift и все связанные ресурсы развертываются в группу ресурсов openshiftrg с именем развертывания myOpenShiftCluster. Репозиторий GitHub ссылается непосредственно на шаблон, при этом используется локальный файл параметров с именем azuredeploy.parameters.json.
Для завершения развертывания требуется не менее 30 минут в зависимости от общего количества развертываемых узлов и настроенных параметров. После завершения развертывания в терминале отобразятся полное доменное имя DNS узла-бастиона и URL-адрес консоли OpenShift.
Развертывание платформы контейнеров OpenShift с помощью предложения Azure Marketplace
Для развертывания платформы OpenShift Container Platform в Azure проще всего использовать предложение Azure Marketplace. Это самый простой вариант, но он имеет ограниченные возможности для настройки. Предложение Marketplace включает в себя следующие параметры конфигурации: Master Nodes (Главные узлы): три главных узла, для которых можно указать тип экземпляра. Infra Nodes (Узлы Infra): три узла Infra, для которых можно указать тип экземпляра. Nodes (Узлы): здесь можно настроить число узлов (от 2 до 9) и тип экземпляров. Disk Type (Тип диска): используются Управляемые диски. Networking (Сеть): поддержка новой или существующей сети, а также пользовательского диапазона CIDR. CNS: позволяет включить CNS. Metrics (Метрики): позволяет включить метрики. Logging (Ведение журнала): позволяет включить ведение журнала. Azure Cloud Provider (Поставщик облачных служб): позволяет включить поставщик облачных служб.
Подключение к кластеру OpenShift
Очистка ресурсов
Red Hat OpenShift
Управляйте развертываниями в гибридных и мультиоблачных средах
Red Hat® OpenShift®- это готовая корпоративная контейнерная платформа Kubernetes с полным стеком автоматизированных операций с поддержкой гибридных и мультиоблачных развертываний. Red Hat OpenShift оптимизирована для повышения производительности труда разработчиков и внедрения инноваций.
Превращайте ваши идеи в развернутые системы, которые легко масштабировать. Red Hat OpenShift 4 включает Red Hat Enterprise Linux® CoreOS, с установкой в один шаг, повышенной отказоустойчивостью и производительностью, а еще дружественную разработчикам serverless среду.
Как работает Red Hat OpenShift
Совместная работа в проектах
Легковесные контейнеры
Red Hat OpenShift оснащена интерфейсом управления контейнерами на хосте и добавляет возможность оркестрации контейнеров Docker на нескольких хостах. Red Hat OpenShift также использует поды Kubernetes. Под — это один или более контейнеров, развернутые на хосте. Под обеспечивает обмен данными между контейнерами. Каждый под имеет собственный IP адрес и собственное пространство портов. Контейнеры внутри подов могут совместно использовать локальное хранилище и сеть, поэтому контейнер может быть легче, чем виртуальная машина.
Сохраняйте работоспособность с помощью сервисов
Поды создаются и уничтожаются по мере масштабирования контейнеров в сторону увеличения или уменьшения. Так называемые “Сервисы” помогают предотвратить уничтожение подов, которые обеспечивают работоспособность других подов. Сервис определяется, как набор подов и используется для назначения политики доступа к подам (обычно это микросервис). Red Hat OpenShift использует сервисы для разделения подов, обеспечивающих работоспособность, от подов, которые больше не нужны, так что вам не нужно вручную отслеживать, какой из них к какой категории относится в постоянно меняющейся среде.
Приложения, работающие везде
Сосредоточьтесь на написании программ и оставьте платформе Red Hat OpenShift заботы по созданию, запуску и масштабированию ваших приложений в облачной и локальной инфраструктуре. Перемещайте приложения без сбоев независимо от того, где они запущены. Red Hat OpenShift выполняет эту задачу, рассматривая образ Docker как двоичный артефакт, который включает в себя весь стек приложения и его требования. Образ Docker создается как один из результатов каждой сборки и используется как универсальная развертываемая единица. Это означает, что с Red Hat OpenShift вам нужно сформировать только одну сборку, с которой затем вы можете развернуть приложение где угодно.
Контейнеры и поды
Контейнеры упаковывают и изолируют приложения таким образом, чтобы вы могли перемещать их между разными средами. Платформа Red Hat OpenShift оснащена интерфейсом управления контейнерами, а также возможностью оркестрации контейнеров Docker при установке на нескольких хостах.
Red Hat OpenShift использует поды Kubernetes. Под — это один или более контейнеров, развернутые на хосте. Под обеспечивает обмен данными между контейнерами. Каждый под имеет собственный IP адрес и собственное пространство портов. Контейнеры, содержащиеся внутри пода, могут иметь общий доступ к локальному хранилищу и сетевым службам.
Kubernetes
Red Hat OpenShift позволяет вам объединять группы хостов в кластеры и эффективно управлять этими кластерами. Кластеры могут охватывать хосты, расположенные в публичных, частных и гибридных облаках. Red Hat OpenShift является идеальной платформой для хостинга облачных cloud-native приложений, требующих максимально быстрого масштабирования.
Доверенный реестр контейнеров
Реестр Docker предоставляет надежный источник образов контейнеров. Red Hat OpenShift может создавать образы контейнеров на основе вашего исходного кода, развертывать их и управлять их жизненным циклом. Red Hat OpenShift предоставляет внутренний, интегрированный реестр Docker, который вы можете развернуть в своей среде для локального управления образами. Вы также можете установить реестр Red Hat OpenShift Container Platform в качестве изолированного реестра образов контейнеров.
Развертывание по разным инфраструктурам
Используйте Red Hat OpenShift для развертывания приложений в различных инфраструктурах или для перехода от существующего контейнерного образа к новому. Масштабируйте ваши приложения горизонтально, чтобы удовлетворять растущий спрос.
Каждый раз при развертывании создается новый контроллер репликации, который запускает поды. Контроллер репликации гарантирует постоянную работоспособность определенного количества реплик. Deployer-поды управляют развертыванием. При замене развернутой системы, предыдущий контроллер репликации сохраняется, чтобы при необходимости можно было легко откатиться к прошлой конфигурации.
Представляем OpenShift Pipelines
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
По сути, основные концепты 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
При желании можно легко просмотреть полный лог выбранной задачи:
Чтобы еще больше облегчить жизнь разработчикам, OpenShift Pipelines позволяет рисовать конвейеры прямо в консоли OpenShift, поэтому вам больше не нужен черный пояс по YAML, чтобы создать свой первый конвейер Tekton:
Рис. 3. Графическое проектирование конвейера в консоли OpenShift
Но если вы, как обладатель черного пояса по YAML, захотите что-то подправить, это всегда можно сделать прямо из консоли OpenShift:
Рис. 4. YAML – примеры и снипеты в консоли OpenShift
Более того, OpenShift Pipelines пригодится, даже если вы решите пойти по пути чистого YAML, и предложит вам готовые примеры и снипеты кода для более быстрой разработки конвейеров YAML. Кроме того, в систему можно интегрировать ваши корпоративные снипеты, сделав их доступными всем разработчикам. Именно для этого мы и добавили специальный CRD под названием ConsoleYAMLSamples.
События как триггеры для запуска конвейеров
Хотите увязать запуск конвейеров с некими внешними событиями (в терминах Tekton это называется Trigger), например, push- или pull-запросами Github или Gitlab? Вообще не проблема, в OpenShift Pipelines это есть из коробки, причем поддерживаются различные вендоры, включая Github, Gitlab, BitBucket и т.д.
Рис. 5. Добавление триггера в консоли OpenShift
Вы просто создаете нужный триггер в UI, а OpenShift сам формирует все необходимые концепты, такие как EventListeners, TriggerTemplates (подробнее о них можно почитать в официальной документации).
Готовые повторно используемые задачи и кастомизация
Рис. 6. OpenShift Pipelines из коробки предлагает десятки готовых задач
Кроме того, этот список можно легко расширить. Для этого достаточно добавить «ClusterTasks» в кластер, после чего вам станут доступны сотни дополнительных задач на сайте TektonHub, который представляет собой публичный репозиторий для обмена задачами Tekton:
Рис. 7. TektonHub – публичный репозиторий повторно используемых задач и конвейеров Tekton
Интеграция с IDE
Разработчики, использующие командную строку и IDE, могут воспользоваться преимуществами Tekton CLI, расширения Tekton для Visual Studio Code и плагина Tekton для IntelliJ, чтобы взаимодействовать с конвейерами прямо из своей обычной среды разработки и создавать, запускать, просматривать и выполнять действия на кластере непосредственно из командной строки.
Рис. 8. Расширение VSCode для OpenShift Pipelines
Полезные ресурсы
В заключение советуем посмотреть видеоверсию этой статьи на английском:
А также рекомендуем следующие ресурсы (EN):







