Для улучшения работы сайта мы используем файлы cookies. Оставаясь на сайте, вы соглашаетесь с политикой обработки персональных данных.

Интеграция с zVirt

Данный раздел содержит информацию по интеграции Nova Container Platform с zVirt. Раздел содержит следующие основные шаги:

1. Подготовка шаблонов виртуальных машин в среде zVirt

В данном разделе документации описывается подготовка виртуальной машины и создание из нее шаблона, который будет использоваться для развертывания всех виртуальных узлов кластера Nova Container Platform.

1.1. Создание виртуальной машины

Процесс создания виртуальной машины заключается в задании ее настроек (некоторые из них можно изменить позже) и последующей установке операционной системы.

  1. Перейдите в веб-интерфейс менеджера управления zVirt.

  2. Нажмите Ресурсы  Виртуальные машины.

  3. Нажмите Создать. Откроется окно Новая виртуальная машина.

  4. Выберите Операционную систему из выпадающего списка.

  5. Укажите Имя виртуальной машины.

  6. Добавьте диск к виртуальной машине в разделе Виртуальные диски.

  7. Нажмите Создать и укажите Размер (GiB) и Псевдоним нового виртуального диска. В остальных полях можно принять настройки по умолчанию или изменить их при необходимости.

  8. Подключите виртуальную машину к сети. Добавьте сетевой интерфейс, выбрав vNIC-профиль в выпадающем списке nic1 внизу на вкладке Общее.

  9. Задайте параметр Оперативная память (разделяемая) виртуальной машины на вкладке Система.

  10. На вкладке Параметры загрузки выберите Первое устройство, которое виртуальная машина будет использовать для начальной загрузки.

  11. На вкладке Запуск инициализации включите опцию Cloud-Init.

  12. В остальных полях можно принять настройки по умолчанию или изменить их при необходимости.

  13. Нажмите OK.

Новая виртуальная машина будет создана и отобразится в списке виртуальных машин в состоянии Выключено. Перед ее использованием необходимо установить операционную систему. Используйте операционную систему из списка поддерживаемых операционных систем.

1.2. Подготовка виртуальной машины

В ядре Linux обнаружена уязвимость Copy Fail (CVE-2026-31431). Перед настройкой ОС убедитесь, что установлена версия ядра с исправлением уязвимости. Подробнее об уязвимости и способе устранения см. в статье Copy Fail.

  1. Выполните шаги инструкции в зависимости от вашей ОС.

    Astra Linux Special Edition 1.7
    1. Добавьте репозитории для вашей версии ОС.

      # Подставьте в переменные значения соответствующие вашей версии ОС
      # В данном примере используется версия 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
    2. Обновите все пакеты ОС.

      apt update
    3. Установите необходимые пакеты.

      apt install -y cloud-init cloud-guest-utils curl network-manager
    4. Установите пакеты для системы виртуализации.

      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 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
    2. Обновите все пакеты ОС.

      apt update
    3. Установите необходимые пакеты.

      apt install -y cloud-init cloud-guest-utils curl network-manager
    4. Установите пакеты для системы виртуализации.

      apt install -y qemu-guest-agent
      systemctl enable qemu-guest-agent
    РЕД ОС
    1. Добавьте репозитории для вашей версии ОС.

      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
    2. Обновите все пакеты ОС.

      dnf update -y
    3. Установите необходимые пакеты.

      dnf install -y cloud-init cloud-utils-growpart curl
    4. Установите пакеты для системы виртуализации.

      dnf install -y qemu-guest-agent
      systemctl enable qemu-guest-agent
    5. Создайте каталог /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
    1. Обновите все пакеты ОС.

      dnf update -y
    2. Установите необходимые пакеты.

      dnf install -y cloud-init cloud-utils-growpart curl
    3. Установите пакеты для системы виртуализации.

      dnf install -y qemu-guest-agent
      systemctl enable qemu-guest-agent
    MosOS 15.5
    1. Добавьте репозиторий

      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=0
      nano /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
    2. Установите необходимые пакеты.

      zypper install -y cloud-init perl curl
    3. Установите пакеты для системы виртуализации.

      zypper install -y qemu-guest-agent
      systemctl enable qemu-guest-agent
    Ubuntu 24.04
    1. Обновите все пакеты ОС.

      apt update -y
    2. Установите необходимые пакеты.

      apt install -y cloud-init cloud-guest-utils curl network-manager
    3. Установите пакеты для системы виртуализации.

      apt install -y qemu-guest-agent
      systemctl enable qemu-guest-agent
    Alt Linux 11
    1. Обновите все пакеты ОС.

      apt-get update
    2. Установите необходимые пакеты.

      apt-get install -y cloud-init cloud-utils-growpart curl NetworkManager
    3. Установите пакеты для системы виртуализации.

      apt-get install -y qemu-guest-agent
      systemctl enable qemu-guest-agent
  2. Установите конфигурацию службы 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']
  3. Добавьте в автозагрузку службы.

    systemctl enable cloud-init
    systemctl enable systemd-timesyncd
  4. Выключите межсетевой экран.

    systemctl disable firewalld
    systemctl disable ufw

    Команда может вывести сообщение об отсутствии данного компонента. В этом случае дополнительных действий не требуется.

  5. Выключите systemd-resolved.

    systemctl disable --now systemd-resolved
    rm /etc/resolv.conf
    touch /etc/resolv.conf
  6. Настройте именование интерфейсов для сценария инициализации виртуальных машин.Откройте файл /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
  7. Выполните дополнительные настройки для конкретной ОС:

    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 NetworkManager
    Ubuntu 24.04

    Для обеспечения сетевого взаимодействия через API необходимо выполнить следующие условия:

    1. Отключите systemd-networkd:

      systemctl disable systemd-networkd
    2. Отредактируйте файл с настройками /etc/NetworkManager/NetworkManager.conf:

      [main]
      dns=default
      rc-manager=file
      plugins=ifupdown,keyfile
      
      [ifupdown]
      managed=false
    3. Добавьте настройку Netplan в /etc/netplan/91-netplan-networkmanager.yaml:

      network:
          version: 2
          renderer: NetworkManager
    4. Отредактируйте права:

      chmod 600 /etc/netplan/91-netplan-networkmanager.yaml
    5. Включите NetworkManager:

      systemctl enable NetworkManager
    Alt Linux 11
    1. Отключите службу network:

      systemctl disable network
  8. Проверьте timezone. Выполните команду и проверьте время\timezone на VM Cluster Manager, синхронизация должна быть активна, timezone верна:

    timedatectl
  9. Подготовьте пользовательскую учетную запись согласно статье Подготовка пользовательской учетной записи.

  10. Проведите очистку файлов созданных во время процесса настройки.

    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 ""
  11. Выключите виртуальную машину.

  12. Удалите сетевой интерфейс из виртуальной машины.

1.2.1. Создание шаблона

Создайте из виртуальной машины шаблон, который будет использоваться для создания виртуальных узлов кластера Nova Container Platform.

  1. Перейдите в веб-интерфейс менеджера управления zVirt.

  2. Нажмите Ресурсы  Виртуальные машины и выберите виртуальную машину.

  3. Убедитесь, что виртуальная машина выключена (находится в состоянии Выключена).

  4. Нажмите action, затем – Создать шаблон.

  5. Введите Имя, Описание и Комментарий для шаблона.

  6. В выпадающем списке Кластер выберите кластер, с которым нужно ассоциировать шаблон. По умолчанию он будет тем же, что и для исходной виртуальной машины.

  7. При желании выберите профиль ЦП для шаблона в выпадающем списке Профиль ЦП.

  8. В разделе Выделение дискового пространства введите имя для диска в поле Имя. В выпадающем списке Формат выберите формат диска, в выпадающем списке Цель – домен хранения, где будет размещаться диск, а в выпадающем списке Профиль диска – профиль диска. По умолчанию эти параметры будут теми же, что и для исходной виртуальной машины.

  9. Установите флажок Разрешить всем пользователям доступ к шаблону, чтобы разрешить совместное использование шаблона.

  10. Установите флажок Копировать разрешения ВМ, чтобы скопировать разрешения исходной виртуальной машины в шаблон.

  11. Нажмите OK.

  12. Нажмите Ресурсы  Шаблоны и выберите шаблон.

  13. Нажмите Изменить, затем – Показать расширенные настройки.

  14. В разделе Высокая доступность установите флажок Высокая доступность и в выпадающем списке Целевой домен хранения для аренды ВМ выберите домен хранения.

  15. Нажмите OK.

При создании шаблона укажите формат диска: RAW или QCOW2.

  • Диски QCOW2 – динамически выделяемые.

  • Диски RAW в файловом хранилище – динамически выделяемые.

  • Диски RAW в блочном хранилище – предварительно размечаемые.

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 - zvirt.mycompany.local. Данное имя необходимо заменить на действительное доменное имя вашего менеджера управления.

3.1. Получение корневого сертификата zVirt

  1. Скачайте корневой сертификат zVirt с главной страницы веб-интерфейса менеджера управления zVirt c помощью браузера или следующей команды:

    curl -ko ca-zvirt.cer https://zvirt.mycompany.local/ovirt-engine/services/pki-resource?resource=ca-certificate&format=X509-PEM-CA
  2. Закодируйте в base64 полученный сертификат:

    cat ca-zvirt.cer | base64 -w0

    Закодированный сертификат потребуется для дальнейшей установки платформы.

3.2. Получение идентификатора кластера

Для получения идентификатора кластера в среде виртуализации zVirt перейдите в веб-консоль zVirt и откройте раздел Ресурсы  Кластеры, затем выберите нужный кластер.

3.3. Получение идентификатора шаблона

Для получения идентификатор шаблона в среде виртуализации zVirt перейдите в веб-консоль zVirt и откройте раздел Ресурсы  Шаблоны, затем выберите нужный шаблон.

3.4. Получение имени домена хранения

Для получения имени домена хранения в среде виртуализации zVirt перейдите в веб-консоль zVirt и откройте раздел Хранилище  Домены.

3.5. Получение идентификатора профиля сети

Узнать идентификатор профиля сети в среде виртуализации zVirt можно в zVirt API.

  1. Получите токен:

    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.
  2. Получите список сетей и информацию по ним:

    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'