Я Руслан Никитенко, инженер отдела сервиса компании Тринити. Этот материал является продолжением обзорной статьи про установку сервиса Cloudlink на среду виртуализации zVirt у одного нашего крупного заказчика. Во второй части я хочу рассказать про инструментарий платформы, который мне показался наиболее интересным и полезным.
Интерфейс control-panel
Авторизация в «Интерфейс control-panel» доступна c учётной записью, созданной на этапе post-deploy. Необходимо ввести имя пользователя/e-mail, пароль и нажать на кнопку «Вход».
Администратор (глобальная роль Супер-администратор в control-panel) может:
настраивать права доступа, ресурсные правила в пространстве IAM и управление;
пополнять счета организаций в пространстве «Биллинг»;
управлять доступными для заказа на портале «Продуктами», настраивать их ограничения и действия в пространстве «Конструктор»;
настраивать подключение к платформам виртуализации и облачным провайдерам в разделе «Инфраструктура».
Переходим в https://control.clink.tesla-demo.local/infrastructure/inventory.
В раздел «Облака» добавляем нашу среду виртуализации zVirt:
Сбор айтемов подразумевает сбор информации о дата-центрах, кластерах, доменах хранения и сетях.
Разведка VM – сбор информации о VM в среде виртуализации zVirt.
После добавления zVirt появится в списке облаков:
Кликнув по «zVirt», мы можем посмотреть процесс сбора информации:
В разделе «Виртуальные машины» можно увидеть список VM, который отображается после выполнения настройки выше. Здесь мы можем перенести VM, созданную непосредственно из панели управления zVirt, в нужный нам проект платформы Cloudlink для дальнейшего учёта.
В разделе «Конструктор» можно довольно гибко настраивать алгоритмы действий при создании/модификации/удалении тех или иных сервисов.
«Из коробки» мы получаем немалое количество преднастроенных графов, действий, шаблонов и пр.
Рассмотрим на примере графа «Создать ВМ CentOS8-test» структуру конфигурации:
в меню «Общая информация» у нас есть возможность работы с различными версиями. Это довольно удобно, особенно в режиме тестирования.
в «Узлах» отображается информация в виде структурной схемы – видно, как будет создаваться тот или иной сервис или VM.
Если нажать на «Редактирование», то увидим более подробную информацию:
в «Параметрах заказа» можно описать набор опций и действий при заказе сервиса или VM. Слева видим UI-отображение того, как это будет выглядеть в https://portal.clink.tesla-demo.local. Справа вкладки с JSON-описанием.
В «Модификаторы» можно выбрать тип среды для исполнения графа.
в «Сравнении» оцениваем разницу в версиях графа.
Для просмотра того, в каких продуктах используется описанный граф, есть вкладка «Использование».
В процессе создания продуктов и графов могут быть использованы однотипные совокупности операций или «Действия». Например: создание пользователя, создание или удаление БД, изменение конфигурации ВМ.
Совокупность доступных на платформе действий находится в меню «Конструктор» → «Действия».
Действия можно отфильтровать:
-
По типу – классифицирует действия в зависимости от ресурса (item-а), к которому они применимы (виртуальная машина, приложение):
vm
app
vdc
cluster
-
По провайдеру – платформа виртуализации, система оркестрации, база данных или контейнер, для которого доступно данное действие:
zvirt
nova
vsphere
openstack
kubernetes
и т. д.
По тегу.
Портал Cloudlink
После успешной авторизации рассмотрим продукты, доступные для заказа.
Базовые вычисления
На скриншоте выше я попробовал самостоятельно создать для заказа две дополнительные VM (в control-panel): Debian-test и CentOS8. Рассмотрим процесс заказа VM.
Необходимо задать имя VM, сеть, датацентр, платформу и HW-конфигурацию. При желании можем дополнительно смонтировать ещё один раздел и указываем SSH-ключ.
После нажатия кнопки «Заказать», мы видим процесс деплоя VM:
Мы также можем нажать на иконку «Часы» в статусе для оценки происходящих процессов:
А если перейти по иконкам в «Просмотр», то можем увидеть более подробные статусы деплоя:
Для нашей VM был специально выбран образ системы, имеющий некоторые специфичные настройки, и в результате деплоя мы умышленно получили ошибку:
Для более углублённого поиска ошибок при деплое можно воспользоваться ресурсом https://awx.clink.tesla-demo.local
Чтобы узнать пароль для входа, следует выполнить команду на target хосте:
sudo kubectl -n portal-box get secret awx-admin-password -o jsonpath='{.data.password}' | base64 -d && echo ''
После авторизации нас интересует вкладка «Jobs»:
Лог задачи 1443 — first-logon, соответствующей нашему деплою centos8-test-006, достаточно объёмный. В ознакомительных целях его окончание на моменте возникновения ошибки выглядит так:
ok: [centos8-test-006] => {
"ansible_device_links": {
"ids": {
"dm-10": [
"dm-name-znn-tmp",
"dm-uuid-LVM-RetaGnwWe2ZHlxocoGGqS70u79KJ7m00bImDi6VStp8QAztGI0uQ1QtZro2oI0nG"
],
"dm-11": [
"dm-name-znn-home",
"dm-uuid-LVM-RetaGnwWe2ZHlxocoGGqS70u79KJ7m00twW2Dr1bgCA9TdI1G1Y2UicfCdxgE5jr"
],
"dm-3": [
"dm-name-znn-zvirt--node--ng--3.3--0.20230822.0+1",
"dm-uuid-LVM-RetaGnwWe2ZHlxocoGGqS70u79KJ7m00z6f2RZ32aWbyqTtlc3QKs5c4J3XMjF48"
],
"dm-4": [
"dm-name-znn-swap",
"dm-uuid-LVM-RetaGnwWe2ZHlxocoGGqS70u79KJ7m00rRMbVE8cIr0djMCH2vTzpw60yEvl2v4e"
],
…
TASK [linux_disk : Run vgscan to update the LVM cache] *************************
changed: [centos8-test-006]
TASK [linux_disk : Create a volume group with specific PE size] ****************
fatal: [centos8-test-006]: FAILED! => {"changed": true, "cmd": ["vgcreate", "-s", "4m", "vg_01", "/dev/sdb"], "delta": "0:00:00.035718", "end": "2024-06-13 15:41:33.527445", "msg": "non-zero return code", "rc": 5, "start": "2024-06-13 15:41:33.491727", "stderr": " Cannot use /dev/sdb: device is rejected by filter config\n Command requires all devices to be found.", "stderr_lines": [" Cannot use /dev/sdb: device is rejected by filter config", " Command requires all devices to be found."], "stdout": "", "stdout_lines": []}
PLAY RECAP *********************************************************************
centos8-test-006 : ok=32 changed=8 unreachable=0 failed=1 skipped=14 rescued=0 ignored=3
В случае успешного создания VM мы получаем «зелёный» статус:
А в zVirt это будет выглядеть так:
Базы данных
Cloudlink имеет преднастроенные шаблоны базы данных, такие как ClickHouse, Elasticsearch, MongoDB, MySQL, PostgreSQL, Redis.
Рассмотрим деплой на базе PostgreSQL.
Необходимо задать:
пароль пользователя;
имя VM;
сеть;
датацентр;
платформу;
HW-конфигурацию;
шаблон ОС, на которой будет работать база;
при необходимости смонтировать дополнительный раздел.
После успешного деплоя видим «зелёный» статус:
Web-приложения
Cloudlink имеет преднастроенные шаблоны web-приложений, таких как Nginx, WildFly и zVirt.
Рассмотрим деплой web-сервиса Nginx.
Необходимо задать:
пароль пользователя;
имя VM;
сеть;
датацентр;
платформу;
HW-конфигурацию;
шаблон ОС, на которой будет работать база;
при необходимости смонтировать дополнительный раздел.
В отличии от предыдущего развёртывания БД на базе ОС Ubuntu, в этот раз попробуем использовать RedOS.
После успешного деплоя видим «зелёный» статус:
Контейнеры
При выборе заказа из категории «Контейнеры» нам предлагается на выбор Kubernates cluster и Nova Cluster.
Kubernates cluster
Рассмотрим процесс заказа Kubernates cluster.
Нам необходимо указать:
имя кластера;
сеть;
дата-центр;
платформу;
образ ОС (в данном случае Ubuntu);
настроить параметры HW и размер хранилища для master;
настроить количество workers и параметры HW с размером хранилища;
указать SSH-ключ.
В панели управления zVirt это будет выглядеть таким образом:
После успешного деплоя видим статусы успешного запуска:
Если перейти в какой-либо инстанс кластера, то можем увидеть дополнительную информацию. Рассмотрим на примере worker №1:
Nova cluster
Рассмотрим процесс заказа Nova cluster.
Нам необходимо указать:
имя кластера;
сеть;
дата-центр;
платформу;
образ ОС (в данном случае RedOS);
настроить параметры HW и размер хранилища для master;
настроить количество workers и параметры HW с размером хранилища;
указать SSH-ключ;
базовый домен (внутренний) и базовый домен (публичный).
Важно! При указании базового домена, как внутреннего, так и внешнего, стоит указывать доменное имя, отличное от того, которое мы настраивали для universe. Иначе в процессе деплоя мы можем столкнуться с конфликтом DNS-имён.
В панели управления zVirt это будет выглядеть таким образом:
После успешного деплоя можем увидеть статус запуска:
Заключение
Следующим шагом в моей работе было применение полученных знаний и наработок при внедрении платформы у конечного заказчика. Благодаря предварительному тестированию я смог не только эффективно адаптировать Cloudlink под специфические потребности заказчика, но и минимизировать риски, связанные с возможными проблемами в процессе эксплуатации системы. Это внедрение позволило увидеть реальную картину использования Cloudlink в бизнес-процессах и дало нашей команде ценный опыт для дальнейших проектов.
Надеюсь, этот материал будет кому-то полезен. Задавайте ваши вопросы в комментариях, пожалуйста.