Strážci brány se systémem Red Hat OpenShift nebo upstreamovým systémem Kubernetes

Riepilogo: Tento článek znalostní databáze vysvětluje, jak používat úložiště Red Hat GitHub kubevirt-rawio-addon k prezentaci strážců brány PowerMax v prostředí Red Hat OpenShift nebo Upstream Kubernetes. ...

Questo articolo si applica a Questo articolo non si applica a Questo articolo non è legato a un prodotto specifico. Non tutte le versioni del prodotto sono identificate in questo articolo.

Istruzioni

Strážci brány PowerMax

Strážci brány PowerMax jsou malá zařízení (obvykle tři MB) vytvořená z disků v úložišti PowerMax, která fungují jako cíle SCSI pro příkazy nástroje Solutions Enabler. Informace o konfiguraci a stavu se uchovávají v databázovém souboru hostitele PowerMax, symapi_db.bin ve výchozím nastavení. Tato konfigurační databáze se označuje jako konfigurační databáze PowerMax. Snižuje počet dotazů od hostitele na pole úložišť. Gatekeepery musí být nezpracovaná zařízení, aby operační systém jednoduše předával příkazy SCSI bez manipulace. Zatímco fyzičtí hostitelé vždy fungují se servery Gatekeeper (s podporovaným operačním systémem), virtuální hostitelé jsou omezeni na VMware pomocí mapování fyzických nezpracovaných zařízení (RDM), in-Guest iSCSI v systému Windows nebo Linux, in-Guest NVMe/TCP v Linuxu nebo průchozích zařízení (NIC nebo HBA). Pouze VMware však může představit skutečné surové zařízení, které je uznáváno jako životaschopný Gatekeeper. Jiná virtualizační řešení umožňují uživateli prezentovat zařízení jako "surová", ale jejich řešení blokují některé příkazy SCSI a brání tak jejich použití jako gatekeeperů. Nástroj Solutions Enabler je označí jako Gatekeepery, ale nahlásí chybu, jak je uvedeno níže.

Kromě toho, pokud prozkoumáte Gatekeepery, ukazují stav "CLS" nebo uzavřený.

Proto nelze předat potřebné příkazy SCSI.

Chcete-li využít výhod tohoto řešení, musíte použít protokol, který Solutions Enabler podporuje ve zvoleném operačním systému. Nahlédněte prosím do produktové dokumentace.

Řešení Red Hat GitHub

Společnost Dell požádala společnost Red Hat o pomoc s vývojem zástupného řešení pro Gatekeepers v prostředí OpenShift pro některé naše společné zákazníky. Za tímto účelem vytvořili řešení, které funguje jak pro OpenShift, tak pro Upstream Kubernetes s mírnými odchylkami v implementaci. Úložiště GitHub se nazývá kubevirt-rawio-addon a nachází se zde: https://github.com/openshift-cnv/kubevirt-rawio-addon GitHub obsahuje https://github.com/openshift-cnv/kubevirt-rawio-addon/blob/main/README.md readme.

Doplněk nainstaluje několik komponent:

  • Mutace webhooků pro úpravu objektů za chodu
  • Ověření webhooku – bezpečnostní kontrola specifická pro OpenShift
  • Konfigurace zabezpečení umožňující privilegované funkce
  • Háček sajdkáry 

Sajdkára je malý další kontejner, který běží společně s podem virtuálního počítače a před spuštěním upraví konfiguraci nízké úrovně virtuálního počítače. Zachytí konfiguraci virtuálního počítače vygenerovanou KubeVirtem, najde disky s poznámkami a nastaví rawio=yes. KubeVirt pak získá zpět XML. Základní architektura libvirt/QEMU to podporuje, ale nezpřístupňuje to, takže je vyžadována tato drobná úprava. Je možné, že to KubeVirt v budoucnu odhalí a v tomto okamžiku bude náhradní řešení zbytečné.


  

Implementace na platformě OpenShift

Repozitář obsahuje všechny pokyny pro implementaci tohoto řešení. Vzhledem k tomu, že vlastníkem řešení je společnost Red Hat, doporučuje společnost Dell postupovat podle aktuálních pokynů, které se mohou v budoucnu změnit.  Společnost Dell nebude aktualizovat článek KB, aby tyto změny odrážel. Jako laskavost níže uvádíme základní informace, ale doporučujeme uživatelům tohoto KB, aby je používali společně s úložištěm.

Jak je uvedeno, můžete to implementovat na OpenShift nebo Upstream Kubernetes. Vzhledem k tomu, že kroky jsou pro OpenShift, existuje několik poznámek, pokud provádíte upstreamový Kubernetes.

  • Pokud implementujete na vanilla K8s, musíte mít nainstalovaný správce certifikátů. Pokud je nainstalován ovladač PowerMax CSI, je přítomen.
  • Pokud implementujete na vanilla K8s, potřebujete privilegovaný obor názvů. Obor názvů můžete použít ve skriptech nebo si vytvořit vlastní a pak skripty upravit.

Dva skripty, které potřebujete k implementaci, jsou ve složce hack . rawio-setup.sh je první skript a je stejný pro obě platformy, ale uvědomte si, že spoléhá na obor názvů openshift-cnv, který je přítomen pouze na OpenShift. Přidejte jmenný prostor nebo vytvořte nový a upravte skript pro K8s. Skript pro vytvoření virtuálního počítače je jedinečný pro platformu, ale opět používá openshift-cnv obor názvů. Pro OpenShift je to rawio-create-vm-openshift.sh. Skripty jsou navržené tak, aby vytvořily testovací prostředí a budou vyžadovat úpravu pro produkční nastavení. Skript rawio-setup.sh zejména vytvoří virtuální SCSI zařízení. Místo toho upravte skript tak, aby používal třídu úložiště PowerMax. Skript navíc předpokládá jeden uzel pro plánování virtuálního počítače. Upravte ho tak, aby ho bylo možné spustit na libovolném pracovním uzlu. Skript používá předinstalovaný operační systém Fedora.

Ukázkové skripty jsou v doplňkovém obsahu.

Základní kroky

Mějte na paměti, že PowerMax CSI nemůže vytvořit zařízení menší než 50 MB, i když požádáte o tradiční 3MB Gatekeeper. Nezpůsobuje to problém.

Další virtualizační řešení

Žádné z níže uvedených řešení s tímto úložištěm Red Hat nefunguje.

  • Řešení založená na K8s, jako je SUSE Harvester - SUSE musí vyvinout vlastní řešení
  • KVM řešení jako Proxmox nebo Oracle KVM (oVirt) - nejsou založena na KubeVirt a nelze je použít



 

Informazioni aggiuntive

rawio-setup.sh

 

#!/bin/bash

 

set -euo pipefail

 

if [ -z "${KUBEVIRT_NAMESPACE:-}" ]; Pak
  if kubectl get ns openshift-cnv &>/dev/null; then
    NAMESPACE="openshift-cnv"
  Jiného
    NAMESPACE="kubevirt"
  fi
Jiného
  NAMESPACE="$KUBEVIRT_NAMESPACE"
fi

 

PVC_NAMESPACE="${PVC_NAMESPACE:-výchozí}"
SC_NAME="PowerMax-2164-výchozí"
PVC_NAME="scsi-rawio-pvc"

 

# Vytvořte jmenný prostor, pokud neexistuje
kubectl get ns "$PVC_NAMESPACE" >/dev/null 2>&1 || kubectl create ns "$PVC_NAMESPACE"

 

# Vytvořte PVC
echo "Vytvoření PVC $PVC_NAME ve jmenném prostoru $PVC_NAMESPACE..."

 

kubectl apply -f - <<EOF
apiVersion: v1
Druhu: PersistentVolumeClaim
Metadata:
  name: $PVC_NAME
  Obor názvů: $PVC_NAMESPACE
Spec:
  storageClassName: $SC_NAME
  volumeMode: Block
  accessModes:
    - Funkce ReadWriteOnce
  Zdroje:
    Požadavky:
      Úložiště: 8Mi
EOF

 

echo ""
echo "=== Nastavení dokončeno ==="
echo "Třída_úložiště:   $SC_JMÉNO"
echo "PVC:            $PVC_NAMESPACE/$PVC_NAME"
echo ""
 

*******************************************

rawio-create-vm-openshift.sh

 

#!/bin/bash

 

set -euo pipefail

 

PVC_NAMESPACE="${PVC_NAMESPACE:-výchozí}"
PVC_NAME="${PVC_NAME:-scsi-rawio-pvc}"
VM_NAME="${VM_NAME:-rawio-test-vm}"
VM_SA="${VM_SA:-rawio-vm}"
CONTAINER_DISK="${CONTAINER_DISK:-quay.io/kubevirt/fedora-with-testtooling:v20240717-a087e7e}"
SCC_NAME="${SCC_NAME:-rawio-vm}"
KUBEVIRT_NAMESPACE="openshift-cnv"

 

echo "Vytvoření účtu služby $VM_SA v oboru názvů $PVC_NAMESPACE"

 

kubectl apply -f - <<EOF
apiVersion: v1
Druhu: Účet služby
Metadata:
  name: $VM_SA
  Obor názvů: $PVC_NAMESPACE
EOF

 

echo "Vytvoření SCC $SCC_NAME pro servisní účet $VM_SA"

 

kubectl apply -f - <<EOF
apiVersion: security.openshift.io/v1
Druhu: SecurityContextConstraints
Metadata:
  name: $SCC_NAME
Prioritou: 11
allowPrivilegedContainer: false
allowHostDirVolumePlugin: true
allowHostNetwork: false
allowHostPorts: false
allowHostPID: false
allowHostIPC: false
allowedCapabilities:
  - NET_BIND_SERVICE
  - SYS_NICE
  - SYS_RAWIO
  - SETFCAP
defaultAddCapabilities: []
seccompProfiles:
  - runtime/default
  - bez omezení
  - localhost/kubevirt/kubevirt.json
Svazky:
  - "*"
readOnlyRootFilesystem: false
runAsUser:
  type: RunAsAny
seLinuxContext:
  type: RunAsAny
Skupina fsGroup:
  type: RunAsAny
supplementalGroups:
  type: RunAsAny
Uživatelé:
  - System:ServiceAccount:${PVC_NAMESPACE}:${VM_SA}
groups: []
EOF

 

echo "Vytvoření VM $VM_NAME ve jmenném prostoru $PVC_NAMESPACE"
echo "PVC:               $PVC_JMÉNO"
echo "ServiceAccount:    $VM_SA"
echo "Kontejnerový disk:    $CONTAINER_DISK"

 

kubectl apply -f - <<EOF
apiVersion: kubevirt.io/v1
Druhu: Virtuální počítač
Metadata:
  name: $VM_NAME
  Obor názvů: $PVC_NAMESPACE
  Poznámky:
    kubevirt.io/rawioSupport: "lun0"
Spec:
  Spuštění: True
  Šablony:
    Metadata:
      Poznámky:
        kubevirt.io/rawioSupport: "lun0"
    Spec:
      Domény:
        Cpu:
          Jádra: 2
        Zdroje:
          Požadavky:
            Paměti: 2Gi
        Zařízení:
          Rng: {}
          Disky:
            - Název: DISK0
              Disku:
                Autobus: Virtio
            - Jméno: LUN0
              Lun:
                Sběrnice: SCSI
            -Jméno: $VM_SA
              Disku:
                Autobus: Virtio
      Svazky:
        - Název: DISK0
          containerDisk:
            Obrázek: $CONTAINER_DISK
        - Jméno: LUN0
          persistentVolumeClaim:
            claimName: $PVC_NAME
        -Jméno: $VM_SA
          serviceAccount:
            serviceAccountName: $VM_SA
EOF

 

echo ""
echo "Vytvořil $VM_NÁZEV virtuálního počítače. Čekám, až to začne..."
echo "Sledujte pomocí: kubectl get vmi -n $PVC_NAMESPACE $VM_NAME -w"
echo "Konzole:    virtctl console -n $PVC_NAMESPACE $VM_NAME"
echo ""
echo "Vyčištění:"
echo " kubectl delete vm -n $PVC_NAMESPACE $VM_NAME"
echo " kubectl smazat scc $SCC_NAME"

Prodotti interessati

PowerMax, PowerMax, PowerMax 2000, PowerMax 2500, PowerMax 8000, PowerMax 8500, PowerMaxOS 10
Proprietà dell'articolo
Numero articolo: 000472526
Tipo di articolo: How To
Ultima modifica: 03 giu 2026
Versione:  1
Trova risposta alle tue domande dagli altri utenti Dell
Support Services
Verifica che il dispositivo sia coperto dai Servizi di supporto.