devops
December 11, 2023

Деплой OpenStack в 2023 году

В июне 2023 года OpenInfra провела встречу в Ванкувере. Мне понравился доклад про способы деплоя OpenStack, на основе которого и написана моя заметка.

Одна из проблем начала работы с OpenStack - понимание, как его деплоить в своей инфраструктуре. Опций великое множество, посмотрим что нам предлагают:

  • Разработка
    • DevStack - OpenStack, разворачивающийся в виртуальной машине или на физическом железе. Позволяет развернуть облако как на одной ноде, так и собрать несколько в кластер. Развивается OpenStack-сообществом.
  • Kubernetes
    • OpenStack-Helm - OpenStack, собранный в Helm-chart, позволяющий управлять виртуальными машинами. Имеет в себе инструментарий для настройки ассетов, например, Storage-backends, таких как Ceph или NFS.
    • Sunbeam - Относительно новое решение, позволяющее использовать OpenStack в Kubernetes как на однонодовых решениях, так и с сотнями и тысячами гипервизоров.
  • Ansible
    • OpenStack-Ansible - деплой OpenStack, упакованного в LXC-контейнеры, при помощи Ansible
    • Kolla-Ansible - деплой OpenStack, упакованного в Docker-контейнеры, собирающиеся при помощи Kolla, при помощи Ansible
  • OpenStack
    • TripleO - использует OpenStack для деплоя OpenStack. В настоящий момент последняя поддерживаемая версия OpenStack - Wallaby. С февраля 2023 года дальнейшее развитие продукта не планируется.
  • Canonical Infrastructure
    • MicroStack - OpenStack в Kubernetes, упакованный в snap-пакет. Позволяет развернуть облако на локалхосте, либо небольшой приватный кластер.
    • Charmed OpenStack - деплой OpenStack с использованием Juju. Использует фреймворк Charmed Operator Framework. Очень лёгкий в управлении и гибкий в настройке. Интегрируется в Metal-as-a-Service (MAAS)
  • Baremetal
    • Kayobe - инструмент, позволяющий установить OpenStack на железо, используя Bifrost, Kolla и Kolla-Ansible
    • Airship - набор утилит, позволяющий развернуть облако с OpenStack в Kubernetes с нуля. Использует yaml для описания конфигурации деплоя.
  • Internet of Things
    • StarlingX - решение, предназначенное, в основном, для промышленного IOT, где критичны низкие задержки. Использует контейнеры
  • Ручная установка
    • Никто не запрещает собрать OpenStack из исходных кодов или использовать пакетный менеджер, однако это достаточно трудоёмкий и долгий путь, имеющий в настоящее время академическую ценность

Какой способ подойдёт мне?

Выбор способа установки зависит от того, как вы ответите сами себе на следующие вопросы.

Кто будет устанавливать, поддерживать и обслуживать OpenStack?

Чтобы было проще оценить свои силы, вот ещё вопросы:

  • Вы управляете инфраструктурой своего дата-центра?
  • Вы управляете своей сетевой инфраструктурой?
  • Вы управляете конфигурацией операционных систем?
  • Есть ли у вас опыт оркестрации сложной рабочей нагрузки на десятках-сотнях-тысячах нод?

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

В каком состоянии моя инфраструктура?

Если же вы всё таки решились деплоить OpenStack своими силами, ответьте на следующие вопросы:

  • Вы используете Kubernetes?
    • Если да, то есть ли у вас административный доступ к кластеру?
  • Какой дистрибутив ОС вы используете?
  • Что вы используете для оркестрации своей инфраструктуры? (Ansible, Chef, Puppet, etc)
  • Деплоите ли вы софт с помощью LXC или Docker?
  • Используете ли вы свои образы операционных систем и зеркала дистрибутивов или полагаетесь на общедоступные комьюнити-сборки и репозитории?

Для чего вы будете использовать OpenStack?

  • Какой будет рабочая нагрузка?
    • Высокопроизводительные вычисления? (HPC)
    • Телеком
    • Оркестрация контейнеров
    • Виртуальные машины
  • Кто будет пользоваться этим ежедневно?
    • Непревилегированные пользователи (не системные администраторы)
    • Вы и ваша команда
    • Клиенты

Каждая система деплоя создана под специфические задачи различными людьми. Схожи ли их задачи и взгляды с вашими?

Достаточно ли у вас опыта в Kubernetes?

Если да, OpenStack-Helm может вам подойти

  • OpenStack-Helm использует Helm для деплоя OpenStack в Kubernetes, давая возможность запускать виртуальные машины
    • Что такое Helm?
      • Это пакетный менеджер для Kubernetes
      • С помощью Helm вы можете упаковать свой деплой и управлять им в дальнейшем
      • Деплой представляет собой Helm-chart
    • OpenStack-Helm представляет собой Helm-chart'ы для деплоя OpenStack и сопутствующего программного обеспечения
  • Также OpenStack-Helm предоставляет инструменты и скрипты для настройки ассетов, например storage-бэкэнды
  • OpenStack-Helm деплоится через Ubuntu и Docker

Используете ли вы Ansible?

OpenStack-Ansible и Kolla-Ansible могут быть хорошим решением, т.к. используют Ansible для деплоя OpenStack

  • Используете ли вы LXC или Docker?
    • OpenStack-Ansible деплоит компоненты OpenStack используя LXC
    • Kolla-Ansible деплоит компоненты OpenStack используя Docker
  • Оба решения достаточно гибки и имеют меньше ограничений, чем другие способы деплоя OpenStack
  • У решения большая поддержка операционных систем, таких как Debain- и RHEL-based

Есть ли у вас baremetal сервера?

  • Kayobe - это хорошее решение, позволяющее управлять железными серверами с помощью Bifrost (ironic)

Выводы

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