Платформу Deckhouse можно устанавливать на виртуальные машины облачных провайдеров, на bare metal-серверы, в закрытый контур и не только. В статье рассмотрим вариант установки Deckhouse в Yandex Cloud. А чтобы убедиться, что все внутренние ресурсы и компоненты работают как надо, заглянем в веб-интерфейсы платформы, в том числе Grafana и Kubernetes Dashboard. Deckhouse — это Open Source-решение для автоматизации обслуживания кластеров Kubernetes. В основе платформы лежат upstream-версия Kubernetes и компоненты с открытым кодом, которые признаны стандартами в cloud native-экосистеме. Платформа связывает их между собой и предоставляет всё необходимое для production-окружений, сводя к минимуму ручные манипуляции. В Deckhouse включены такие инструменты, как CoreDNS, cert-manager, Ingress NGINX Controller, Prometheus + Grafana, dex, Istio, Cilium. С подробным списком можно ознакомиться в документации. На основе этих проектов подготовлены соответствующие модули платформы, с помощью которых пользователь может подключить и настроить необходимый инструмент. Конфигурации всех модулей интегрированы друг с другом, что позволяет отдавать на откуп Deckhouse многие рутинные задачи по администрированию кластера. Модули обновляются регулярно и автоматически. Для установки Deckhouse вам потребуются: ПК с Linux (Ubuntu 18.04+, Fedora 35+), macOS 10.15+ или Windows 10+. Docker (инструкции по установке: Ubuntu, macOS, Windows). HTTPS-доступ к хранилищу контейнеров registry.deckhouse.io. Доступ к API Yandex Cloud. Учетная запись с правами на создание ресурсов. Установленная и настроенная утилита Yandex Cloud (CLI). Инсталлятор Deckhouse, запущенный на вашей машине, подключится к API Yandex Cloud и создаст один master-узел и один worker-узел. Рекомендованные минимальные характеристики узлов: 4 ядра CPU; 8 Гб RAM; 40 Гб дискового пространства. Поддерживаемые версии ОС для узлов: РЕД ОС 7.3; AlterOS 7; Astra Linux Special Edition 1.7; CentOS 7, 8, 9; Debian 9, 10, 11; Ubuntu 16.04, 18.04, 20.04, 22.04. Перед тем, как устанавливать Deckhouse в облако, нужно подготовить ваш аккаунт.  Если вы уже работали с облаком, и у вас есть все необходимое, этот раздел можно пропустить. Переходим на сайт Yandex Cloud и нажимаем на кнопку Подключиться в правом верхнем углу страницы: Для этого нужно залогиниться в Yandex Cloud либо создать новый аккаунт, если у вас его нет. Далее необходимо настроить вашу организацию и выбрать название для будущего облака: Указываем необходимые данные и нажимаем Создать. Через некоторое время облако будет создано, и вы окажетесь на главной странице дашборда. На ней собраны основные настройки и параметры ваших облачных сервисов: У одного аккаунта может быть несколько облаков, их список отображен в левой части главного экрана. Сейчас там только созданное облако. Многие услуги Yandex Cloud платные. Поэтому к облаку должен быть подключен платежный аккаунт, о чем предупреждает всплывающее в верхней части дашборда уведомление. Чуть ниже на главной странице — список всех сервисов, которые доступны для развертывания в облаке: Создать любой их них можно прямо из интерфейса дашборда, нажав Создать ресурс в правом верхнем углу экрана, а также с помощью консольной утилиты Yandex Cloud (CLI): Все необходимые действия по созданию виртуальных машин Deckhouse выполнит за вас, для этого он использует CLI Yandex Cloud. Для нее необходимо настроить доступ в новое облако. Установите утилиту по официальной инструкции. Все описываемые команды актуальны для UNIX-подобных операционных систем, в частности для macOS Monterey. Для Windows команды могут немного отличаться (они упомянуты в Getting Started Deckhouse). Далее нужно получить токен авторизации в вашем аккаунте. Для этого перейдите по ссылке (при этом нужно быть авторизованным в браузере в вашем облаке). На открывшейся странице будет только одна строка — ваш токен: Запишите его или оставьте страницу открытой. Выполните команду yc init и введите полученный ранее токен: Теперь нужно выбрать облако, с которым будете работать: И затем — каталог: Далее нужно указать зону доступности; здесь можно выбрать вариант 4: Проверьте, что все настроено как нужно, с помощью команды: Утилита установлена и готова к работе с вашим облаком. После того, как облако создано и доступ к нему настроен, можно переходить к установке Deckhouse. Для развертывания кластера будет использоваться схема размещения узлов в облаке без использования NAT. В этой схеме IP-адреса всех машин в кластере публичные и свободно доступны из интернета. Подробную информацию о возможностях работы с Yandex Cloud можно получить в документации к модулю cloud-provider-yandex. Для того, чтобы Deckhouse смог работать с облаком, необходимо создать сервисный аккаунт с правами на редактирование. Сделать это можно как средствами админки Yandex Cloud, так и из консоли. Мы пойдем вторым путем: Здесь мы создаем нового пользователя с именем habr. В ответ нам возвращаются его параметры: ID пользователя, ID доступного каталога, дата и время создания, а также имя. Убедиться, что все прошло как нужно, можно в панели управления, перейдя во вкладку Сервисные аккаунты. В таблице должен появиться новый пользователь: Далее выдадим новому пользователю права с ролью editor: Новая роль также появится в панели: Теперь создадим JSON-файл с параметрами авторизации, который в дальнейшем будет использоваться для входа в облако: Файл создан. Теперь можно устанавливать Deckhouse! Переходим на следующую страницу «Быстрого старта». Здесь нужно выбрать Community-(CE) или Enterprise-версию (EE) Deckhouse. Их отличия: Enterprise-версия доступна только при наличии лицензионного ключа*. Мы рассмотрим пример с бесплатной CE-редакцией. Поэтому оставляем выбор по умолчанию: Чтобы оценить всю функциональность Deckhouse, можно протестировать Enterprise-версию в триальном режиме в течение 30 дней. Теперь необходимо сгенерировать два файла с настройками, которые будут использоваться для развертывания кластера: config.yml — файл первичной конфигурации кластера. Содержит параметры инсталлятора, параметры доступа облачного провайдера и начальные параметры кластера. resources.yml — настройки узлов и Ingress-контроллера. Рассмотрим их подробнее. Файл config.yml: Здесь нужно обратить внимание на поля cloudID, folderID, serviceAccountJSON и sshPublicKey. Введите туда нужные данные и сохраните файл вместе с уже сгенерированным JSON-файлом с конфигурацией доступа в Yandex Cloud (удобнее всего это сделать в отдельном каталоге). Получить значения cloudID и folderID можно командой yc config list, а содержимое публичной части вашего SSH-ключа — командой cat ~/.ssh/id_rsa.pub. Файл resources.yml: В последней строке необходимо указать хэш пароля, который вы хотите использовать для доступа в кластер. Для этого нужно придумать сам пароль, а затем сгенерировать его хэш-сумму.  Сгенерировать новый пароль можно любым удобным способом — например, так: Теперь посчитаем его хэш-сумму: Вставляем хэш созданного пароля в поле password, затем сохраняем файл с нужным именем и помещаем рядом с предыдущими двумя файлами: Для установки Deckhouse Platform используется Docker-образ, в который необходимо передать конфигурационные файлы и SSH-ключи доступа на master-узел. Чтобы запустить установку, нужно выполнить команду из каталога с конфигурационными файлами: После того, как образ будет выкачан, откроется приглашение для работы внутри контейнера: Выполните команду: После этого запустится процесс развертывания кластера в облаке, который займет около 15 минут. В команде выше в параметре --ssh-user указывается имя пользователя для входа по SSH на создаваемые узлы. Оно должно соответствовать образу, который указан в config.yaml (ID образа). Для выбранного нами образа это пользователь ubuntu. В процессе установки в терминале будет отображаться полный лог всего, что происходит. В нем могут встречаться сообщения о warning'ах и error'ах, которые возникают из-за ожидания развертывания ресурсов на машинах. Это нормально, и не означает, что все сломалось. Завершится процесс установки новым приглашением ввести команду внутри контейнера. Также будет показан адрес master-узла, куда можно постучаться по SSH, чтобы попасть на созданную ВМ: Обратите внимание, что в каталоге, в котором хранятся созданные файлы конфигурации, появился каталог dhctl-tmp. Это временный каталог, в котором инсталлятор будет хранить состояние данных Terraform. Если вы по какой-то причине установку прервалась (проблемы с сетью, нехватка квот), просто перезапустите команду установки. Инсталлятор не создаст «дублирующих» объектов и продолжит процесс с прерванного места**. Если вы не можете продолжить установку и хотите очистить облако от созданных объектов, выполните команду в контейнере инсталлятора:  Две созданные ВМ можно увидеть в дашборде Yandex Cloud. Для этого перейдите в раздел Compute Cloud / Виртуальные машины: Итак, Deckhouse развернут. Осталось получить доступ к кластеру. В завершении установки инсталлятор показал IP-адрес master-узла. Можно подключиться к нему по SSH: Подключение должно выполниться сразу, так как публичная часть вашего SSH-ключа уже добавлена на все созданные узлы. Теперь на master-узле можно выполнять различные действия с кластером: Во время установки кластера был создан и настроен Ingress-контроллер. Он позволяет получать доступ к веб-интерфейсам Deckhouse: Grafana, Prometheus, Dashboard и так далее. LoadBalancer тоже уже готов, поэтому остается только направить на него доменные имена. Для этого необходимо настроить работу DNS и указать в параметрах Deckhouse шаблон DNS-имен.  Шаблон DNS-имен используется для настройки Ingress-ресурсов системных приложений. Например, имя grafana соответствует сервису Grafana. Поэтому для шаблона %s.kube.company.my Grafana будет доступна по адресу grafana.kube.company.my, и т. д. Для настройки доменных имен будет использован сервис sslip.io. Чтобы получить IP-адрес балансировщика и автоматически настроить доступ через sslip.io, выполните команду на master-узле: Полученный шаблон DNS-имен будет отображен после выполнения команды: Также можно настроить доступ с использованием существующего доменного имени, к регистрации поддоменов которого у вас есть доступ, или с использованием файла /etc/hosts. Подробнее об этом можно прочитать в Getting Started. Работать с кластером напрямую с master-узла из-под root-пользователя небезопасно. Поэтому рекомендуется настроить внешний доступ к нему с помощью kubectl на локальной машине. Для этого войдите в веб-интерфейс Kube Configurator; его адрес соответствует шаблону https://kubeconfig.1.2.3.4.sslip.io. Логин — admin@deckhouse.io, пароль —  w1ekkzbccr (если вы не меняли его в конфигурационных файлах). Выберите нужную ОС и следуйте дальнейшим инструкциям. Чтобы убедиться, что все получилось, выполните команду на вашей машине: Если вы видите список узлов развернутого кластера — доступ настроен. Кластер развернут. Deckhouse предоставляет несколько полезных веб-интерфейсов в составе кластера — для доступа к документации, мониторингу, Kubernetes Dashboard и контроля состояния кластера. По умолчанию доступ ко всем компонентам организован с помощью Dex, через статического пользователя, созданного в кластере во время установки. В кластер добавлен сервис, который позволяет получить доступ ко всей актуальной документации Deckhouse. Находится она по адресу https://deckhouse.1.2.3.4.sslip.io. Логин — admin@deckhouse.io, пароль —  w1ekkzbccr (если вы не меняли его в конфигурационных файлах). Таким образом, нужная документация для установленной версии платформы будет всегда под рукой. Дашборды Grafana доступны по адресу grafana. На главной странице можно увидеть общую информацию о развернутом кластере, а также ссылки на другие встроенные веб-интерфейсы: Для мониторинга ресурсов можно перейти по соответствующим ссылкам. Например, вот так выглядит мониторинг Ingress Nginx Controller'а: Для доступа к Prometheus напрямую можно перейти по ссылке /prometheus (либо прямо из интерфейса главной страницы Grafana): Kubernetes Dashboard доступен по адресу dashboard. Здесь собрана информация обо всех сущностях кластера и их состоянии: Состояние кластера и его компонентов можно посмотреть на странице, доступной по адресу status: Если вы хотите удалить развернутый в облаке кластер, простого удаления созданных виртуальных машин будет недостаточно. Запустите установочный образ Deckhouse, пробросив ему свой ключ SSH: Внутри образа выполните команду: Удаление может занять от 5 до 10 минут. В результате будут удалены все компоненты Deckhouse и сами виртуальные машины, развернутые в облаке на момент установки. Мы пошагово рассмотрели, как создать новое облако в Yandex Cloud и развернуть в нем Kubernetes-кластер под управлением платформы Deckhouse.  Эта статья основана на материалах раздела «Getting Started» на сайте Deckhouse. Более подробную информацию о настройке развернутого кластера можно получить в официальной документации (как на сайте, так и внутри развернутого кластера), где в соответствующих разделах собраны все необходимые инструкции по настройке компонентов кластера. С любыми вопросами и предложениями ждем вас в комментариях к статье, а также в Telegram-чате deckhouse_ru, где всегда готовы помочь. Будем рады issues (и, конечно, звёздам) в GitHub-репозитории Deckhouse. Полезные ссылки: Чат по Deckhouse, в котором на вопросы пользователей отвечают разработчики — если вдруг что-то пойдет не так или не получится.  Самоучитель по Kubernetes от команды werf для DevOps-инженеров и разработчиков с уроками по CI/CD созданию приложений и разворачиванию окружения с примерами для node.js, Spring, django, Python, Go, Ruby on Rails, Laravel. Читайте также в нашем блоге: «Kubernetes-платформа Deckhouse сертифицирована для работы с «Ред ОС», Astra Linux и AlterOS»; «Тернистый путь к eBPF, или Как мы Cilium в Deckhouse внедряли»; «Kubernetes-платформа Deckhouse зарегистрирована в Едином реестре российского ПО».  Technical writer, Linux-user