Интеграция с zVirt
Данный раздел содержит информацию по интеграции Nova Container Platform с zVirt. Раздел содержит следующие основные шаги:
1. Подготовка шаблонов виртуальных машин в среде zVirt
В данном разделе документации описывается подготовка виртуальной машины и создание из нее шаблона, который будет использоваться для развертывания всех виртуальных узлов кластера Nova Container Platform.
1.1. Создание виртуальной машины
Процесс создания виртуальной машины заключается в задании ее настроек (некоторые из них можно изменить позже) и последующей установке операционной системы.
-
Перейдите в веб-интерфейс менеджера управления zVirt.
-
Нажмите .
-
Нажмите Создать. Откроется окно Новая виртуальная машина.
-
Выберите Операционную систему из выпадающего списка.
-
Укажите Имя виртуальной машины.
-
Добавьте диск к виртуальной машине в разделе Виртуальные диски.
-
Нажмите Создать и укажите Размер (GiB) и Псевдоним нового виртуального диска. В остальных полях можно принять настройки по умолчанию или изменить их при необходимости.
-
Подключите виртуальную машину к сети. Добавьте сетевой интерфейс, выбрав vNIC-профиль в выпадающем списке nic1 внизу на вкладке Общее.
-
Задайте параметр Оперативная память (разделяемая) виртуальной машины на вкладке Система.
-
На вкладке Параметры загрузки выберите Первое устройство, которое виртуальная машина будет использовать для начальной загрузки.
-
На вкладке Запуск инициализации включите опцию Cloud-Init.
-
В остальных полях можно принять настройки по умолчанию или изменить их при необходимости.
-
Нажмите OK.
Новая виртуальная машина будет создана и отобразится в списке виртуальных машин в состоянии Выключено. Перед ее использованием необходимо установить операционную систему. Используйте операционную систему из списка поддерживаемых операционных систем.
1.2. Подготовка виртуальной машины
|
В ядре Linux обнаружена уязвимость Copy Fail (CVE-2026-31431). Перед настройкой ОС убедитесь, что установлена версия ядра с исправлением уязвимости. Подробнее об уязвимости и способе устранения см. в статье Copy Fail. |
-
Выполните шаги инструкции в зависимости от вашей ОС.
Astra Linux Special Edition 1.7
-
Добавьте репозитории для вашей версии ОС.
# Подставьте в переменные значения соответствующие вашей версии ОС # В данном примере используется версия 1.7.6.uu2 VERSION_BASE="1.7.6" UPDATE="2" sudo echo "deb https://dl.astralinux.ru/astra/frozen/1.7_x86-64/${VERSION_BASE}/uu/${UPDATE}/repository-main/ 1.7_x86-64 main contrib non-free" > /etc/apt/sources.list sudo echo "deb https://dl.astralinux.ru/astra/frozen/1.7_x86-64/${VERSION_BASE}/uu/${UPDATE}/repository-update/ 1.7_x86-64 main contrib non-free" >> /etc/apt/sources.list -
Обновите все пакеты ОС.
apt update -
Установите необходимые пакеты.
apt install -y cloud-init cloud-guest-utils curl network-manager -
Установите пакеты для системы виртуализации.
apt install -y qemu-guest-agent systemctl enable qemu-guest-agent
Astra Linux Special Edition 1.8
-
Добавьте репозитории для вашей версии ОС.
# Подставьте в переменные значения соответствующие вашей версии ОС # В данном примере используется версия 1.8.1.uu1 VERSION_BASE="1.8.1" UPDATE="1" sudo echo "deb https://dl.astralinux.ru/astra/frozen/1.8_x86-64/${VERSION_BASE}/uu/${UPDATE}/repository-main/ 1.8_x86-64 main non-free non-free-firmware contrib" > /etc/apt/sources.list sudo echo "deb https://dl.astralinux.ru/astra/frozen/1.8_x86-64/${VERSION_BASE}/uu/${UPDATE}/repository-extended/ 1.8_x86-64 main contrib non-free non-free-firmware" >> /etc/apt/sources.list -
Обновите все пакеты ОС.
apt update -
Установите необходимые пакеты.
apt install -y cloud-init cloud-guest-utils curl network-manager -
Установите пакеты для системы виртуализации.
apt install -y qemu-guest-agent systemctl enable qemu-guest-agent
РЕД ОС
-
Добавьте репозитории для вашей версии ОС.
sudo nano /etc/yum.repos.d/redos.repo[base] name=RedOS - Base baseurl=https://repo1.red-soft.ru/redos/7.3c/$basearch/os,https://mirror.yandex.ru/redos/7.3c/$basearch/os,http://repo.red-soft.ru/redos/7.3c/$basearch/os gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-RED-SOFT enabled=1 [updates] name=RedOS - Updates baseurl=https://repo1.red-soft.ru/redos/7.3c/$basearch/updates,https://mirror.yandex.ru/redos/7.3c/$basearch/updates,http://repo.red-soft.ru/redos/7.3c/$basearch/updates gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-RED-SOFT enabled=1 -
Обновите все пакеты ОС.
dnf update -y -
Установите необходимые пакеты.
dnf install -y cloud-init cloud-utils-growpart curl -
Установите пакеты для системы виртуализации.
dnf install -y qemu-guest-agent systemctl enable qemu-guest-agent -
Создайте каталог
/usr/lib/cloud-initи добавьте в него символическую ссылку наds-identifyиз/usr/libexec/cloud-init.sudo mkdir -p /usr/lib/cloud-init sudo ln -sf /usr/libexec/cloud-init/ds-identify /usr/lib/cloud-init/ds-identify
AlmaLinux 8.10 / 9.6 / 9.7
-
Обновите все пакеты ОС.
dnf update -y -
Установите необходимые пакеты.
dnf install -y cloud-init cloud-utils-growpart curl -
Установите пакеты для системы виртуализации.
dnf install -y qemu-guest-agent systemctl enable qemu-guest-agent
MosOS 15.5
-
Добавьте репозиторий
nano /etc/zypp/repos.d/repo-oss.repo[repo-oss] name=Main MosOS Arbat repository enabled=0 autorefresh=1 baseurl=https://mos-repo.mos.ru/mosos/arbat/15.5/repo/oss/ path=/ type=rpm-md keeppackages=0nano /etc/zypp/repos.d/repo-update.repo[repo-update] name=Update repository with updates for MosOS Arbat enabled=0 autorefresh=1 baseurl=https://mos-repo.mos.ru/mosos/arbat/15.5/repo/update/ type=NONE keeppackages=0 -
Установите необходимые пакеты.
zypper install -y cloud-init perl curl -
Установите пакеты для системы виртуализации.
zypper install -y qemu-guest-agent systemctl enable qemu-guest-agent
Ubuntu 24.04
-
Обновите все пакеты ОС.
apt update -y -
Установите необходимые пакеты.
apt install -y cloud-init cloud-guest-utils curl network-manager -
Установите пакеты для системы виртуализации.
apt install -y qemu-guest-agent systemctl enable qemu-guest-agent
Alt Linux 11
-
Обновите все пакеты ОС.
apt-get update -
Установите необходимые пакеты.
apt-get install -y cloud-init cloud-utils-growpart curl NetworkManager -
Установите пакеты для системы виртуализации.
apt-get install -y qemu-guest-agent systemctl enable qemu-guest-agent
-
-
Установите конфигурацию службы cloud-init.
Если необходимо - измените стандартного пользователя для cloud-init в system_info.default_user.name: nova-user
Файл
/etc/cloud/cloud.cfgдолжен иметь следующее содержимое:#cloud-config locale: en_US.UTF-8 users: - default datasource_list: ["ConfigDrive"] disable_root: true ssh_pwauth: false preserve_hostname: true manage_etc_hosts: true ssh_deletekeys: true ssh_genkeytypes: ['rsa', 'ecdsa', 'ed25519'] syslog_fix_perms: ~ resize_rootfs: true growpart: mode: auto devices: ['/'] ignore_growroot_disabled: false package_update: false package_upgrade: false cloud_init_modules: - migrator - seed_random - bootcmd - write-files - growpart - resizefs - disk_setup - mounts - update_etc_hosts - ca-certs - rsyslog - users-groups - ssh cloud_config_modules: - ssh-import-id - locale - set-passwords - yum-add-repo - ntp - timezone - disable-ec2-metadata - runcmd cloud_final_modules: - package-update-upgrade-install - write-files-deferred - reset_rmc - refresh_rmc_and_interface - rightscale_userdata - scripts-vendor - scripts-per-once - scripts-per-boot - scripts-per-instance - scripts-user - ssh-authkey-fingerprints - keys-to-console - install-hotplug - phone-home - final-message - power-state-change system_info: default_user: name: nova-user lock_passwd: false gecos: Nova user groups: [wheel, adm, systemd-journal, sudo] sudo: ["ALL=(ALL) NOPASSWD:ALL"] shell: /bin/bash network: renderers: ['netplan', 'network-manager', 'eni', 'sysconfig'] activators: ['netplan', 'network-manager', 'eni', 'networkd'] -
Добавьте в автозагрузку службы.
systemctl enable cloud-init systemctl enable systemd-timesyncd -
Выключите межсетевой экран.
systemctl disable firewalld systemctl disable ufwКоманда может вывести сообщение об отсутствии данного компонента. В этом случае дополнительных действий не требуется.
-
Выключите systemd-resolved.
systemctl disable --now systemd-resolved rm /etc/resolv.conf touch /etc/resolv.conf -
Настройте именование интерфейсов для сценария инициализации виртуальных машин.Откройте файл
/etc/default/grubс помощью текстового редактора и добавьте параметры в строкуGRUB_CMDLINE_LINUX.GRUB_CMDLINE_LINUX="selinux=0 apparmor=0 crashkernel=auto"Обновите конфигурацию grub:
Для систем семейства Debian (включая Ubuntu и Astra Linux)update-grubДля систем семейства RHEL и совместимыхgrub2-mkconfig -o /boot/grub2/grub.cfg -
Выполните дополнительные настройки для конкретной ОС:
Astra Linux
Для обеспечения сетевого взаимодействия через API необходимо выполнить следующие условия:
-
Управление сетью должно осуществляться исключительно через NetworkManager.
-
Все сетевые интерфейсы должны находиться под полным контролем NetworkManager (состояние managed).
-
Конфигурация не должна дублироваться или быть задана в устаревших файлах (например,
/etc/network/interfaces), которые могут перехватывать управление.
Проверьте конфигурацию
/etc/network/interfaces:source /etc/network/interfaces.d/* auto lo iface lo inet loopbackНастройте NetworkManager на управление всеми интерфейсами. Убедитесь, что файл
/etc/NetworkManager/conf.d/managed.confприсутствует и и имеет следующее содержание:[main] dns=default rc-manager=file plugins=ifupdown,keyfile [ifupdown] managed=falseВключите NetworkManager.
systemctl enable NetworkManagerUbuntu 24.04
Для обеспечения сетевого взаимодействия через API необходимо выполнить следующие условия:
-
Отключите systemd-networkd:
systemctl disable systemd-networkd -
Отредактируйте файл с настройками
/etc/NetworkManager/NetworkManager.conf:[main] dns=default rc-manager=file plugins=ifupdown,keyfile [ifupdown] managed=false -
Добавьте настройку Netplan в
/etc/netplan/91-netplan-networkmanager.yaml:network: version: 2 renderer: NetworkManager -
Отредактируйте права:
chmod 600 /etc/netplan/91-netplan-networkmanager.yaml -
Включите NetworkManager:
systemctl enable NetworkManager
Alt Linux 11
-
Отключите службу network:
systemctl disable network
-
-
Проверьте timezone. Выполните команду и проверьте время\timezone на VM Cluster Manager, синхронизация должна быть активна, timezone верна:
timedatectl -
Подготовьте пользовательскую учетную запись согласно статье Подготовка пользовательской учетной записи.
-
Проведите очистку файлов созданных во время процесса настройки.
cloud-init clean truncate -s 0 /etc/machine-id /var/log/lastlog /var/log/wtmp /root/.bash_history rm -rf /etc/udev/rules.d/70-persistent-net.rules rm -rf /var/lib/dhcp/* rm -rf /var/lib/dhcp6/* rm -rf /var/lib/dhclient/* rm -rf /etc/NetworkManager/system-connections/* rm -rf /etc/NetworkManager/system-connections/* rm -rf /var/lib/NetworkManager/* rm -rf /etc/netplan/*-cloud-init.yaml rm -f /etc/ssh/ssh_host_* sudo hostnamectl set-hostname "" -
Выключите виртуальную машину.
-
Удалите сетевой интерфейс из виртуальной машины.
1.2.1. Создание шаблона
Создайте из виртуальной машины шаблон, который будет использоваться для создания виртуальных узлов кластера Nova Container Platform.
-
Перейдите в веб-интерфейс менеджера управления zVirt.
-
Нажмите и выберите виртуальную машину.
-
Убедитесь, что виртуальная машина выключена (находится в состоянии
Выключена). -
Нажмите
, затем – Создать шаблон. -
Введите Имя, Описание и Комментарий для шаблона.
-
В выпадающем списке Кластер выберите кластер, с которым нужно ассоциировать шаблон. По умолчанию он будет тем же, что и для исходной виртуальной машины.
-
При желании выберите профиль ЦП для шаблона в выпадающем списке Профиль ЦП.
-
В разделе Выделение дискового пространства введите имя для диска в поле Имя. В выпадающем списке Формат выберите формат диска, в выпадающем списке Цель – домен хранения, где будет размещаться диск, а в выпадающем списке Профиль диска – профиль диска. По умолчанию эти параметры будут теми же, что и для исходной виртуальной машины.
-
Установите флажок Разрешить всем пользователям доступ к шаблону, чтобы разрешить совместное использование шаблона.
-
Установите флажок Копировать разрешения ВМ, чтобы скопировать разрешения исходной виртуальной машины в шаблон.
-
Нажмите OK.
-
Нажмите и выберите шаблон.
-
Нажмите Изменить, затем – Показать расширенные настройки.
-
В разделе Высокая доступность установите флажок Высокая доступность и в выпадающем списке Целевой домен хранения для аренды ВМ выберите домен хранения.
-
Нажмите OK.
|
При создании шаблона укажите формат диска:
|
2. Настройка пользователя в zVirt
2.1. Права доступа
При создании пользователя в zVirt рекомендуется предоставить ему права администратора.
Если это невозможно, требуется следующий минимальный набор доступов, который может обновляться с выходом новых версий Nova Container Platform:
-
DiskOperator
-
UserTemplateBasedVm
-
DiskProfileUser
-
UserProfileEditor
-
CpuProfileOperator
-
VnicProfileUser
2.2. Дополнительные настройки
Для корректной установки, обновления и функционирования Nova Container Platform необходимо снять ограничение на количество одновременных сессий.
Перейдите в веб-интерфейс менеджера управления zVirt и снимите ограничение на количество сессий на время установки кластера:
-
Нажмите и выберите пользователя, который будет использоваться для подключения к zVirt в процессе установки кластера Nova Container Platform.
-
Выберите меню Управление ограничениями.
-
В меню Управление ограничениями установите для параметра Количество сессий значение равное 0.
3. Получение информации о кластере zVirt
Для дальнейшей установки и настройки Nova Container Platform вам необходимо получить следующую информацию о кластере zVirt:
|
В предоставленной инструкции в качестве примера используется доменное имя (FQDN) менеджера управления виртуализацией zVirt - |
3.1. Получение корневого сертификата zVirt
-
Скачайте корневой сертификат zVirt с главной страницы веб-интерфейса менеджера управления zVirt c помощью браузера или следующей команды:
curl -ko ca-zvirt.cer https://zvirt.mycompany.local/ovirt-engine/services/pki-resource?resource=ca-certificate&format=X509-PEM-CA -
Закодируйте в
base64полученный сертификат:cat ca-zvirt.cer | base64 -w0Закодированный сертификат потребуется для дальнейшей установки платформы.
3.2. Получение идентификатора кластера
Для получения идентификатора кластера в среде виртуализации zVirt перейдите в веб-консоль zVirt и откройте раздел , затем выберите нужный кластер.
3.3. Получение идентификатора шаблона
Для получения идентификатор шаблона в среде виртуализации zVirt перейдите в веб-консоль zVirt и откройте раздел , затем выберите нужный шаблон.
3.4. Получение имени домена хранения
Для получения имени домена хранения в среде виртуализации zVirt перейдите в веб-консоль zVirt и откройте раздел .
3.5. Получение идентификатора профиля сети
Узнать идентификатор профиля сети в среде виртуализации zVirt можно в zVirt API.
-
Получите токен:
export USER= 'вставьте_ваше_значение' (1) export PASSWORD='password' export VLAN_NAME='VM_VLAN_SDN' export ZVIRT_URL='zvirt.mycompany.local' export TOKEN=$(curl --silent -k "https://$ZVIRT_URL/ovirt-engine/sso/oauth/token?grant_type=password&username=$USER&password=$PASSWORD&scope=ovirt-app-api" -H "Accept: application/json" | jq -r '.access_token')1 В случае, если используется Keycloak в zVirt - переменная будет иметь вид user@internalsso, в случае, если не используется - переменная будет иметь видuser@internal. -
Получите список сетей и информацию по ним:
curl --silent -k "https://$ZVIRT_URL/ovirt-engine/api/vnicprofiles" -H "Accept: application/json" -H "Authorization: Bearer $TOKEN" | jq --arg VLAN_NAME "$VLAN_NAME" '.vnic_profile[] | select(.name==$VLAN_NAME)' | jq -r '.id'