Интеграция с zVirt
Данный раздел содержит информацию по интеграции Nova Container Platform SE с zVirt и включает следующие основные шаги:
1. Подготовка шаблонов виртуальных машин в среде zVirt
В данном разделе документации описывается подготовка виртуальной машины и создание из неё шаблона, который будет использоваться для развертывания всех виртуальных узлов кластера Nova Container Platform.
1.1. Создание виртуальной машины
Чтобы создать виртуальную машину, задайте её настройки (некоторые можно изменить позже) и установите операционную систему.
-
Перейдите в веб-интерфейс менеджера управления zVirt.
-
Нажмите .
-
Нажмите Создать. Откроется окно Новая виртуальная машина.
-
Выберите Операционную систему из выпадающего списка.
-
Укажите Имя виртуальной машины.
-
Добавьте диск к виртуальной машине в разделе Виртуальные диски.
-
Нажмите Создать и укажите Размер (GiB) и Псевдоним нового виртуального диска. В остальных полях можно принять настройки по умолчанию или изменить их при необходимости.
-
Подключите виртуальную машину к сети. Добавьте сетевой интерфейс, выбрав vNIC-профиль в выпадающем списке nic1 внизу на вкладке Общее.
-
Задайте параметр Оперативная память (разделяемая) виртуальной машины на вкладке Система.
-
На вкладке Параметры загрузки выберите Первое устройство, которое виртуальная машина будет использовать для начальной загрузки.
-
На вкладке Запуск инициализации включите опцию Cloud-Init.
-
В остальных полях можно принять настройки по умолчанию или изменить их при необходимости.
-
Нажмите OK.
Новая виртуальная машина будет создана и отобразится в списке виртуальных машин в состоянии Выключено. Используйте операционную систему из списка поддерживаемых операционных систем.
1.2. Подготовка виртуальной машины
-
Выполните шаги, указанные ниже для вашей ОС:
Astra Linux Special Edition 1.7.6
-
Добавьте репозитории для вашей версии ОС.
# Подставьте в переменные значения соответствующие вашей версии ОС # В данном примере используется версия 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 -
Обновите все пакеты ОС.
sudo apt update -
Установите все необходимые пакеты с помощью команды:
apt install -y cloud-init curl network-manager -
Установите пакеты для системы виртуализации.
apt install -y qemu-guest-agent systemctl enable qemu-guest-agent
Astra Linux Special Edition 1.8.1
-
Добавьте репозитории для вашей версии ОС.
# Подставьте в переменные значения соответствующие вашей версии ОС # В данном примере используется версия 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 contrib non-free" > /etc/apt/sources.list -
Обновите все пакеты ОС.
sudo apt update -
Установите все необходимые пакеты с помощью команды:
apt install -y cloud-init curl network-manager -
Установите пакеты для системы виртуализации.
apt install -y qemu-guest-agent systemctl enable qemu-guest-agent
РедОС 7.3 (серт/ФСТЭК)
-
Добавьте репозитории для вашей версии ОС.
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 install -y cloud-init 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
МосОС 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 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 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 -
Выполните дополнительные настройки для конкретной ОС AstraLinux:
Для обеспечения сетевого взаимодействия через 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 NetworkManager -
-
Проверьте timezone. Выполните команду и проверьте время\TZ на всех узлах, синхронизация должна быть активна, TZ верна:
timedatectlЕсли TZ не актуальная и время отличается от текущего, выполните команду:
timedatectl set-timezone Europe/Moscow -
Подготовьте пользовательскую учетную запись согласно статье Подготовка пользовательской учетной записи.
-
Проведите очистку файлов созданных во время процесса настройки.
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 SE необходимо снять ограничение на количество одновременных сессий.
Перейдите в веб-интерфейс менеджера управления zVirt и снимите ограничение на количество сессий на время установки кластера:
-
Нажмите и выберите пользователя, который будет использоваться для подключения к zVirt в процессе установки кластера Nova Container Platform SE.
-
Выберите меню Управление сессиями.
-
В меню Управление сессиями установите для параметра Количество сессий значение равное 0.
3. Получение информации о кластере zVirt
Для дальнейшей установки и настройки Nova Container Platform SE вам необходимо получить следующую информацию о кластере 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. Получение идентификатора профиля сети
3.5.1. zVirt без Keycloak
Узнать идентификатор профиля сети в среде виртуализации zVirt можно, перейдя в zVirt API, например, https://zvirt.mycompany.local/ovirt-engine/api/vnicprofiles.
3.5.2. zVirt с установленным Keycloak
Узнать идентификатор профиля сети в среде виртуализации zVirt можно в zVirt API. Поскольку используется Keycloak, сначала необходимо запросить токен.
-
Получите токен:
export USER='user@internalsso' export PASSWORD='password' export TOKEN=$(curl --silent -k "https://zvirt.mycompany.local/ovirt-engine/sso/oauth/token?grant_type=password&username=$USER&password=$PASSWORD&scope=ovirt-app-api" -H "Accept: application/json" | jq -r '.access_token') -
Получите список сетей и информацию по ним:
curl -k https://zvirt.mycompany.local/ovirt-engine/api/vnicprofiles -H "Accept: application/json" -H "Authorization: Bearer $TOKEN"