Gatekeepers com Red Hat OpenShift ou Kubernetes upstream
Zusammenfassung: Este artigo da KB explica como usar o repositório kubevirt-rawio-addon do Red Hat GitHub para apresentar gatekeepers do PowerMax a um ambiente Red Hat OpenShift ou upstream do Kubernetes. ...
Weisungen
PowerMax Gatekeepers
Os gatekeepers do PowerMax são pequenos dispositivos (normalmente três MBs) esculpidos em discos no PowerMax que atuam como destinos SCSI para comandos do Solutions Enabler. As informações de configuração e status são mantidas em um arquivo de banco de dados do host do PowerMax symapi_db.bin por padrão. Ele é conhecido como o banco de dados de configuração do PowerMax. Reduz o número de consultas do host aos storage arrays. Os gatekeepers devem ser dispositivos brutos para que o sistema operacional simplesmente passe os comandos SCSI sem manipulação. Embora os hosts físicos sempre funcionem com gatekeepers (com um sistema operacional compatível), os hosts virtuais são limitados ao VMware usando RDMs (Physical Raw Device Mappings, mapeamentos de dispositivos brutos), iSCSI em guest no Windows ou Linux, NVMe/TCP em guest no Linux ou dispositivos de passagem (NIC ou HBA). No entanto, somente a VMware pode apresentar um dispositivo bruto verdadeiro que seja reconhecido como um gatekeeper viável. Outras soluções de virtualização permitem que o usuário apresente dispositivos como "brutos", mas suas soluções bloqueiam alguns comandos SCSI, impedindo seu uso como Gatekeepers. O Solutions Enabler os rotula como Gatekeepers, mas relata um erro conforme abaixo.

Além disso, se você examinar os gatekeepers, eles mostrarão um estado "CLS" ou "closed".

Portanto, você não pode passar os comandos SCSI necessários.
Para aproveitar essa solução, você deve usar um protocolo compatível com o Solutions Enabler no sistema operacional escolhido. Consulte a documentação do produto.
Solução Red Hat GitHub
A Dell solicitou a assistência da Red Hat para desenvolver uma solução temporária para Gatekeepers em um ambiente OpenShift para alguns de nossos clientes mútuos. Para isso, eles criaram uma solução que funciona para o OpenShift e o Upstream Kubernetes com pequenas variações na implementação. O repositório do GitHub é chamado de kubevirt-rawio-addon conforme está localizado aqui: https://github.com/openshift-cnv/kubevirt-rawio-addon O GitHub inclui um readme https://github.com/openshift-cnv/kubevirt-rawio-addon/blob/main/README.md.
O complemento instala vários componentes:
- Webhooks mutantes para modificar objetos em tempo real
- Validando webhook: uma verificação de segurança específica do OpenShift
- Configuração de segurança para permitir recursos privilegiados
- Gancho do sidecar
O sidecar é um pequeno contêiner extra que é executado junto com o pod da VM e modifica a configuração de baixo nível da VM antes de iniciar. Ele intercepta a configuração de VM gerada pelo KubeVirt, localiza os discos anotados e define rawio=yes. KubeVirt então recebe de volta o XML. A arquitetura subjacente libvirt/QEMU suporta isso, mas não a expõe, então esse pequeno ajuste é necessário. É possível que o KubeVirt exponha isso no futuro, quando a solução alternativa será desnecessária.
Implementação no OpenShift
O repositório contém todas as instruções para implementar essa solução. Como a Red Hat é proprietária da solução, a Dell recomenda seguir as instruções atuais, que estão sujeitas a alterações no futuro. A Dell não atualizará a base de conhecimento para refletir essas alterações. Como cortesia, fornecemos as informações básicas abaixo, mas encorajamos os usuários desta KB a usá-las junto ao repositório.
Como observado, você pode implementar isso no OpenShift ou no Kubernetes upstream. Como as etapas são para o OpenShift, há alguns itens importantes se você fizer o Kubernetes upstream.
- Se você implementar em baunilha K8s, você deve ter cert-manager instalado. Se o driver CSI do PowerMax estiver instalado, isso estará presente.
- Se você implementar em baunilha K8s, você precisará de um namespace privilegiado. Você pode usar o namespace nos scripts ou criar o seu próprio e, em seguida, modificar os scripts.
Os dois scripts que você precisa para a implementação estão na pasta hack. O rawio-setup.sh é o primeiro script e é o mesmo para qualquer uma das plataformas, mas lembre-se de que ele depende do namespace openshift-cNV, que só está presente no OpenShift. Adicione o namespace ou crie um novo e modifique o script para K8s. O script de criação da VM é exclusivo da plataforma, mas, novamente, usa o namespace openshift-cnv. Para OpenShift, é rawio-create-vm-openshift.sh. Os scripts são projetados para criar um ambiente de teste e precisarão de modificação para uma configuração de produção. Em particular, o script rawio-setup.sh cria um dispositivo SCSI virtual. Em vez disso, modifique o script para usar sua classe de armazenamento do PowerMax. Além disso, o script pressupõe um único nó para programar a VM. Modificá-lo para permitir que ele seja executado em qualquer nó de trabalho. O script usa um sistema operacional Fedora pré-buit.
Os scripts de exemplo estão em Conteúdo suplementar.
Etapas básicas
- Clone o repositório: git clonehttps://github.com/openshift-cnv/kubevirt-rawio-addon.git
- Instale o manifesto: oc apply -fhttps://github.com/openshift-cnv/kubevirt-rawio-addon/releases/download/v0.1.0/rawio-addon-openshift.yaml
- Instale o sidecar: oc annotate –overwrite -n openshift-cnv hco kubevirt-hyperconverged kubevirt.kubevirt.io/jsonpatch='[{"op": "add", "path": "/spec/configuration/developerConfiguration/featureGates/-", "value": "Sidecar"}]'
- Execute a instalação: rawio-setup.sh
- Criar a VM: rawio-create-vm-openshift.sh
- Instale seu sistema operacional (supondo que você não esteja usando um pré-criado)
Lembre-se de que o CSI do PowerMax não pode criar um dispositivo menor que 50 MB, mesmo que você solicite um gatekeeper tradicional de 3 MB. Isso não causa nenhum problema.


Outras soluções de virtualização
Nenhuma das soluções abaixo funciona com esse repositório Red Hat.
- Soluções baseadas em K8s, como SUSE Harvester - a SUSE deve desenvolver sua própria solução
- Soluções KVM como Proxmox ou Oracle KVM (oVirt) - não são baseadas em Kubert e não podem ser usadas
Weitere Informationen
rawio-setup.sh
*******************************************
rawio-create-vm-openshift.sh