Gatekeepers с Red Hat OpenShift или вышестоящим Kubernetes
Zusammenfassung: В этой статье базы знаний объясняется, как использовать репозиторий Red Hat GitHub kubevirt-rawio-addon для представления PowerMax Gatekeepers в среде Red Hat OpenShift или вышестоящей среде Kubernetes. ...
Weisungen
Привратники PowerMax
Привратники PowerMax — это небольшие устройства (обычно три Мбайт), вырезанные из дисков в PowerMax, которые выступают в качестве целевых объектов SCSI для команд Solutions Enabler. Информация о конфигурации и состоянии сохраняется в файле базы данных хоста PowerMax symapi_db.bin по умолчанию. Она называется базой данных конфигурации PowerMax. Это сокращает количество запросов от хоста к массивам хранения данных. Гейткиперы должны быть сырыми устройствами, чтобы ОС просто передавала команды SCSI без манипуляций. Хотя физические хосты всегда работают со шлюзами (с поддерживаемой ОС), виртуальные хосты ограничены VMware, используя физические необработанные сопоставления устройств (RDM), гостевой iSCSI в Windows или Linux, гостевые NVMe/TCP в Linux или транзитные устройства (сетевая плата или HBA). Однако только VMware может предоставить по-настоящему сырое устройство, признанное жизнеспособным Gatekeeper. Другие решения виртуализации позволяют пользователю представлять устройства как «сырые», но их решения блокируют некоторые команды SCSI, препятствуя их использованию в качестве привратников. Solutions Enabler помечает их как Gatekeepers, но сообщает об ошибке, как показано ниже.

Кроме того, если вы исследуете Gatekeepers, они показывают состояние "CLS" или закрыто.

Поэтому вы не можете передать необходимые команды SCSI.
Чтобы воспользоваться преимуществами этого решения, необходимо использовать протокол, поддерживаемый Solutions Enabler в выбранной операционной системе. См. документацию по продукту.
Решение Red Hat GitHub
Компания Dell обратилась к Red Hat с просьбой о помощи в разработке временного решения для Gatekeepers в среде OpenShift для некоторых наших общих заказчиков. С этой целью они создали решение, которое работает как для OpenShift, так и для Upstream Kubernetes с небольшими вариациями в реализации. Репозиторий GitHub называется kubevirt-rawio-addon, как показано здесь: https://github.com/openshift-cnv/kubevirt-rawio-addon GitHub включает https://github.com/openshift-cnv/kubevirt-rawio-addon/blob/main/README.md readme.
Модуль устанавливает несколько компонентов:
- Мутация вебхуков для изменения объектов «на лету»
- Проверка веб-перехватчика — проверка безопасности для OpenShift
- Конфигурация безопасности для предоставления привилегированных возможностей
- Крюк для коляски
Неполадка — это небольшой дополнительный контейнер, который выполняется вместе с модулем VM pod и изменяет низкоуровневую конфигурацию виртуальной машины перед ее запуском. Он перехватывает конфигурацию виртуальной машины, сгенерированную KubeVirt, находит аннотированные диски и устанавливает rawio=yes. Затем KubeVirt получает обратно XML. Базовая архитектура libvirt/QEMU поддерживает это, но не предоставляет его, поэтому требуется небольшая корректировка. Возможно, что KubeVirt предоставит это в будущем, и в этот момент обходной путь станет ненужным.
Реализация на OpenShift
Репозиторий содержит все инструкции по реализации этого решения. Поскольку Red Hat является собственником решения, Dell рекомендует следовать текущим инструкциям, которые могут быть изменены в будущем. Dell не будет обновлять статью базы знаний, чтобы отразить эти изменения. В качестве любезности мы предоставляем основную информацию ниже, но рекомендуем пользователям этой статьи базы знаний использовать ее вместе с репозиторием.
Как уже отмечалось, это можно реализовать в OpenShift или Upstream Kubernetes. Как и в случае с OpenShift, есть несколько моментов, на которые следует обратить внимание при использовании Upstream Kubernetes.
- Если вы реализуете на обычных K8s, у вас должен быть установлен cert-manager. Если установлен драйвер CSI PowerMax, он присутствует.
- Если вы реализуете на ванильных K8s, вам потребуется привилегированное пространство имен. Вы можете использовать пространство имен в сценариях или создать собственное, а затем изменить сценарии.
Два скрипта, которые вам понадобятся для реализации, находятся в папке hack . rawio-setup.sh — это первый сценарий, одинаковый для обеих платформ, но имейте в виду, что он опирается на пространство имен openshift-cnv, которое присутствует только в OpenShift. Добавьте пространство имен или создайте новое и измените сценарий для K8s. Сценарий создания виртуальной машины уникален для платформы, но опять же использует пространство имен openshift-cnv. Для OpenShift это rawio-create-vm-openshift.sh. Сценарии предназначены для создания тестовой среды и потребуют модификации для настройки рабочей среды. В частности, сценарий rawio-setup.sh создает виртуальное устройство SCSI. Вместо этого измените сценарий, используя свой класс хранилища PowerMax. Кроме того, сценарий предполагает наличие одного узла для планирования виртуальной машины. Измените его, чтобы разрешить запуск на любом рабочем узле. Сценарий использует предварительную загрузку ОС Fedora.
Примеры сценариев приведены в разделе Дополнительные материалы.
Основные шаги
- Клонируйте репозиторий: git clonehttps://github.com/openshift-cnv/kubevirt-rawio-addon.git
- Установите манифест: oc apply -fhttps://github.com/openshift-cnv/kubevirt-rawio-addon/releases/download/v0.1.0/rawio-addon-openshift.yaml
- Установите расширение: oc annotate –overwrite -n openshift-cnv hco kubevirt-hyperconverged kubevirt.kubevirt.io/jsonpatch='[{"op": "add", "path": "/spec/configuration/developerConfiguration/featureGates/-", "value": "Коляска"}]'
- Запустите настройку: rawio-setup.sh
- Создайте виртуальную машину. rawio-create-vm-openshift.sh
- Установите свою ОС (при условии, что вы не используете предварительно созданную)
Имейте в виду, что PowerMax CSI не может создать устройство меньше 50 Мбайт, даже если вы запросите традиционный Gatekeeper 3 Мбайт. Это не вызывает проблем.


Другие решения для виртуализации
Ни одно из приведенных ниже решений не работает с этим репозиторием Red Hat.
- Решения на базе K8s, такие как SUSE Harvester - SUSE должны разработать свое собственное решение
- KVM-решения, такие как Proxmox или Oracle KVM (oVirt) - они не основаны на KubeVirt и не могут быть использованы
Weitere Informationen
rawio-setup.sh
*******************************************
rawio-create-vm-openshift.sh