Gatekeepere med Red Hat OpenShift eller opstrøms Kubernetes

Riepilogo: Denne KB forklarer, hvordan du bruger Red Hat GitHub kubevirt-rawio-addon-lageret til at præsentere PowerMax Gatekeepers for enten et Red Hat OpenShift- eller Upstream Kubernetes-miljø. ...

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

PowerMax-gatekeepere

PowerMax Gatekeepers er små enheder (typisk tre MB), der er udskåret fra diske i PowerMax, der fungerer som SCSI-mål for Solutions Enabler-kommandoer. Konfigurations- og statusoplysninger bevares som standard i en PowerMax-værtsdatabasefil symapi_db.bin. Den kaldes PowerMax-konfigurationsdatabasen. Det reducerer antallet af forespørgsler fra værten til lagerarrayerne. Gatekeepers skal være rå enheder, så operativsystemet simpelthen passerer SCSI-kommandoerne uden manipulation. Mens fysiske værter altid arbejder med Gatekeepers (med et understøttet operativsystem), er virtuelle værter begrænset til VMware, der bruger fysiske rå enhedstilknytninger (RDM'er), iSCSI som gæst på Windows eller Linux, NVMe/TCP på Linux eller passthrough-enheder (NIC eller HBA). Kun VMware kan dog præsentere en ægte rå enhed, der anerkendes som en levedygtig Gatekeeper. Andre virtualiseringsløsninger giver brugeren mulighed for at præsentere enheder som "rå", men deres løsninger blokerer nogle SCSI-kommandoer og forhindrer deres brug som Gatekeepers. Solutions Enabler mærker dem som Gatekeepers, men rapporterer en fejl som nedenfor.

Desuden, hvis du undersøger Gatekeepers, viser de en tilstand af "CLS" eller lukket.

Derfor kan du ikke videregive de nødvendige SCSI-kommandoer.

Hvis du vil drage fordel af denne løsning, skal du bruge en protokol, som Solutions Enabler understøtter på det valgte operativsystem. Se produktdokumentationen.

Red Hat GitHub-løsning

Dell anmodede Red Hat om hjælp til at udvikle en løsning til gatekeepere i et OpenShift-miljø for nogle af vores fælles kunder. Til det formål skabte de en løsning, der fungerer for både OpenShift og Upstream Kubernetes med små variationer i implementeringen. GitHub-lageret kaldes kubevirt-rawio-addon som findes her: https://github.com/openshift-cnv/kubevirt-rawio-addon GitHub indeholder en readme-https://github.com/openshift-cnv/kubevirt-rawio-addon/blob/main/README.md.

Tilføjelsen installerer flere komponenter:

  • Mutering af webhooks for at ændre objekter undervejs
  • Validering af webhook – et OpenShift-specifikt sikkerhedstjek
  • Sikkerhedskonfiguration for at tillade privilegerede funktioner
  • Kroge til sidevogn 

Sidevognen er en lille ekstra beholder, der kører sammen med VM-pod'en og ændrer VM'ens konfiguration på lavt niveau, før den starter. Den opfanger den KubeVirt-genererede VM-konfiguration, finder de kommenterede diske og indstiller rawio=yes. KubeVirt får derefter XML-filen tilbage. Den underliggende libvirt/QEMU-arkitektur understøtter dette, men afslører det ikke, så denne mindre justering er påkrævet. Det er muligt, at KubeVirt udsætter dette i fremtiden, på hvilket tidspunkt løsningen vil være unødvendig.


  

Implementering på OpenShift

Lageret indeholder alle instruktioner til implementering af denne løsning. Da Red Hat ejer løsningen, anbefaler Dell, at du følger de aktuelle instruktioner, som kan ændres i fremtiden.  Dell opdaterer ikke vidensbase, så den afspejler disse ændringer. Som en service stiller vi nedenstående grundlæggende oplysninger til rådighed, men opfordrer brugere af denne KB til at bruge dem sammen med arkivet.

Som nævnt kan du implementere dette på OpenShift eller Upstream Kubernetes. Som trin er for OpenShift, er der et par elementer, der skal bemærkes, hvis du udfører Upstream Kubernetes.

  • Hvis du implementerer på vanilje K8s, skal du have cert-manager installeret. Hvis PowerMax CSI-driveren er installeret, er den til stede.
  • Hvis du implementerer på vanilje K8'er, har du brug for et privilegeret navnerum. Du kan bruge navneområdet i scripts eller oprette dit eget og derefter ændre scripts.

De to scripts, du har brug for til implementering, findes i hack-mappen . Det rawio-setup.sh er det første script og er det samme for begge platforme, men vær opmærksom på, at det er afhængigt af openshift-cnv-navneområdet, som kun findes på OpenShift. Tilføj navneområdet, eller opret et nyt, og rediger scriptet til K8s. VM-oprettelsesscriptet er unikt for platformen, men bruger igen openshift-cnv-navneområdet. For OpenShift er det rawio-create-vm-openshift.sh. Scriptene er designet til at oprette et testmiljø og skal ændres til en produktionsopsætning. Især opretter rawio-setup.sh scriptet en virtuel SCSI-enhed. Rediger i stedet scriptet, så det bruger din PowerMax-storageklasse. Derudover antager scriptet en enkelt node til planlægning af VM'en. Rediger den, så den kan køre på enhver arbejdsnode. Scriptet bruger et pre-buit Fedora OS.

Eksempelscripts findes i supplerende indhold.

Grundlæggende trin

Vær opmærksom på, at PowerMax CSI ikke kan oprette en enhed, der er mindre end 50 MB, selvom du beder om en traditionel 3 MB Gatekeeper. Det forårsager ikke noget problem.

Andre virtualiseringsløsninger

Ingen af nedenstående løsninger fungerer med dette Red Hat-lager.

  • K8s-baserede løsninger som SUSE Harvester - SUSE skal udvikle deres egen løsning
  • KVM-løsninger som Proxmox eller Oracle KVM (oVirt) - disse er ikke KubeVirt-baserede og kan ikke bruges



 

Informazioni aggiuntive

rawio-setup.sh

 

#!/bin/bash

 

sæt -euo pipefail

 

hvis [ -z "${KUBEVIRT_NAMESPACE:-}" ]; Derefter
  Hvis kubectl får ns openshift-cnv &>/dev/null; så
    NAMESPACE="openshift-cnv"
  Andet
    NAMESPACE="kubevirt"
  Fi
Andet
  NAMESPACE="$KUBEVIRT_NAMESPACE"
Fi

 

PVC_NAMESPACE="${PVC_NAMESPACE:-default}"
SC_NAME="PowerMax-2164-standard"
PVC_NAME="SCSI-RAWIO-PVC"

 

# Opret navneområde, hvis det ikke findes
kubectl get ns "$PVC_NAMESPACE" >/dev/null 2>&1 || kubectl create ns "$PVC_NAMESPACE"

 

# Opret PVC
ekko "Oprettelse af PVC $PVC_NAME i navnerum $PVC_NAMESPACE ..."

 

kubectl gælder -f - <<EOF
apiVersion: v1
Form: PersistentVolumeClaim
Metadata:
  Navn: $PVC_NAVN
  Navneområde: $PVC_NAVNEOMRÅDE
Spec:
  storageClassName: $SC_NAVN
  lydstyrketilstand: Bloker
  accessModes:
    - ReadWriteOnce
  Ressourcer:
    Anmodninger:
      Opbevaring: 8Mi
EOF

 

ekko ""
ekko "=== Opsætningen er fuldført ==="
echo "StorageClass:   $SC_NAVN"
ekko "PVC:            $PVC_NAMESPACE/$PVC_NAME"
ekko ""
 

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

rawio-create-vm-openshift.sh

 

#!/bin/bash

 

sæt -euo pipefail

 

PVC_NAMESPACE="${PVC_NAMESPACE:-default}"
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 "Oprettelse af ServiceAccount $VM_SA i navneområde $PVC_NAMESPACE"

 

kubectl gælder -f - <<EOF
apiVersion: v1
Form: Servicekonto
Metadata:
  Navn: $VM_SA
  Navneområde: $PVC_NAVNEOMRÅDE
EOF

 

echo "Oprettelse af SCC $SCC_NAME for service account $VM_SA"

 

kubectl gælder -f - <<EOF
apiVersion: security.openshift.io/v1
Form: SecurityContextConstraints
Metadata:
  Navn: $SCC_NAVN
Prioritet: 11
allowPrivilegedContainer: false
allowHostDirVolumePlugin: sandt
allowHostNetwork: false
allowHostPorts: false
allowHostPID: falsk
allowHostIPC: falsk
allowedCapabilities:
  - NET_BIND_SERVICE
  - SYS_NICE
  - SYS_RAWIO
  - SETFCAP
defaultAddCapabilities: []
seccompProfiler:
  - Runtime / Standard
  - ubegrænset
  - localhost/kubevirt/kubevirt.json
Diskenheder:
  - "*"
readOnlyRootFilesystem: false
runAsUser:
  type: RunAsAny
seLinuxContext:
  type: RunAsAny
fsGroup:
  type: RunAsAny
supplerende grupper:
  type: RunAsAny
Brugere:
  - system:serviceaccount:${PVC_NAMESPACE}:${VM_SA}
Grupper: []
EOF

 

echo "Oprettelse af VM $VM_NAME i navneområde $PVC_NAMESPACE"
ekko "PVC:               $PVC_NAVN"
echo "ServiceAccount:    $VM_SA"
echo "Beholderdisk:    $CONTAINER_DISK"

 

kubectl gælder -f - <<EOF
apiVersion: kubevirt.io/v1
Form: Virtuel maskine
Metadata:
  Navn: $VM_NAVN
  Navneområde: $PVC_NAVNEOMRÅDE
  Anmærkninger:
    kubevirt.io/rawioSupport: "lun0"
Spec:
  Løb: True
  Skabelon:
    Metadata:
      Anmærkninger:
        kubevirt.io/rawioSupport: "lun0"
    Spec:
      Domæne:
        Cpu:
          Kerner: 2
        Ressourcer:
          Anmodninger:
            Hukommelse: 2Gi
        Enheder:
          Rng: {}
          Diske:
            - Navn: Disk0
              Disk:
                Bus: Virtio
            - Navn: lun0
              Lun:
                Bus: SCSI
            -Navn: $VM_SA
              Disk:
                Bus: Virtio
      Diskenheder:
        - Navn: Disk0
          BeholderDisk:
            Billede: $CONTAINER_DISK
        - Navn: lun0
          persistentVolumeClaim:
            claimName: $PVC_NAVN
        -Navn: $VM_SA
          servicekonto:
            serviceAccountName: $VM_SA
EOF

 

ekko ""
echo "VM $VM_NAME oprettet. Venter på, at det starter ..."
echo "Se med: kubectl get vmi -n $PVC_NAMESPACE $VM_NAME -w"
echo "Konsol:    virtctl console -n $PVC_NAMESPACE $VM_NAME"
ekko ""
ekko "Oprydning:"
ekko "kubectl slet vm -n $PVC_NAMESPACE $VM_NAME"
ekko "kubectl slet 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.