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

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

Данный раздел содержит информацию по интеграции Nova Container Platform SE с 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. Подготовка виртуальной машины

  1. Выполните шаги, указанные ниже для вашей ОС:

    Astra Linux Special Edition 1.7.6
    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. Обновите все пакеты ОС.

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

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

      apt install -y qemu-guest-agent
      systemctl enable qemu-guest-agent
    Astra Linux Special Edition 1.8.1
    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
    2. Обновите все пакеты ОС.

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

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

      apt install -y qemu-guest-agent
      systemctl enable qemu-guest-agent
    РедОС 7.3 (серт/ФСТЭК)
    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 install -y cloud-init  curl
    3. Установите пакеты для системы виртуализации.

      dnf install -y qemu-guest-agent
      systemctl enable qemu-guest-agent
    4. Создайте каталог /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
    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  curl
    3. Установите пакеты для системы виртуализации.

      zypper install -y qemu-guest-agent
      systemctl enable qemu-guest-agent
  2. Установите конфигурацию службы 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' ]
  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. Выполните дополнительные настройки для конкретной ОС 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
  8. Проверьте timezone. Выполните команду и проверьте время\TZ на всех узлах, синхронизация должна быть активна, TZ верна:

    timedatectl

    Если TZ не актуальная и время отличается от текущего, выполните команду:

    timedatectl set-timezone Europe/Moscow
  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 SE необходимо снять ограничение на количество одновременных сессий.

Перейдите в веб-интерфейс менеджера управления zVirt и снимите ограничение на количество сессий на время установки кластера:

  • Нажмите Управление  Пользователи и выберите пользователя, который будет использоваться для подключения к zVirt в процессе установки кластера Nova Container Platform SE.

  • Выберите меню Управление сессиями.

  • В меню Управление сессиями установите для параметра Количество сессий значение равное 0.

3. Получение информации о кластере zVirt

Для дальнейшей установки и настройки Nova Container Platform SE вам необходимо получить следующую информацию о кластере 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. Получение идентификатора профиля сети

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, сначала необходимо запросить токен.

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

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

    curl -k https://zvirt.mycompany.local/ovirt-engine/api/vnicprofiles -H "Accept: application/json" -H "Authorization: Bearer $TOKEN"

4. Рекомендуется к выполнению