Digital Developer Conference: Cloud Security 2021 ¡Regístrate ahora!

Introducción a la arquitectura multitenant

Un clúster de Red Hat OpenShift se utiliza generalmente para alojar cargas de trabajo de un único inquilino (o, cliente) que es propietario del clúster. Sin embargo, también se pueden ejecutar varias cargas de trabajo de diferentes inquilinos en el mismo clúster. En este caso, hay que aislar esas cargas de trabajo entre sí para que los inquilinos no puedan interferir entre sí. Este artículo explica cómo aislar las cargas de trabajo en OpenShift para que puedan ser utilizadas por varios inquilinos.

¿Qué es la arquitectura multitenant?

Software de estructura multiinquilinos se refiere a una arquitectura de software donde una única instancia de software sirve a varios usuarios o grupos, también llamados inquilinos.

Muchas veces, una solución de software existente está diseñada para un único inquilino. En este caso, se puede lograr la arquitectura multitenant mediante el aprovisionamiento de una instancia separada del software para cada inquilino, a la vez que se aísla cada inquilino. Los inquilinos se refieren a un único usuario, grupo de usuarios o una organización.

En la estructura multiinquilinos, cada inquilino debe estar aislado e invisible para el otro para proteger la confidencialidad de los datos y la seguridad del inquilino.

Ventajas de compartir la carga de trabajo

En muchas empresas, diferentes departamentos (como Recursos Humanos y Finanzas) utilizan su propio conjunto de cargas de trabajo que ejecutan en software y hardware compartido. Por ejemplo, una empresa puede tener varios departamentos ejecutando sus cargas de trabajo en un Servidor de Aplicaciones WebSphere con un servidor DB2.

Una configuración de hardware y software específica para cada carga de trabajo sería cara, difícil de mantener y poco práctica.

En un entorno informático compartido, varias cargas de trabajo comparten capacidad. Así, las cargas de trabajo son capaces de adquirir capacidad cuando la necesitan y soltarla cuando no la necesitan. Esto es posible porque en las empresas, el uso de cada aplicación varía durante diferentes momentos de día, meses y años.

La clave para que este entorno informático compartido sea valioso para todos los inquilinos es que el entorno soporte la estructura multiinquilinos. Es decir, el entorno necesita mantener las cargas de trabajo relacionadas con la computación, la red y otro recurso de hardware para cada inquilino aislado de las cargas de trabajo de los otros inquilinos.

Las nuevas técnicas de virtualización y contenerización hacen posible el aislamiento completo de los inquilinos en una infraestructura de hardware compartida. El modelo de software como servicio (SaaS) pone el software a disposición del usuario sin que éste tenga que instalarlo o administrarlo por sí mismo. Un servicio de Software como Servicio (SaaS) puede ser utilizado por varios inquilinos, siempre y cuando los inquilinos estén aislados unos de otros.

Un servicio de Software como Servicio (SaaS) con estructura multiinquilinos utiliza recursos informáticos compartidos de forma eficiente, permite que varios inquilinos utilicen el servicio estando aislados unos de otros, y hace que el consumidor del servicio sea más productivo porque el proveedor del servicio es responsable de gestionar el servicio y su entorno informático.

Enfoques para lograr la estructura multiinquilinos

Hay un par de enfoques para lograr la estructura multiinquilinos utilizando OpenShift:

  1. Servicio multiinquilino – En esta solución ideal, un servicio se implementa de manera que una única instancia pueda soportar varios inquilinos.

Si un servicio no es multiinquilino, entonces cada inquilino necesitará su propia instancia de servicio. ¿Cómo se pueden aislar esas instancias entre sí para la estructura multiinquilinos? Hay un par de opciones:

  1. Múltiples clústeres – El mayor aislamiento entre instancias de servicio es implementar cada una en un clúster separado. Entonces, cada clúster puede instalarse en hardware separado, redes separadas, incluso centros de datos separados o regiones situadas a miles de kilómetros de distancia. La desventaja de esto es que tener un clúster separado para cada instancia de servicio sería caro con una utilización extremadamente baja y crearía muchos clústeres para administrar.
  2. Clúster único compartido – Un enfoque más económico y práctico es implementar varias instancias de servicio dentro del mismo clúster. En comparación con varios clústeres, un único clúster es menos costoso, más fácil de administrar y mejor aprovechado. Sin embargo, las cargas de trabajo de un clúster comparten los mismos recursos y red, por lo que su aislamiento es limitado. El aislamiento del contenedor entre las cargas de trabajo en un clúster es apropiado para un único inquilino o varios inquilinos que confían unos en los otros, pero no es suficiente para varios inquilinos en los que un inquilino ni siquiera debe saber que existen las cargas de trabajo de los otros inquilinos.

Así que un clúster puede manejar varias cargas de trabajo. ¿Cómo se pueden aislar?

Aislamiento de cargas de trabajo en OpenShift

Para entender cómo funciona el aislamiento en OpenShift, primero vamos a repasar rápidamente cómo se compone OpenShift. Un clúster OpenShift es un conjunto de proyectos , que se basan en Kubernetes namespaces. Un proyecto es como un clúster virtual, separando lógicamente sus recursos de los de otros proyectos, de modo que varios proyectos trabajan como varios clústeres virtuales, todos dentro de un único clúster físico.

Los proyectos ofrecen varias ventajas:

  1. Nombre ámbito- Cada proyecto tiene su propio nombre ámbito, por lo que dos recursos del mismo tipo pueden tener el mismo nombre único siempre que estén en proyectos distintos.
  2. Comunidad de usuarios – Los usuarios del clúster (como los desarrolladores e implementadores de aplicaciones) que pueden acceder a un proyecto se controlan a través del clúster RBAC. Esto facilita a un administrador de clúster aislar diferentes proyectos en el mismo clúster poniendo a los usuarios de diferentes equipos en diferentes proyectos.
  3. Cuota de recursos – El administrador del clúster puede configurar cada proyecto con límites de recursos. De este modo, un proyecto no puede utilizar demasiados recursos del clúster, por lo que cada proyecto debe obtener algunos recursos.
  4. Ámbito de configuración – Se puede especificar alguna configuración del clúster por proyecto. La configuración que normalmente sería global para el clúster puede ser adaptada al ámbito de un proyecto para que los proyectos puedan ser configurados independientemente.

Los proyectos agrupan recursos, pero, por defecto, no aíslan las cargas de trabajo. Sin embargo, puede configurar los proyectos para aislar las cargas de trabajo. Creando un proyecto por inquilino y configurando cada uno para el aislamiento, las cargas de trabajo de un inquilino en un proyecto se aíslan de las de un inquilino en otro proyecto.

Un administrador del clúster configura el aislamiento del proyecto en dos aspectos principales:

  1. Aislamiento de la red
  2. Aislamiento de recursos

Exploremos esos aspectos con un poco más de detalle.

Aislamiento de la red

Usted configura un proyecto de OpenShift utilizando las políticas de red de Kubernetes para prevenir las conexiones de red entre sus pods y los pods de otros proyectos. Efectivamente, las vainas de un proyecto no pueden ver las vainas de otros proyectos en la red. Es como si no existieran en la red. Esto asegura que el tráfico de la red esté permitido entre los pods dentro del proyecto pero no entre los pods en diferentes proyectos, proporcionando así aislamiento de red entre los proyectos.

Descubra cómo conseguir aislamiento de red aplicando políticas de red a su proyecto. Lea el tutorial.

Aislamiento de recursos

En un entorno multiinquilino, el uso de recursos de las cargas de trabajo de un inquilino no debería afectar al rendimiento o a la disponibilidad de recursos de las cargas de trabajo de otro inquilino. Usted puede configurar el proyecto OpenShift con cuotas de recursos de computación como CPU y memoria. Esto asegura que las cargas de trabajo en el proyecto de un inquilino no puedan exceder sus límites de recursos, reservando así recursos para las cargas de trabajo que se ejecutan en los proyectos de otros inquilinos.

Descubra cómo configurar las cuotas de recursos del proyecto para la CPU y la memoria y lograr el aislamiento de recursos entre los inquilinos. Lea el tutorial.

Resumen

En este artículo, ha visto la necesidad y los beneficios de la implementación de aplicaciones multiinquilino. Usted puede utilizar los proyectos de OpenShift para separar a los inquilinos, y utilizar las políticas de red y las cuotas de recursos para lograr el aislamiento para multiinquilinos, logrando así la multipropiedad en un entorno de contenedores.