OpenKeel: la solución Cloud soberana, francesa y de alcance europeo, del grupo inherent Descubrir inherent

Arquitectura

Vista general

Clientes, API Go, workers y agentes, infraestructura compartida, operadores, la plataforma Kubernetes y los sistemas externos.

Servicios, datos y plataforma

Diagrama openkeel-overview.svg Pantalla completa
De arriba abajo: clientes, API Go, workers y agentes, infraestructura compartida, operadores, plataforma Kubernetes, sistemas externos. Las interacciones comunes a todos los servicios (tokens, base de datos, notificaciones, certificados TLS) se dibujan como buses; todos los flujos están cifrados con TLS.

No reescribir lo que es complejo

Cada servicio se apoya en un componente Kubernetes probado; Ironic es la excepción: Python upstream en un chart de OpenKeel.

Cómputo

Nova → KubeVirt

Las instancias son VirtualMachines; CDI importa las imágenes

Más información
Bloque

Cinder → CSI de bloque

Los volúmenes son PVC sobre cualquier CSI de bloque: Rook-Ceph, Longhorn, NetApp, Dorado, Pure

Más información
Archivo

Manila → NFS-Ganesha

Gateway NFS creado bajo demanda en la red del tenant, sobre un volumen CSI de bloque

Más información
Redes

Neutron → OVN

Red de VM aislada de la red de Kubernetes (Multus)

Más información
DNS

Designate → ExternalDNS

Zonas y registros publicados por ExternalDNS

Más información
Bare metal

Ironic sigue en Python

Demasiadas configuraciones de hardware que probar

Más información

Aislamiento de tenants: los caminos cerrados

Una VM no tiene ninguna interfaz en la red CNI de Kubernetes: cada NIC se conecta a su propio puerto Neutron en el OVN de OpenKeel. Una protección instalada por el plugin CNI cierra los caminos a través de los namespaces que comparte.

RutaPor qué está cerrado
Del invitado a otra red de tenantLa única salida del tap es el bridge dentro del Pod y el veth hacia br-int; ovn-controller lo asocia a un puerto lógico. Los demás switches solo son accesibles a través de un router Neutron
Del invitado a la red de Pods, al nodo, a los Services del clústerNinguna interfaz del invitado los toca y la protección cierra el camino a través de los namespaces compartidos
MAC o IP suplantadaport_security del puerto lógico, escrito por Neutron
Puerto de otro proyectoUn proyecto no puede crear ni Pods ni NAD; solo el rol service puede vincular un puerto

Fuente: openkeel-neutron/docs/VM-NETWORKING.md (§ Tenant isolation). make test-cni reproduce el ataque en namespaces reales, con y sin la protección.