Gatekeeper con Red Hat OpenShift o Kubernetes upstream
Riepilogo: Questo articolo della KB spiega come utilizzare il repository kubevirt-rawio-addon di Red Hat GitHub per presentare i gatekeeper PowerMax in un'ambiente Red Hat OpenShift o Kubernetes upstream. ...
Istruzioni
Gatekeeper PowerMax
I gatekeeper PowerMax sono dispositivi di piccole dimensioni (in genere tre MB) ricavati dai dischi in PowerMax che fungono da destinazioni SCSI per i comandi di Solutions Enabler. Per impostazione predefinita, symapi_db.bin le informazioni sulla configurazione e sullo stato vengono mantenute in un file di database host PowerMax. È noto come database di configurazione di PowerMax. Riduce il numero di richieste dall host agli array di storage. I gatekeeper devono essere dispositivi raw in modo che il sistema operativo passi semplicemente i comandi SCSI senza manipolazioni. Mentre gli host fisici funzionano sempre con gatekeeper (con un sistema operativo supportato), gli host virtuali sono limitati a VMware utilizzando RDM (Raw Device Mapping) fisici, iSCSI in-guest su Windows o Linux, NVMe/TCP in-guest su Linux o dispositivi pass-through (NIC o HBA). Tuttavia, solo VMware è in grado di presentare un dispositivo raw autentico riconosciuto come gatekeeper valido. Altre soluzioni di virtualizzazione consentono all'utente di presentare i dispositivi come "raw", ma bloccano alcuni comandi SCSI, impedendone l'utilizzo come gatekeeper. Solutions Enabler li etichetta come gatekeeper, ma segnala un errore come indicato di seguito.

Inoltre, se si esaminano i gatekeeper, mostrano uno stato "CLS" o chiuso.

Pertanto, non è possibile passare i comandi SCSI necessari.
Per usufruire dei vantaggi di questa soluzione, è necessario utilizzare un protocollo supportato da Solutions Enabler sul sistema operativo scelto. Consultare la documentazione del prodotto.
Soluzione Red Hat GitHub
Dell ha richiesto l'assistenza di Red Hat nello sviluppo di una soluzione alternativa per i gatekeeper in un'ambiente OpenShift per alcuni dei nostri clienti comuni. A tal fine, hanno creato una soluzione che funziona sia per OpenShift che per Kubernetes upstream, con lievi variazioni nell'implementazione. Il repository GitHub si chiama kubevirt-rawio-addon come si trova qui: https://github.com/openshift-cnv/kubevirt-rawio-addon GitHub include un https://github.com/openshift-cnv/kubevirt-rawio-addon/blob/main/README.md readme.
L'add-on installa diversi componenti:
- Mutare i webhook per modificare gli oggetti all'istante
- Convalida del webhook: un controllo di sicurezza specifico per OpenShift
- Configurazione di sicurezza per consentire funzionalità privilegiate
- Gancio sidecar
Il sidecar è un piccolo container aggiuntivo che viene eseguito insieme al pod della VM e modifica la configurazione di basso livello della VM prima dell'avvio. Intercetta la configurazione della VM generata da KubeVirt, trova i dischi annotati e imposta rawio=yes. KubeVirt recupera quindi il codice XML. L'architettura sottostante libvirt/QEMU supporta questo, ma non lo espone, quindi è necessaria questa piccola modifica. È possibile che KubeVirt esponga questo in futuro, a quel punto la soluzione alternativa non sarà necessaria.
Implementazione su OpenShift
Il repository contiene tutte le istruzioni per implementare questa soluzione. Poiché Red Hat possiede la soluzione, Dell consiglia di seguire le istruzioni correnti, soggette a modifiche in futuro. Dell non aggiornerà l'articolo della KB per riflettere tali modifiche. A titolo di cortesia, forniamo le informazioni di base riportate di seguito, ma consigliamo agli utenti di questo articolo della Knowledge Base di utilizzarle insieme al repository.
Come indicato, è possibile implementarlo su OpenShift o Kubernetes upstream. Poiché i passaggi sono per OpenShift, ci sono un paio di elementi da tenere in considerazione se si esegue Kubernetes upstream.
- Se si esegue l'implementazione su Vanilla K8s, è necessario aver installato cert-manager. Se il driver CSI PowerMax è installato, questo è presente.
- Se si implementa su K8s vanilla, è necessario un namespace privilegiato. È possibile utilizzare lo spazio dei nomi negli script o crearne uno personalizzato e quindi modificare gli script.
I due script necessari per l'implementazione si trovano nella cartella hack . Il rawio-setup.sh è il primo script ed è lo stesso per entrambe le piattaforme, ma tieni presente che si basa sul namespace openshift-cnv che è presente solo su OpenShift. Aggiungere il namespace o crearne uno nuovo e modificare lo script per K8s. Lo script di creazione della VM è univoco per la piattaforma, ma utilizza nuovamente il namespace openshift-cnv. Per OpenShift, è rawio-create-vm-openshift.sh. Gli script sono progettati per creare un ambiente di test e dovranno essere modificati per una configurazione di produzione. In particolare, lo script rawio-setup.sh crea un dispositivo SCSI virtuale. Modificare invece lo script per utilizzare la classe di storage PowerMax. Inoltre, lo script presuppone un singolo nodo per la pianificazione della VM. Modificarlo per consentirne l'esecuzione su qualsiasi nodo worker. Lo script utilizza un sistema operativo Fedora pre-buit.
Gli script di esempio sono disponibili in Contenuto supplementare.
Passaggi di base
- Clonare il repository: git clonehttps://github.com/openshift-cnv/kubevirt-rawio-addon.git
- Installare il manifesto: oc apply -fhttps://github.com/openshift-cnv/kubevirt-rawio-addon/releases/download/v0.1.0/rawio-addon-openshift.yaml
- Installare il sidecar: oc annotate –overwrite -n openshift-cnv hco kubevirt-hyperconverged kubevirt.kubevirt.io/jsonpatch='[{"op": "add", "path": "/spec/configuration/developerConfiguration/featureGates/-", "value": "Sidecar"}]'
- Eseguire l'installazione: rawio-setup.sh
- Creare la macchina virtuale: rawio-create-vm-openshift.sh
- Installa il tuo sistema operativo (supponendo che tu non ne stia utilizzando uno pre-costruito)
Tenere presente che PowerMax CSI non può creare un dispositivo di dimensioni inferiori a 50 MB anche se si richiede un gatekeeper tradizionale da 3 MB. Non causa problemi.


Altre soluzioni di virtualizzazione
Nessuna delle soluzioni riportate di seguito funziona con questo repository Red Hat.
- Soluzioni basate su K8s come SUSE Harvester : SUSE deve sviluppare la propria soluzione
- Soluzioni KVM come Proxmox o Oracle KVM (oVirt): non sono basate su KubeVirt e non possono essere utilizzate
Informazioni aggiuntive
rawio-setup.sh
*******************************************
rawio-create-vm-openshift.sh