Интеграция с zVirt
Данный раздел содержит информацию по интеграции Nova Container Platform с zVirt. Раздел содержит следующие основные шаги:
1. Подготовка шаблонов виртуальных машин в среде zVirt
В данном разделе документации описывается подготовка виртуальной машины и создание из нее шаблона, который будет использоваться для развертывания всех виртуальных узлов кластера Nova Container Platform.
1.1. Создание виртуальной машины
Процесс создания виртуальной машины заключается в задании ее настроек (некоторые из них можно изменить позже) и последующей установке операционной системы.
-
Перейдите в веб-интерфейс менеджера управления zVirt.
-
Нажмите .
-
Нажмите Создать. Откроется окно Новая виртуальная машина.
-
Выберите Операционную систему из выпадающего списка.
-
Укажите Имя виртуальной машины.
-
Добавьте диск к виртуальной машине в разделе Виртуальные диски.
-
Нажмите Создать и укажите Размер (GiB) и Псевдоним нового виртуального диска. В остальных полях можно принять настройки по умолчанию или изменить их при необходимости.
-
Подключите виртуальную машину к сети. Добавьте сетевой интерфейс, выбрав vNIC-профиль в выпадающем списке nic1 внизу на вкладке Общее.
-
Задайте параметр Оперативная память (разделяемая) виртуальной машины на вкладке Система.
-
На вкладке Параметры загрузки выберите Первое устройство, которое виртуальная машина будет использовать для начальной загрузки.
-
На вкладке Запуск инициализации включите опцию Cloud-Init.
-
В остальных полях можно принять настройки по умолчанию или изменить их при необходимости.
-
Нажмите OK.
Новая виртуальная машина будет создана и отобразится в списке виртуальных машин в состоянии Выключено. Перед ее использованием необходимо установить операционную систему. Используйте операционную систему из списка поддерживаемых операционных систем.
1.2. Подготовка виртуальной машины
-
Выполните шаги инструкции в зависимости от вашей ОС.
Astra Linux Special Edition 1.7
-
Добавьте репозитории для вашей версии ОС.
# Подставьте в переменные значения соответствующие вашей версии ОС # В данном примере используется версия 1.7.6.uu2 VERSION_BASE="1.7.6" UPDATE="2" 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 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-initramfs-growroot curl network-manager perl -
Установите пакеты для системы виртуализации.
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" 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 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-initramfs-growroot curl network-manager perl -
Установите пакеты для системы виртуализации.
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 perl -
Установите пакеты для системы виртуализации.
dnf install -y qemu-guest-agent systemctl enable qemu-guest-agent
AlmaLinux
-
Обновите все пакеты ОС.
dnf update -y -
Установите необходимые пакеты.
dnf install -y cloud-init cloud-utils-growpart curl perl -
Установите пакеты для системы виртуализации.
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
-
-
Установите конфигурацию службы cloud-init. Файл
/etc/cloud/cloud.cfgдолжен иметь следующее содержимое:#cloud-config locale: en_US.UTF-8 users: - default disable_root: true ssh_pwauth: false preserve_hostname: true manage_etc_hosts: true ssh_deletekeys: true ssh_genkeytypes: ['rsa', 'ecdsa', 'ed25519'] syslog_fix_perms: ~ growpart: mode: auto devices: ['/'] ignore_growroot_disabled: false resize_rootfs: true 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: [whell, 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.
systemd disable --now systemd-resolved rm /etc/resolv.conf touch /etc/resolv.conf -
Отключите selinux. Откройте файл
/etc/default/grubс помощью текстового редактора и добавьте параметрselinux=0в строкуGRUB_CMDLINE_LINUX.GRUB_CMDLINE_LINUX="selinux=0"Создайте новый файл конфигурации grub:
Для систем семейства Debian (Astra Linux)grub-mkconfig -o /boot/grub/grub.cfgДля систем семейства RHEL и совместимыхgrub2-mkconfig -o /boot/grub2/grub.cfg
1.3. Дополнительные настройки
|
Для использование платформы Nova версии 7.3.0, 6.4.0 и выше в IPI-режиме необходимо произвести дополнительные настройки. |
-
Настройте именование интерфейсов для сценария инициализации виртуальных машин. Откройте файл
/etc/default/grubс помощью текстового редактора и добавьте параметрnet.ifnames=0в строкуGRUB_CMDLINE_LINUX.GRUB_CMDLINE_LINUX="net.ifnames=0 selinux=0"Создайте новый файл конфигурации grub:
Для систем семейства Debian (Astra Linux)grub-mkconfig -o /boot/grub/grub.cfgДля систем семейства RHEL и совместимыхgrub2-mkconfig -o /boot/grub2/grub.cfg -
Только для AstraLinux. Для обеспечения сетевого взаимодействия через API необходимо выполнить следующие условия (Nova 7.3.0 и выше):
-
Управление сетью должно осуществляться исключительно через NetworkManager.
-
Все сетевые интерфейсы должны находиться под полным контролем NetworkManager (состояние managed).
-
Конфигурация не должна дублироваться или быть задана в устаревших файлах (например,
/etc/network/interfaces), которые могут перехватывать управление.
-
-
Удалите старые конфигурации (если они есть), чтобы избежать конфликтов:
sudo rm -f /etc/network/interfaces.d/* /etc/network/interfaces -
Настройте NetworkManager на управление всеми интерфейсами. Убедитесь, что файл
/etc/NetworkManager/conf.d/managed.confприсутствует и и имеет следующее содержание:[ifupdown] managed=true -
Перезапустите службу для применения изменений:
sudo systemctl restart NetworkManager -
Проверьте конфигурацию.
nmcli device statusПример вывода:DEVICE TYPE STATE CONNECTION eth0 ethernet connected cloud-init eth0 -
Подготовьте пользовательскую учетную запись. Подробнее см. в статье Подготовка пользовательской учетной записи.
-
Проведите очистку файлов созданных во время процесса настройки.
rm -rf /var/lib/dhcp/* rm -rf /var/lib/dhcp6/* rm -rf /var/lib/dhclient/* rm -rf /etc/NetworkManager/system-connections/* rm -rf /var/lib/NetworkManager/* truncate -s 0 /etc/machine-id /var/log/lastlog /var/log/wtmp /root/.bash_history -
Выключите виртуальную машину.
-
Удалите сетевой интерфейс из виртуальной машины.
1.3.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'