Я Руслан Никитенко, инженер отдела сервиса компании Тринити. Этот материал является продолжением обзорной статьи про установку сервиса Cloudlink на среду виртуализации zVirt у одного нашего крупного заказчика. Во второй части я хочу рассказать про инструментарий платформы, который мне показался наиболее интересным и полезным.
Интерфейс control-panel
Авторизация в «Интерфейс control-panel» доступна c учётной записью, созданной на этапе post-deploy. Необходимо ввести имя пользователя/e-mail, пароль и нажать на кнопку «Вход».
Администратор (глобальная роль Супер-администратор в control-panel) может:
настраивать права доступа, ресурсные правила в пространстве IAM и управление;
пополнять счета организаций в пространстве «Биллинг»;
управлять доступными для заказа на портале «Продуктами», настраивать их ограничения и действия в пространстве «Конструктор»;
настраивать подключение к платформам виртуализации и облачным провайдерам в разделе «Инфраструктура».
Переходим в https://control.clink.tesla-demo.local/infrastructure/inventory.
В раздел «Облака» добавляем нашу среду виртуализации zVirt:
![](https://habrastorage.org/getpro/habr/upload_files/bf5/13a/13f/bf513a13f58c3eb905010af594364bf3.png)
Сбор айтемов подразумевает сбор информации о дата-центрах, кластерах, доменах хранения и сетях.
Разведка VM – сбор информации о VM в среде виртуализации zVirt.
После добавления zVirt появится в списке облаков:
![](https://habrastorage.org/getpro/habr/upload_files/084/c76/88f/084c7688fd43f302de55e817f13d6eba.png)
Кликнув по «zVirt», мы можем посмотреть процесс сбора информации:
![](https://habrastorage.org/getpro/habr/upload_files/df8/76e/da8/df876eda8797d40bf81ae0e921a86917.png)
В разделе «Виртуальные машины» можно увидеть список VM, который отображается после выполнения настройки выше. Здесь мы можем перенести VM, созданную непосредственно из панели управления zVirt, в нужный нам проект платформы Cloudlink для дальнейшего учёта.
![](https://habrastorage.org/getpro/habr/upload_files/d56/885/1a5/d568851a5f2d769565e47533b059be9e.png)
В разделе «Конструктор» можно довольно гибко настраивать алгоритмы действий при создании/модификации/удалении тех или иных сервисов.
«Из коробки» мы получаем немалое количество преднастроенных графов, действий, шаблонов и пр.
![](https://habrastorage.org/getpro/habr/upload_files/a2f/889/c7e/a2f889c7ec7df5d7cb5252c555bde812.png)
Рассмотрим на примере графа «Создать ВМ CentOS8-test» структуру конфигурации:
в меню «Общая информация» у нас есть возможность работы с различными версиями. Это довольно удобно, особенно в режиме тестирования.
![](https://habrastorage.org/getpro/habr/upload_files/e9a/497/01b/e9a49701bce2a577321a546202fe2922.png)
в «Узлах» отображается информация в виде структурной схемы – видно, как будет создаваться тот или иной сервис или VM.
![](https://habrastorage.org/getpro/habr/upload_files/271/22a/9ec/27122a9ec9ca9be9a9a27cfdfd1a89e2.png)
Если нажать на «Редактирование», то увидим более подробную информацию:
![](https://habrastorage.org/getpro/habr/upload_files/d49/a45/12b/d49a4512b6ec4c3c0130e720373544d9.png)
![](https://habrastorage.org/getpro/habr/upload_files/23e/c1c/770/23ec1c77072568c34184bba72f318645.png)
в «Параметрах заказа» можно описать набор опций и действий при заказе сервиса или VM. Слева видим UI-отображение того, как это будет выглядеть в https://portal.clink.tesla-demo.local. Справа вкладки с JSON-описанием.
![](https://habrastorage.org/getpro/habr/upload_files/0e3/ae2/8b3/0e3ae28b3a63b466f42ddccb3997ce0b.png)
В «Модификаторы» можно выбрать тип среды для исполнения графа.
![](https://habrastorage.org/getpro/habr/upload_files/fd1/fbb/326/fd1fbb3262ee7983f37df65308369ee2.png)
в «Сравнении» оцениваем разницу в версиях графа.
![](https://habrastorage.org/getpro/habr/upload_files/1dc/9e2/1fa/1dc9e21fa57910be8620cd11a81ef04b.png)
Для просмотра того, в каких продуктах используется описанный граф, есть вкладка «Использование».
![](https://habrastorage.org/getpro/habr/upload_files/134/e29/9ff/134e299ffa9e0f4e3fbb78567d0f28ab.png)
В процессе создания продуктов и графов могут быть использованы однотипные совокупности операций или «Действия». Например: создание пользователя, создание или удаление БД, изменение конфигурации ВМ.
Совокупность доступных на платформе действий находится в меню «Конструктор» → «Действия».
Действия можно отфильтровать:
-
По типу – классифицирует действия в зависимости от ресурса (item-а), к которому они применимы (виртуальная машина, приложение):
vm
app
vdc
cluster
-
По провайдеру – платформа виртуализации, система оркестрации, база данных или контейнер, для которого доступно данное действие:
zvirt
nova
vsphere
openstack
kubernetes
и т. д.
По тегу.
Портал Cloudlink
После успешной авторизации рассмотрим продукты, доступные для заказа.
Базовые вычисления
![](https://habrastorage.org/getpro/habr/upload_files/e11/6a4/ed3/e116a4ed3a74d9b6e094f2fcab90de56.png)
На скриншоте выше я попробовал самостоятельно создать для заказа две дополнительные VM (в control-panel): Debian-test и CentOS8. Рассмотрим процесс заказа VM.
Необходимо задать имя VM, сеть, датацентр, платформу и HW-конфигурацию. При желании можем дополнительно смонтировать ещё один раздел и указываем SSH-ключ.
![](https://habrastorage.org/getpro/habr/upload_files/298/af0/944/298af09440f3cedea87c18b828078521.png)
![](https://habrastorage.org/getpro/habr/upload_files/d49/328/407/d49328407070ac03975d3a47a07d2fc5.png)
После нажатия кнопки «Заказать», мы видим процесс деплоя VM:
![](https://habrastorage.org/getpro/habr/upload_files/b93/367/f14/b93367f149b05727a9f602ef4d9ed9ec.png)
Мы также можем нажать на иконку «Часы» в статусе для оценки происходящих процессов:
![](https://habrastorage.org/getpro/habr/upload_files/1fc/582/b64/1fc582b64b22bf6e5ba23f09c4c6c5c9.png)
А если перейти по иконкам в «Просмотр», то можем увидеть более подробные статусы деплоя:
![](https://habrastorage.org/getpro/habr/upload_files/b70/efd/7d5/b70efd7d5e7b536e98743810a35482e2.png)
![](https://habrastorage.org/getpro/habr/upload_files/45d/223/c7c/45d223c7c62ad725a559c3d0be57fffe.png)
Для нашей VM был специально выбран образ системы, имеющий некоторые специфичные настройки, и в результате деплоя мы умышленно получили ошибку:
![](https://habrastorage.org/getpro/habr/upload_files/486/e81/8d5/486e818d5ace6fb47a2f62530fad63a3.png)
Для более углублённого поиска ошибок при деплое можно воспользоваться ресурсом https://awx.clink.tesla-demo.local
![](https://habrastorage.org/getpro/habr/upload_files/ed4/fad/0db/ed4fad0dbecc97491b699a6e89808bdc.png)
Чтобы узнать пароль для входа, следует выполнить команду на target хосте:
sudo kubectl -n portal-box get secret awx-admin-password -o jsonpath='{.data.password}' | base64 -d && echo ''
После авторизации нас интересует вкладка «Jobs»:
![](https://habrastorage.org/getpro/habr/upload_files/b25/702/d64/b25702d648b800817e31d7cb6cd58989.png)
Лог задачи 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 мы получаем «зелёный» статус:
![](https://habrastorage.org/getpro/habr/upload_files/909/be9/95e/909be995e174bb79fa40d1289f8b725c.png)
А в zVirt это будет выглядеть так:
![](https://habrastorage.org/getpro/habr/upload_files/922/c58/53d/922c5853d86203235aeb8cde27b007cf.png)
Базы данных
Cloudlink имеет преднастроенные шаблоны базы данных, такие как ClickHouse, Elasticsearch, MongoDB, MySQL, PostgreSQL, Redis.
![](https://habrastorage.org/getpro/habr/upload_files/33b/abe/872/33babe8723234843bbfe3fe9f41a703e.png)
Рассмотрим деплой на базе PostgreSQL.
Необходимо задать:
пароль пользователя;
имя VM;
сеть;
датацентр;
платформу;
HW-конфигурацию;
шаблон ОС, на которой будет работать база;
при необходимости смонтировать дополнительный раздел.
![](https://habrastorage.org/getpro/habr/upload_files/a80/ac5/1a7/a80ac51a7a8ddfdfbf2aa89a34f74eeb.png)
![](https://habrastorage.org/getpro/habr/upload_files/27d/3a5/551/27d3a5551788f84bce7a5cf8d5327d82.png)
После успешного деплоя видим «зелёный» статус:
![](https://habrastorage.org/getpro/habr/upload_files/e1c/182/b15/e1c182b15dcaedf5fa1859dd2a440dfc.png)
![](https://habrastorage.org/getpro/habr/upload_files/377/fe5/9e4/377fe59e43eb7889b3de77265ee0c744.png)
Web-приложения
Cloudlink имеет преднастроенные шаблоны web-приложений, таких как Nginx, WildFly и zVirt.
![](https://habrastorage.org/getpro/habr/upload_files/1e9/f4a/e65/1e9f4ae65596ddd9115a7cc1691a6c8c.png)
Рассмотрим деплой web-сервиса Nginx.
Необходимо задать:
пароль пользователя;
имя VM;
сеть;
датацентр;
платформу;
HW-конфигурацию;
шаблон ОС, на которой будет работать база;
при необходимости смонтировать дополнительный раздел.
В отличии от предыдущего развёртывания БД на базе ОС Ubuntu, в этот раз попробуем использовать RedOS.
![](https://habrastorage.org/getpro/habr/upload_files/d5d/e2c/124/d5de2c124aea0570f00a13bf280f74d7.png)
![](https://habrastorage.org/getpro/habr/upload_files/ea9/89f/2ad/ea989f2ad6a0754c545f237454a7e542.png)
После успешного деплоя видим «зелёный» статус:
![](https://habrastorage.org/getpro/habr/upload_files/816/c79/661/816c79661c8983ca4d09c3f1c3a94524.png)
![](https://habrastorage.org/getpro/habr/upload_files/13f/0f6/08e/13f0f608e36b2d4659bc4c113a99c328.png)
Контейнеры
При выборе заказа из категории «Контейнеры» нам предлагается на выбор Kubernates cluster и Nova Cluster.
![](https://habrastorage.org/getpro/habr/upload_files/3cc/de8/977/3ccde89778b92b1a70c7672477328429.png)
Kubernates cluster
Рассмотрим процесс заказа Kubernates cluster.
Нам необходимо указать:
имя кластера;
сеть;
дата-центр;
платформу;
образ ОС (в данном случае Ubuntu);
настроить параметры HW и размер хранилища для master;
настроить количество workers и параметры HW с размером хранилища;
указать SSH-ключ.
![](https://habrastorage.org/getpro/habr/upload_files/9d3/d24/f82/9d3d24f82ac9c49ac8c51d943e6d9982.png)
![](https://habrastorage.org/getpro/habr/upload_files/8f2/766/962/8f27669623cdd259297b55ad77e8cedd.png)
В панели управления zVirt это будет выглядеть таким образом:
![](https://habrastorage.org/getpro/habr/upload_files/947/05e/3bb/94705e3bb073c08cbe421ca053d81721.png)
После успешного деплоя видим статусы успешного запуска:
![](https://habrastorage.org/getpro/habr/upload_files/70d/ddd/39d/70dddd39db5fc64e02329226fc3f8870.png)
![](https://habrastorage.org/getpro/habr/upload_files/9ee/41c/636/9ee41c6365c925f854f41f67ebae3198.png)
Если перейти в какой-либо инстанс кластера, то можем увидеть дополнительную информацию. Рассмотрим на примере worker №1:
![](https://habrastorage.org/getpro/habr/upload_files/5b7/4d8/4dd/5b74d84ddb6387c0332ea32277a0f4b9.png)
Nova cluster
Рассмотрим процесс заказа Nova cluster.
Нам необходимо указать:
имя кластера;
сеть;
дата-центр;
платформу;
образ ОС (в данном случае RedOS);
настроить параметры HW и размер хранилища для master;
настроить количество workers и параметры HW с размером хранилища;
указать SSH-ключ;
базовый домен (внутренний) и базовый домен (публичный).
Важно! При указании базового домена, как внутреннего, так и внешнего, стоит указывать доменное имя, отличное от того, которое мы настраивали для universe. Иначе в процессе деплоя мы можем столкнуться с конфликтом DNS-имён.
![](https://habrastorage.org/getpro/habr/upload_files/955/d4c/702/955d4c702183133495d36cc6875b4d18.png)
![](https://habrastorage.org/getpro/habr/upload_files/d87/1bf/ab5/d871bfab5817b2499a7a7c2be9f69db9.png)
В панели управления zVirt это будет выглядеть таким образом:
![](https://habrastorage.org/getpro/habr/upload_files/341/aec/88b/341aec88b202dff4fbe47aaf8fac69d9.png)
После успешного деплоя можем увидеть статус запуска:
![](https://habrastorage.org/getpro/habr/upload_files/5fe/88e/055/5fe88e055f916d4f6f0aa68fbe977dbb.png)
![](https://habrastorage.org/getpro/habr/upload_files/327/9ef/482/3279ef48242c0ec8cf93e4e4646d7947.png)
Заключение
Следующим шагом в моей работе было применение полученных знаний и наработок при внедрении платформы у конечного заказчика. Благодаря предварительному тестированию я смог не только эффективно адаптировать Cloudlink под специфические потребности заказчика, но и минимизировать риски, связанные с возможными проблемами в процессе эксплуатации системы. Это внедрение позволило увидеть реальную картину использования Cloudlink в бизнес-процессах и дало нашей команде ценный опыт для дальнейших проектов.
Надеюсь, этот материал будет кому-то полезен. Задавайте ваши вопросы в комментариях, пожалуйста.