Cloudlink. Умное управление облачной инфраструктурой. Часть 2: возможности платформы с наглядными примерами

Я Руслан Никитенко, инженер отдела сервиса компании Тринити.Этот материал является продолжением обзорной статьи проустановку сервиса Cloudlink на среду виртуализации zVirt у одного нашего крупного заказчика. Во второй части я хочу рассказать про инструментарий платформы, который мне показался наиболее интересным и полезным. 

Интерфейс control-panel

Авторизация в «Интерфейс control-panel» доступна c учётной записью, созданной на этапе post-deploy. Необходимо ввести имя пользователя/e-mail, пароль и нажать на кнопку «Вход».

Администратор (глобальная роль Супер-администратор в control-panel) может:

  • настраивать права доступа, ресурсные правила в пространстве IAM и управление;

  • пополнять счета организаций в пространстве «Биллинг»;

  • управлять доступными для заказа на портале «Продуктами», настраивать их ограничения и действия в пространстве «Конструктор»;

  • настраивать подключение к платформам виртуализации и облачным провайдерам в разделе «Инфраструктура».

Переходим в https://control.clink.tesla-demo.local/infrastructure/inventory. 

В раздел «Облака» добавляем нашу среду виртуализации zVirt:

bf513a13f58c3eb905010af594364bf3.png

  • Сбор айтемов подразумевает сбор информации о дата-центрах, кластерах, доменах хранения и сетях.

  • Разведка VM — сбор информации о VM в среде виртуализации zVirt.


После добавления zVirt появится в списке облаков:

084c7688fd43f302de55e817f13d6eba.png

Кликнув по «zVirt», мы можем посмотреть процесс сбора информации:

df876eda8797d40bf81ae0e921a86917.png

В разделе «Виртуальные машины» можно увидеть список VM, который отображается после выполнения настройки выше. Здесь мы можем перенести VM, созданную непосредственно из панели управления zVirt, в нужный нам проект платформы Cloudlink для дальнейшего учёта.

d568851a5f2d769565e47533b059be9e.png

В разделе «Конструктор» можно довольно гибко настраивать алгоритмы действий при создании/модификации/удалении тех или иных сервисов.

«Из коробки» мы получаем немалое количество преднастроенных графов, действий, шаблонов и пр. 

a2f889c7ec7df5d7cb5252c555bde812.png

Рассмотрим на примере графа «Создать ВМ CentOS8-test» структуру конфигурации:

  • в меню «Общая информация» у нас есть возможность работы с различными версиями. Это довольно удобно, особенно в режиме тестирования.

e9a49701bce2a577321a546202fe2922.png

  • в «Узлах» отображается информация в виде структурной схемы — видно, как будет создаваться тот или иной сервис или VM. 

27122a9ec9ca9be9a9a27cfdfd1a89e2.png

Если нажать на «Редактирование», то увидим более подробную информацию:

d49a4512b6ec4c3c0130e720373544d9.png23ec1c77072568c34184bba72f318645.png

  • в «Параметрах заказа» можно описать набор опций и действий при заказе сервиса или VM. Слева видим UI-отображение того, как это будет выглядеть в https://portal.clink.tesla-demo.local. Справа вкладки с JSON-описанием.

0e3ae28b3a63b466f42ddccb3997ce0b.pngfd1fbb3262ee7983f37df65308369ee2.png1dc9e21fa57910be8620cd11a81ef04b.png

  • Для просмотра того, в каких продуктах используется описанный граф, есть вкладка «Использование».

134e299ffa9e0f4e3fbb78567d0f28ab.png


В процессе создания продуктов и графов могут быть использованы однотипные совокупности операций или «Действия». Например: создание пользователя, создание или удаление БД, изменение конфигурации ВМ.

Совокупность доступных на платформе действий находится в меню «Конструктор» → «Действия».

Действия можно отфильтровать:

  • По типу — классифицирует действия в зависимости от ресурса (item-а), к которому они применимы (виртуальная машина, приложение):

    1. vm

    2. app

    3. vdc

    4. cluster

  • По провайдеру — платформа виртуализации, система оркестрации, база данных или контейнер, для которого доступно данное действие:

    1. zvirt

    2. nova

    3. vsphere

    4. openstack

    5. kubernetes

    6. и т. д.

  • По тегу.

Портал Cloudlink

После успешной авторизации рассмотрим продукты, доступные для заказа.

Базовые вычисления

e116a4ed3a74d9b6e094f2fcab90de56.png

На скриншоте выше я попробовал самостоятельно создать для заказа две дополнительные VM (в control-panel): Debian-test и CentOS8. Рассмотрим процесс заказа VM.

Необходимо задать имя VM, сеть, датацентр, платформу и HW-конфигурацию. При желании можем дополнительно смонтировать ещё один раздел и указываем SSH-ключ.

298af09440f3cedea87c18b828078521.pngd49328407070ac03975d3a47a07d2fc5.png

После нажатия кнопки «Заказать», мы видим процесс деплоя VM:

b93367f149b05727a9f602ef4d9ed9ec.png

Мы также можем нажать на иконку «Часы» в статусе для оценки происходящих процессов:

1fc582b64b22bf6e5ba23f09c4c6c5c9.png

А если перейти по иконкам в «Просмотр», то можем увидеть более подробные статусы деплоя:

b70efd7d5e7b536e98743810a35482e2.png45d223c7c62ad725a559c3d0be57fffe.png

Для нашей VM был специально выбран образ системы, имеющий некоторые специфичные настройки, и в результате деплоя мы умышленно получили ошибку:  

486e818d5ace6fb47a2f62530fad63a3.png

Для более углублённого поиска ошибок при деплое можно воспользоваться ресурсом https://awx.clink.tesla-demo.local

ed4fad0dbecc97491b699a6e89808bdc.png

 Чтобы узнать пароль для входа, следует выполнить команду на target хосте:

sudo kubectl -n portal-box get secret awx-admin-password -o jsonpath='{.data.password}' | base64 -d && echo ''

После авторизации нас интересует вкладка «Jobs»:

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 мы получаем «зелёный» статус:

909be995e174bb79fa40d1289f8b725c.png

А в zVirt это будет выглядеть так:

922c5853d86203235aeb8cde27b007cf.png

Базы данных

Cloudlink имеет преднастроенные шаблоны базы данных, такие как ClickHouse, Elasticsearch, MongoDB, MySQL, PostgreSQL, Redis.

33babe8723234843bbfe3fe9f41a703e.png

Рассмотрим деплой на базе PostgreSQL.

Необходимо задать:  

  • пароль пользователя;  

  • имя VM;

  • сеть;  

  • датацентр;  

  • платформу;  

  • HW-конфигурацию;  

  • шаблон ОС, на которой будет работать база;  

  • при необходимости смонтировать дополнительный раздел.

a80ac51a7a8ddfdfbf2aa89a34f74eeb.png27d3a5551788f84bce7a5cf8d5327d82.png

После успешного деплоя видим «зелёный» статус:

e1c182b15dcaedf5fa1859dd2a440dfc.png377fe59e43eb7889b3de77265ee0c744.png

Web-приложения

Cloudlink имеет преднастроенные шаблоны web-приложений, таких как Nginx, WildFly и zVirt. 

1e9f4ae65596ddd9115a7cc1691a6c8c.png

Рассмотрим деплой web-сервиса Nginx.

Необходимо задать:

  • пароль пользователя;  

  • имя VM;

  • сеть;  

  • датацентр;  

  • платформу;  

  • HW-конфигурацию;  

  • шаблон ОС, на которой будет работать база;  

  • при необходимости смонтировать дополнительный раздел.

В отличии от предыдущего развёртывания БД на базе ОС Ubuntu, в этот раз попробуем использовать RedOS.

d5de2c124aea0570f00a13bf280f74d7.pngea989f2ad6a0754c545f237454a7e542.png

После успешного деплоя видим «зелёный» статус:

816c79661c8983ca4d09c3f1c3a94524.png13f0f608e36b2d4659bc4c113a99c328.png

Контейнеры

При выборе заказа из категории «Контейнеры» нам предлагается на выбор Kubernates cluster и Nova Cluster.

3ccde89778b92b1a70c7672477328429.png

Kubernates cluster

Рассмотрим процесс заказа Kubernates cluster.

Нам необходимо указать:

  • имя кластера;

  • сеть;  

  • дата-центр;  

  • платформу;  

  • образ ОС (в данном случае Ubuntu);  

  • настроить параметры HW и размер хранилища для master;  

  • настроить количество workers и параметры HW с размером хранилища;  

  • указать SSH-ключ.

9d3d24f82ac9c49ac8c51d943e6d9982.png8f27669623cdd259297b55ad77e8cedd.png

В панели управления zVirt это будет выглядеть таким образом:

94705e3bb073c08cbe421ca053d81721.png

После успешного деплоя видим статусы успешного запуска:

70dddd39db5fc64e02329226fc3f8870.png9ee41c6365c925f854f41f67ebae3198.png

Если перейти в какой-либо инстанс кластера, то можем увидеть дополнительную информацию. Рассмотрим на примере worker №1:

5b74d84ddb6387c0332ea32277a0f4b9.png

Nova cluster

Рассмотрим процесс заказа Nova cluster.

Нам необходимо указать:

  • имя кластера;  

  • сеть;

  • дата-центр;  

  • платформу;  

  • образ ОС (в данном случае RedOS);  

  • настроить параметры HW и размер хранилища для master;  

  • настроить количество workers и параметры HW с размером хранилища;  

  • указать SSH-ключ;  

  • базовый домен (внутренний) и базовый домен (публичный).

Важно! При указании базового домена, как внутреннего, так и внешнего, стоит указывать доменное имя, отличное от того, которое мы настраивали для universe. Иначе в процессе деплоя мы можем столкнуться с конфликтом DNS-имён.

955d4c702183133495d36cc6875b4d18.pngd871bfab5817b2499a7a7c2be9f69db9.png

В панели управления zVirt это будет выглядеть таким образом:

341aec88b202dff4fbe47aaf8fac69d9.png

После успешного деплоя можем увидеть статус запуска:

5fe88e055f916d4f6f0aa68fbe977dbb.png3279ef48242c0ec8cf93e4e4646d7947.png

Заключение

Следующим шагом в моей работе было применение полученных знаний и наработок при внедрении платформы у конечного заказчика. Благодаря предварительному тестированию я смог не только эффективно адаптировать Cloudlink под специфические потребности заказчика, но и минимизировать риски, связанные с возможными проблемами в процессе эксплуатации системы. Это внедрение позволило увидеть реальную картину использования Cloudlink в бизнес-процессах и дало нашей команде ценный опыт для дальнейших проектов. 

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

© Habrahabr.ru