Как установить Kubernetes-платформу за 10 минут через веб-интерфейс
Привет, Хабр! Я Евгений Шевченко, руководитель разработки веб-интерфейсов Deckhouse Kubernetes Platform (DKP).
Kubernetes — это мощный инструмент, но его высокая гибкость оборачивается сложностью настройки. На практике DevOps-инженерам приходится учитывать десятки нюансов: версии API, типы хранилищ, сетевые политики, интеграцию с облаками и приватными репозиториями. Команда Deckhouse стремится снизить этот порог входа. Наша цель — дать готовую, поддерживаемую платформу с предсказуемым поведением и простой процедурой установки.
В этой статье:
Для начала расскажу немного теории, но если хотите начать сразу с практики, то переходите во вторую часть обзора. А ещё есть запись live-демо с подробной демонстрацией работы установщика: YouTube, Rutube, VK Видео.
Теория: получаем рабочий Kubernetes на примере DKP
Для начала разберём теорию: как устроена установка Kubernetes-платформы и какие шаги нужно пройти, чтобы получить рабочий кластер. Сделаем это на примере DKP.
Чтобы получить Kubernetes-платформу, нужно пройти четыре шага:
Выбрать источник и редакцию DKP.
Указать параметры инфраструктуры и настройки DKP.
Запустить установку и дождаться её завершения.
Начать пользоваться.
Выбор источника и редакции DKP
Если вы уже сталкивались с установкой DKP, то, вероятно, знаете, что у нас есть публичный источник — наше хранилище образов registry.deckhouse.ru
. Там размещаются образы платформы и её модулей. Еще в этом хранилище опубликованы коммерческие редакции платформы — Enterprise, Standard Plus, Standard, Basic Edition — и сертифицированная ФСТЭК России Certified Security Edition.
Также наше публичное хранилище содержит Deckhouse Virtualization Platform Enterprise Edition (DVP EE), предназначенную для запуска виртуальных машин (ВМ). Cейчас DVP устанавливается в полуавтоматическом режиме. Для этого необходимо отдельно настроить модуль виртуализации после установки DKP.
Чтобы узнать больше о возможностях DKP и его редакциях — запишитесь на консультацию.
Для доступа к коммерческим редакциям DKP и DVP из публичного источника требуется лицензионный ключ. Если у вас нет ключа, но вы хотите попробовать платформу, попробуйте Community Edition — некоммерческую редакцию, доступную без регистрации, SMS и каких-либо ограничений.
При этом публичный источник — не единственный вариант. Вы также можете использовать приватный источник, размещённый в вашем registry. Для этого есть два подхода:
настроить проксирующий registry, который будет обращаться к нашему registry;
воспользоваться утилитой командной строки
d8
, а точнее её подкомандойd8 mirror
. С её помощью можно скачать все необходимые образы, перенести их в закрытый контур, например, на флешке, и загрузить в ваш локальный registry.
Независимо от того, какой источник вы выберете — публичный или приватный, — процесс установки будет одинаковым.
Настройка инфраструктуры
Мы определились, откуда берём DKP, теперь нужно выбрать, куда мы его ставим.
Кластер можно развернуть либо на существующих хостах, либо в облачной инфраструктуре.
Кластеры, развёрнутые на уже готовых хостах, называют статическими. На этих хостах должна быть совместимая операционная система, чтобы они были объединены в одну сеть и к ним был SSH-доступ (возможно, через бастион). При этом хосты могут быть как физическими, так и виртуальными.
Установщик подключится по SSH, установит необходимые пакеты, поднимет компоненты Kubernetes и запустит оператор DKP, который, в свою очередь, запустит остальные компоненты платформы. В итоге у вас получится готовая к использованию Deckhouse Kubernetes Platform.
В случае с облачными кластерами хосты создавать заранее не нужно. DKP умеет интегрироваться с разными вариантами облаков и виртуализации, включая нашу Deckhouse Virtualization Platform (DVP), построенную на базе Kubernetes. Это избавляет от рутины: не нужно вручную создавать ВМ, устанавливать ОС и настраивать доступ.
Что значит «интегрироваться»? Во время установки, вместо того чтобы вы вручную готовили хосты, процедура сама подключится к API облака и создаст их согласно заданной конфигурации. Дальше произойдёт то же самое, что и в статическом случае: установщик зайдёт по SSH, установит пакеты, поднимет Kubernetes и запустит оператор платформы. В итоге у вас будет полноценная Kubernetes-платформа, но уже с интеграцией с вашим облачным решением.
Какие это даёт преимущества? Автомасштабирование DKP в облаке может динамически создавать и удалять ВМ — узлы кластера. Вы управляете этим процессом с нужной точностью: либо задаёте фиксированное количество узлов, либо указываете диапазон, в рамках которого DKP автоматически масштабирует кластер — добавляет или удаляет узлы в зависимости от нагрузки. Этот механизм реализован через кластер-автоскейлер, который непрерывно отслеживает загрузку и при необходимости выводит узлы из эксплуатации или заказывает новые. Динамический заказ ресурсов В облаке доступны динамические ресурсы вроде балансировщиков и сетевых дисков, которые также создаются и управляются платформой без ручного вмешательства.
Почему я обратил внимание на разницу между двумя сетапами — статическом и облачном? Потому что здесь есть зависимость от выбранной редакции DKP.
Если вас интересует статический кластер (а это довольно популярный сетап), то какую бы редакцию вы ни взяли: Community, Enterprise или Security Certified, — вы сможете установить DKP на статические хосты, и она будет работать.
С облачными кластерами история интереснее: поддержка интеграций зависит от редакции. Например, публичные облака в большинстве своём поддерживаются уже в Community Edition. Поддержка частных облаков начинается со Standard Plus, а в Enterprise Edition доступны все интеграции.
Отмечу отдельно: интеграция с OpenStack есть только в Enterprise Edition, поэтому именно в ней есть поддержка публичных облаков на базе OpenStack, таких как Selectel или VK Cloud.
А интеграция с нашей платформой виртуализации доступна практически во всех редакциях. В Certified Security Edition (CSE) её пока нет, но сейчас на финальной стадии сертификации находятся следующая версия Kubernetes-платформы (1.73) и сама платформа виртуализации (DVP). В ближайшем релизе обе платформы будут сертифицированы ФСТЭК России и в рамках CSE тоже получат взаимную интеграцию.
Ещё раз: статические кластеры доступны всегда, а облачные — в зависимости от редакции.
И последний вопрос на этом этапе — некритичный для установки, но важный для понимания: при развёртывании DKP у вас может возникнуть потребность использовать конкретную версию Kubernetes.
Каждая версия DKP поддерживает диапазон версий Kubernetes. Например, если вы устанавливаете DKP 1.70, то можете использовать Kubernetes от 1.28 до 1.32:
Среди этих версий выделены те, которые мы рекомендуем для продакшена, а в центре — та, что будет установлена автоматически, если вы выберете опцию «Automatic».
Такой подход даёт вам гибкость в выборе версии Kubernetes. А если вы оставите автоматический выбор, DKP будет самостоятельно обновлять Kubernetes «под капотом» по мере обновления DKP.
Запуск установки
Когда у вас уже есть заполненная конфигурация кластера, остаётся только запустить установку и дождаться её завершения. Установка из командной строки выглядит так: нужно запустить контейнер с установщиком, передать ему YAML-манифесты с конфигурацией:
# Запустить контейнер с установщиком (dhctl).
docker run --pull=always -it \
-v "$PWD/config.yml:/config.yml" \
-v "$HOME/.ssh/:/tmp/.ssh/" \
-v "$PWD/dhctl-tmp:/tmp/dhctl" \
registry.deckhouse.ru/deckhouse/ce/install:
stable bash
# Запустить установку.
dhctl bootstrap \
--ssh-user=ubuntu \
--ssh-agent-private-keys=/tmp/.ssh/id_rsa \
--config=/config.yml
И после этого останется дождаться установки в течение примерно 10 минут:
После этого можно начинать пользоваться DKP.
Начало работы
Когда установка закончилась, логи сообщают нам о том, что кластер успешно установлен:
И теперь вы можете подключаться по SSH к master-узлу и другим узлам кластера:
# Зайти на master-узел.
ssh ubuntu@ -i ~/.ssh/my-key
Дальше — варианты: создать локального пользователя, настроить интеграцию с вашим каталогом пользователей (например, LDAP, Keycloak и др. — примеры настройки провайдеров) и выдать права, включить Ingress-контроллер и настроить DNS:
В общем, этот шаг неизбежен — без него не начнёшь извлекать реальную пользу из Kubernetes.
Практика: получаем рабочий Kubernetes через графический установщик
Выше мы рассмотрели теорию, а теперь давайте посмотрим, как ещё проще пройти через все эти шаги на практике — с помощью нового графического установщика DKP.
Так выглядит веб-интерфейс установщика DKP (инструкция, как запустить установщик):
Обратите внимание на адресную строку: интерфейс запущен на localhost
. За кулисами я просто выполнил команду docker run
, поэтому установщик работает локально и никакие данные никуда не уходят.
Чем вас встречает интерфейс? Прежде всего — списком кластеров. У каждого есть название, статус (установлен или уничтожен), источник, тип инфраструктуры и дата создания.
С кластером можно:
подключиться к нему (об этом чуть позже);
скачать приватную часть SSH-ключа — это полезно в некоторых сценариях;
создать новый кластер на основе конфигурации существующего;
уничтожить кластер или просто удалить его из истории установщика, оставив сам кластер работать.
Теперь давайте пройдём те же шаги, что обсуждали в теории, но уже в интерфейсе.
Выбор источника и редакции DKP
При первом запуске установщика у вас автоматически настроен источник Community Edition — он доступен сразу, без дополнительных действий. Если вы хотите использовать, например, Enterprise Edition, достаточно выбрать её через вкладку «Добавить источник», ввести лицензионный ключ и сохранить — появится новый источник:
То же самое работает и для вашего приватного registry: вы также через вкладку «Добавить источник» указываете его параметры, и он становится доступен в интерфейсе.
Что делает установщик при добавлении источника? Он сканирует его и показывает в правой части экрана, какие версии DKP доступны на каких каналах обновлений. Когда вы выбираете конкретную версию DKP, интерфейс сразу отображает, какие версии Kubernetes она поддерживает. Этот выбор можно сделать прямо здесь.
Настройка инфраструктуры
Выбор инфраструктуры
У меня в интерфейсе уже настроены четыре площадки:
Первая — SSH-доступ на ВМ в Yandex Cloud
Вторая и четвертая — в Selectel
Третья — SSH-доступ на ВМ в DVP
Чтобы добавить новую площадку, нужно нажать на «Добавить инфраструктуру» и выбрать необходимую. Для существующих хостов надо вписать SSH-ключи и бастион, а для облачного доступа — параметры доступа в это облако.
Пока в интерфейсе представлены не все облака, которые поддерживает DKP, но мы постепенно добавляем новые интеграции.
Добавлю, что в установщике реализована логика проверки соответствия между редакцией и поддерживаемыми облачными провайдерами. Если вы попытаетесь выбрать облако, которое не поддерживается в выбранной редакции, интерфейс сразу покажет уведомление — и вы не сможете продолжить установку. Это помогает избежать ошибок на раннем этапе.
Итак, инфраструктура выбрана, доступ к API настроен. Теперь посмотрим, как настраивается облачный кластер.
Настройка облачного кластера
Я не буду погружаться во все детали — остановлюсь только на ключевых моментах. В конфигурации облачного кластера есть поле «Префикс» (или «Идентификатор кластера»):
Все ресурсы, которые установщик создаст в облаке, будут начинаться с указанного префикса. К таким ресурсам относятся ВМ, диски, балансировщики и другие объекты инфраструктуры. Это особенно удобно, если вы развёртываете несколько кластеров на одной облачной площадке: по префиксу будет легко понять, к какому кластеру принадлежат созданные в облаке ресурсы.
Настройка сети
Не будем сильно погружаться в параметры в блоке «Организация сети». Например, OpenStack — довольно комбинаторно сложный провайдер. Если вы впервые пробуете установить DKP, эти настройки можно смело пропустить — мы уже заполнили все рекомендованные значения за вас:
Дальше идёт выбор ресурсов, на которых будет работать кластер:
Здесь можно указать зоны доступности, типы хранилищ для master-узлов, а ниже — задать количество и конфигурацию узлов кластера. Обратите внимание: мы выбрали использование сетевых дисков для не-master-узлов, поэтому в списке «флейворов» (типов виртуальных машин) отображаются варианты из Selectel только с нулевым локальным диском — всё, что нужно, будет браться из сетевого хранилища.
Также здесь можно:
изменить количество узлов или задать диапазон для автоматического масштабирования отдельно для разных групп узлов — системных, для пользовательской нагрузки, для трафика;
увидеть под таблицей узлов, сколько ресурсов (CPU, RAM, диски) потребуется для создания кластера, чтобы заранее свериться со своими квотами в облаке.
Ещё два важных момента.
Во-первых, при создании кластера установщику потребуются SSH-ключи для доступа к хостам. Установщик может сгенерировать их автоматически — либо вы можете указать свой (на скриншоте выше: правый верхний угол экрана — «Доступ на узлы»). Если ключ сгенерирован, его приватную часть можно скачать прямо из интерфейса.
Во-вторых, в углу формы есть неприметная, но очень полезная кнопка — «Продвинутая конфигурация»:
Там находятся YAML-манифесты, которые установщик собрал за вас, чтобы вы не заполняли его вручную. Там всё: источник Deckhouse, SSH-ключ, настройки узлов и прочее.
Что с этим можно сделать?
Если вы пришли сюда только за тем, чтобы собрать конфигурацию, не вникая в детали, — просто скачайте архив с готовыми файлами.
Если же вы собираетесь развернуть кластер, то в этом разделе можно добавить свои настройки в файл custom.yaml или указать post-bootstrap-скрипт, который выполнится сразу после установки.
Конечно, внешний вид и состав этой формы будут отличаться в зависимости от облачного провайдера. Чтобы вы не запутались и не «выстрелили себе в ногу», мы разместили по интерфейсу множество подсказок и справок, — они помогут сделать всё правильно с первого раза.
Запуск установки
Я уже настроил кластер, выбрал инфраструктуру и параметры, запустил установку. Остаётся только подождать. Установщик отображает текущие фазы установки, а при желании можно открыть лог и посмотреть подробности в реальном времени:
Итак, мы прошли все ключевые этапы: выбрали источник, настроили инфраструктуру и конфигурацию Deckhouse Kubernetes Platform, запустили установку.
Начало работы
Когда кластер установлен, в конце процесса вы видите экран с подтверждением: «Кластер установлен!»:
Там же можно подключиться по SSH, скачать приватный ключ или лог установки. Но, помимо SSH, есть и другой, более удобный способ начать работу.
Вы можете просто нажать «Подключиться и открыть» — и установщик откроет веб-интерфейс DKP, который будет подключён к Kubernetes API через SSH-соединение с master-узлом:
Это особенно ценно на старте: не нужно настраивать DNS, Ingress-контроллер или открывать порты — интерфейс доступен сразу, безопасно и без лишних телодвижений.
Этот веб-интерфейс входит в поставку DKP в модуле console. Он доступен во всех редакциях, и по умолчанию включается во всех кластерах с версии console 1.41 и версии DKP 1.72.
Однако важно понимать: веб-интерфейс, который вы видите через установщик, не требует, чтобы модуль console
был запущен в кластере. Это тот же интерфейс, но он работает независимо. Он подключается к кластеру через SSH-туннель напрямую без участия компонентов самого кластера.
Подключаем модуль виртуализации
Теперь я хочу отдельно показать, как из установленной Kubernetes-платформы получить полноценную платформу виртуализации.
Подсистема виртуализации поставляется модулем virtualization
:
Чтобы его включить, достаточно указать два обязательных параметра:
подсеть для виртуальных машин;
хранилище для дисков и ISO-образов.
Начнём с хранилища. У нас есть отдельная команда, которая занимается интеграцией с системами хранения. Поддерживается множество CSI-драйверов: YADRO TATLIN.UNIFIED, Ceph, Huawei, HP и другие. Для примера я воспользуюсь CSI-драйвером NFS. Если у вас нет внешней СХД, можно использовать LVM на хостах кластера — главное, чтобы какое-то хранилище было.
Что даёт включённый CSI-драйвер NFS? В разделе «Система» → «Классы хранилищ» появляется возможность настроить StorageClass на основе NFS:
Теперь — когда у нас есть хранилище — можно включить виртуализацию:
Выбираем StorageClass.
Указываем подсеть для виртуальных машин — главное, чтобы она не пересекалась с сетями подов, сервисов или узлов.
Вписываем, например, 192.168.100.0/24.
Сохраняем — и модуль
virtualization
начинает развёртываться.
Что даёт включённый модуль? Например, в разделе «Система» появляются пункты управления виртуализацией:
настройка конфигурации виртуализации;
классы виртуальных машин (по умолчанию создаётся generic);
кластерные образы дисков, доступные во всех проектах.
Также в разделе «Проекты» в меню над контейнеризацией появляется новая секция — «Виртуализация». В ней можно управлять виртуальными машинами, дисками и образами.
Что уже умеет установщик и что планируем добавить
Сейчас установщик поддерживает:
установку статических кластеров на готовые хосты;
интеграцию с облаками: Yandex Cloud, OpenStack и его вариации (Selectel, VK Cloud), а также VMware Cloud Director;
сценарии закрытого контура — вы можете использовать свой приватный registry;
экспорт YAML-манифестов до, после или вместо установки. Это значит, что установщик можно использовать как конструктор конфигурации, даже если вы не планируете развёртывать кластер прямо сейчас;
встроенный веб-интерфейс Deckhouse без ограничений. Поскольку установщик — это инструмент индивидуального использования, подключение к кластеру идёт с правами
kubernetes-admin
, а все функции администрирования доступны даже в Community Edition;работу на Windows, так как установщик распространяется как Docker-образ.
Что планируем внедрить:
поддержку облачных провайдеров: в ближайшее время появятся интеграции с нашей платформой виртуализации (DVP), VMware vSphere, zVirt и другими. Также мы сделаем установку DVP ещё более гладкой;
импортирование существующего кластера;
возможность параллельно работать в нескольких кластерах через встроенный веб-интерфейс;
установку без зависимости от Docker и внешнего registry — но пока Docker остаётся необходимым требованием.
Вместо заключения
Установщик доступен в разделе «Быстрый старт» официальной документации Deckhouse Kubernetes Platform — именно туда вы всё равно попадёте, когда будете искать руководство по установке. Там же вы найдёте ссылку на графический установщик.
Попробуйте — и обязательно расскажите, что думаете. Если что-то не получилось или возникли вопросы, пишите в наш Telegram-канал — всегда поможем.
P. S.
Читайте также в нашем блоге: