¿Qué es OpenShift?

OpenShift es una plataforma de aplicaciones basada en Kubernetes. El software se utiliza para construir entornos de desarrollo y aplicaciones descentralizadas y escalables. Sobre la base de OpenShift, se pueden implementar soluciones propietarias Platform as a Service- (PaaS), Software as a Service- (SaaS) y Containers as a Service- (CaaS).

El software permite la gestión completa del ciclo de vida de las aplicaciones, incluyendo el desarrollo, la implantación, las operaciones y el mantenimiento. Más de dos mil empresas de todo el mundo confían en OpenShift para alojar sus aplicaciones en entornos de nube híbrida. Vamos a explicar cómo funciona OpenShift y qué hace que el software sea especial.

¿Qué versiones de OpenShift están disponibles?

OpenShift no es un único producto.De hecho, la empresa Red Hat publica varias versiones como software de código abierto bajo la licencia Apache. La versión “estrella” es la “Red Hat OpenShift Container Platform” (OCP). Se instala como un clúster de Kubernetes en la infraestructura de nube híbrida de una empresa. Por lo tanto, un único clúster de OpenShift puede abarcar varios entornos de nube pública y privada.

Además de la OpenShift Container Platform (OCP), existe la versión comunitaria “OKD”, que antes tenía el nombre de “OpenShift Origin”. OKD es una distribución personalizada de Kubernetes que se basa en Kubernetes para la gestión de clústeres y contenedores compatibles con la Open Container Initiative (OCI). También incluye capacidades de gestión del ciclo de vida de las aplicaciones y herramientas DevOps. Curiosamente, OKD es la base “upstream” para el desarrollo de las demás versiones de OpenShift, de forma similar a como el proyecto de código abierto Chromium sirve de base para el desarrollo del navegador Chrome.

Además de OCP y OKD como soluciones “locales” que se alojan en su propia infraestructura, existen también varias soluciones “gestionadas”. Estas se ejecutan en varias nubes públicas de grandes proveedores, así como en la infraestructura de nube de Red Hat. Estamos hablando principalmente de la versión 4.8 de OCP, que es la versión actual en el momento de escribir este artículo. Echemos un vistazo a las distintas versiones de OpenShift:

Productos OpenShift Descripción Plataforma
Red Hat OpenShift Container Platform (OCP) Solución empresarial “on-premise” para utilizar en tu propia infraestructura de nube híbrida Red Hat Enterprise Linux CoreOS (RHCOS)
OKD Producto comunitario “on-premise” community product, base de OCP Red Hat Enterprise Linux (RHEL) o CentOS
OpenShift Online Solución SaaS gestionada Red Hat Cloud
OpenShift Dedicated Solución PaaS gestionada; Red Hat se encarga de la administración completa del sistema Amazon AWS o Google Cloud

¿Cómo funciona OpenShift?

OpenShift es un conjunto de plataformas de aplicaciones basadas en Kubernetes. El software incluye un buen número de componentes básicos, así como una variedad de funcionalidades adicionales. OpenShift puede alojarse en una amplia variedad de entornos, incluyendo máquinas “bare metal”, nubes públicas y privadas, y dispositivos “edge”.

Consejo

Analizamos las similitudes y diferencias de OpenShift y Kubernetes en otro artículo.

¿De qué elementos se compone OpenShift?

OpenShift se basa en una pila de software, que es una pila de tecnologías interconectadas. En el nivel más bajo, se utiliza una distribución especial de Linux como sistema operativo. El “Red Hat Enterprise Linux CoreOS” (RHCOS) utilizado aquí se instala en hardware físico o virtualizado.

Nota

En versiones anteriores de OpenShift, se utilizaba “Red Hat Enterprise Linux” (RHEL) en lugar de RHCOS.

Basado en el sistema operativo RHCOS, Kubernetes se utiliza como organizador de contenedores y clústeres. Kubernetes se encarga del despliegue, el escalado y la gestión de las aplicaciones en contenedores. Los operadores de Kubernetes se utilizan como la siguiente capa de la pila de software. Son aplicaciones “nativas de Kubernetes” preconstruidas y fáciles de instalar. Además de los operadores, se utiliza un registro de contenedores al configurar y ejecutar un clúster de OpenShift.

¿Qué tipo de Kubernetes se incluye en OpenShift?

OpenShift se basa en una distribución especial de Kubernetes, que utiliza CRI-O en lugar de Docker o containerd como tiempo de ejecución de contenedores. Al desprenderse de Docker como tecnología subyacente, se obtienen ventajas en términos de seguridad y compatibilidad con otros formatos de contenedores.

¿Qué es un operador en OpenShift?

Un operador de Kubernetes supervisa la salud de toda una aplicación. Con la instalación, el funcionamiento y el mantenimiento, los operadores cubren el ciclo de vida completo de una aplicación Kubernetes. En palabras de la documentación de OpenShift:

Cita

“An Operator is a method of packaging, deploying, and managing a Kubernetes-native application. A Kubernetes-native application is an application that is both deployed on Kubernetes and managed using the Kubernetes APIs and kubectl tooling.“ – Fuente: https://cloud.redhat.com/learn/topics/operators

“Un operador es un método para empaquetar, desplegar y gestionar una aplicación nativa de Kubernetes. Una aplicación nativa de Kubernetes es una aplicación que se despliega en Kubernetes y se gestiona mediante las API de Kubernetes y las herramientas kubectl.” –(traducción de IONOS)

Hay una gran variedad de operadores en la plataforma OperatorHub. Por ejemplo, varios sistemas de bases de datos pueden integrarse sin problemas en el clúster OpenShift con un esfuerzo mínimo. Además, se utilizan operadores de infraestructura para gestionar el clúster.

Resulta que los operadores son esenciales para la funcionalidad de OpenShift. Un operador de Kubernetes es una especialización del controlador de Kubernetes a nivel de aplicación. Un controlador de Kubernetes supervisa continuamente el estado de un recurso y ajusta varios parámetros según sea necesario para mantener un estado definido.

¿Qué es un registro en OpenShift?

Un registro de contenedores almacena imágenes de contenedores que se crean continuamente a medida que se construye el software. Las imágenes se versionan, se someten a comprobaciones de seguridad y se guardan en el registro. Curiosamente, en OpenShift el propio registro se implementa como un operador.

“Quay” es un registro desarrollado por Red Hat centrado en la seguridad. Las imágenes necesarias durante la instalación del clúster de OpenShift se obtienen de Quay. Al hacerlo, Quay puede gestionar otros elementos de construcción además de las imágenes de los contenedores. En palabras de la documentación de Red Hat:

Cita

“Quay is a container registry for storing containers, Helm charts, and other container-related content.” – Fuente: https://www.redhat.com/sysadmin/introduction-quay
“Quay es un registro de contenedores para almacenar contenedores, gráficos de Helm y otros contenidos relacionados con los contenedores.” – (traducción de IONOS)
 

Siguiendo el modelo de producto escalonado de OpenShift OCP y OKD, existen varias versiones de Quay:

Registro Explicación Plataforma
Red Hat Quay Se ejecuta en su propia infraestructura informática, incluidas las nubes privadas; integrado en OpenShift por un operador Entorno propio de la nube, incluida la nube privada
Red Hat Quay.io Gestionado por Red Hat con soporte de nivel empresarial Cloud

¿Cómo está estructurado OpenShift?

OpenShift está construido sobre Kubernetes como un clúster de contenedores. A nivel de clúster, OpenShift incluye dos niveles:

  1. Plano de control

El plano de control está compuesto por las llamadas “máquinas del plano de control”. También se conocen como “master machines” y gestionan el clúster de OpenShift Container Platform.

  1. Máquinas de trabajo

Las máquinas de trabajo, que también se conocen como “compute machines”, realizan el trabajo real del clúster OpenShift. Las “master machines” asignan tareas a las Máquinas de trabajo y supervisan su ejecución.

¿Qué servicios se ejecutan en las máquinas de trabajo?

Una máquina de trabajo ejecuta los siguientes servicios y, por tanto, se incluye en el clúster de OpenShift:

  • CRI-O, como entorno de ejecución de contenedores,
  • Kubelet, como un servicio que acepta y procesa solicitudes para iniciar y detener cargas de trabajo,
  • un proxy de servicio, que se encarga de la comunicación entre las máquinas de trabajo.

La mayor especialización de las máquinas de trabajo resulta del estado de los contenedores en funcionamiento y del software que contienen.

¿Qué componentes constituyen el plano de control?

Veamos a continuación y en detalle la estructura del plano de control. Distinguimos entre los componentes de la implementación de Kubernetes y los componentes específicos de OpenShift:

Componente Kubernetes Explicación
Kubernetes API Server El servidor de la API de Kubernetes comprueba y configura los datos de los pods, servicios y controladores de replicación. Además, la API actúa como interfaz central para los datos del estado global del clúster.
etcd El servicio etcd contiene el estado master persistente. Los demás componentes supervisan a etcd para ver si hay cambios y ajustan su estado según sea necesario.
Kubernetes Controller Manager El gestor de controladores de Kubernetes supervisa el etcd en busca de cambios en objetos como la replicación, el espacio de nombres y los controladores de cuentas de servicio, y utiliza la API para conseguir el estado deseado. Hay un clúster de varios de estos procesos, con uno activo como líder.
Kubernetes Scheduler El programador de Kubernetes detecta los pods recién creados a los que aún no se les ha asignado un nodo y elige el mejor nodo para alojar el pod.

Los componentes del plano de control específicos de OpenShift se implementan como operadores:

Componente OpenShift Explicación Gestionado por
OpenShift API Server El servidor de API de OpenShift comprueba y configura los recursos de OpenShift, como los proyectos, las rutas y las plantillas. OpenShift API Server Operator
OpenShift Controller Manager El gestor de controladores de OpenShift supervisa el etcd en busca de cambios en los objetos de OpenShift, como los proyectos, las rutas y los objetos controladores de plantillas, y utiliza la API para conseguir el estado deseado. OpenShift Controller Manager Operator
OpenShift OAuth API Server El servidor de la API OAuth de OpenShift valida y configura los datos para la autenticación en la plataforma de contenedores OpenShift. Esto incluye usuarios, grupos y tokens OAuth. Cluster Authentication Operator
OpenShift OAuth Server Los usuarios solicitan un token al servidor OAuth de OpenShift para autenticarse en la API. Cluster Authentication Operator

¿Para qué escenarios de aplicación se utiliza OpenShift?

La plataforma de contenedores OpenShift se utiliza principalmente para construir entornos de aplicación y desarrollo. Esto permite implementar soluciones PaaS, SaaS y CaaS propias de la empresa. Debido a la potencia y complejidad del software, OpenShift se utiliza principalmente para proyectos de larga duración de grandes organizaciones.

Entre los usuarios de OpenShift se encuentran instituciones gubernamentales y de investigación a nivel nacional, así como empresas con actividad internacional, como bancos y compañías de seguros. Todos los grupos de usuarios mencionados se benefician de las implantaciones en la nube híbrida. El despliegue a través de los límites de la nube privada y pública permite alojar partes de la infraestructura según los requisitos de las normativas locales.

Otro aspecto importante que habla a favor del uso de OpenShift es su alto nivel de seguridad. Evitar las intrusiones informáticas y las fugas de datos es esencial para las grandes empresas internacionales. Las brechas de seguridad pueden provocar un daño permanente a la imagen de la empresa y cuantiosas pérdidas económicas.

Las funcionalidades incluidas en OpenShift permiten flujos de trabajo de desarrollo rápidos. Esto conduce a una reducción radical de los tiempos de desarrollo sobre el terreno; los equipos de software internos pueden gestionar cómodamente sus recursos por sí mismos e impulsar continuamente el desarrollo.

Si una empresa utiliza una de las ofertas disponibles de Managed OpenShift, elimina la necesidad de administrar servidores y sistemas operativos. En lugar de preocuparse por las actualizaciones y las copias de seguridad, la empresa puede centrarse en lo esencial: innovar y crear valor para los clientes.

Evidentemente, OpenShift no es adecuado para las pequeñas empresas o los desarrolladores particulares. Para atender sus necesidades, es mejor recurrir a una de las alternativas a OpenShift o alternativas a Kubernetes.

¿Cuál es el conjunto de características de OpenShift?

Una de las principales ventajas de OpenShift respecto a Kubernetes “de serie” son las funcionalidades de uso inmediato. Estas van más allá de la mera gestión de clústeres de Kubernetes. Entre otras cosas, OpenShift incluye funcionalidades para:

  • Redes definidas por software o Software-defined Networking (SDN)
  • Enrutamiento
  • Autenticación
  • Monitorización y registro

Para gestionar la plataforma, OpenShift incluye una potente interfaz web, además de las obligadas herramientas de línea de comandos. Los flujos de trabajo de desarrollo y DevOps se aceleran utilizando “Red Hat OpenShift Pipelines”. Se utiliza el marco de código abierto Tekton para la “Integración continua/Desarrollo continuo” (CI/CD). Además de las aplicaciones en contenedores, se pueden utilizar los modernos enfoques “serverless” o sin servidor basados en “Serverless Kubernetes” (Knative).

Otro enfoque de OpenShift es la provisión de arquitecturas de microservicios distribuidos. También conocido como “Red Hat Service Mesh,” este patrón de aplicación se basa en el proyecto de código abierto “Istio”. Para hacer frente a la complejidad asociada a las arquitecturas de microservicios, OpenShift incluye otras herramientas: “Prometheus” se utiliza para gestionar la monitorización y las notificaciones, mientras que “Jaeger” permite el seguimiento de las transacciones. “Kiali” se utiliza para visualizar la matriz de servicios.

¿Cuáles son las ventajas y desventajas de OpenShift?

Una de las mayores ventajas de utilizar OpenShift es poder ejecutar el software en un entorno de nube híbrida. En este caso, un único clúster de OpenShift abarca los límites de varias nubes privadas y públicas. Los clústeres de OpenShift que utilizan Red Hat Enterprise Linux CoreOS (RHCOS) como único sistema operativo se benefician de procesos automatizados a la hora de actualizar y hacer mejoras.

La tecnología integrada de Red Hat y las herramientas y procesos de gestión incorporados a la plataforma dan lugar a una gran experiencia de usuario. El modelo de desarrollo de código abierto y las funcionalidades DevOps incorporadas permiten procesos de desarrollo rápidos. El mayor uso de operadores como formato de aplicación universal contribuye a la estandarización y simplifica las personalizaciones que antes eran complejas.

El uso de CRI-O como tiempo de ejecución de contenedores en lugar de Docker conduce a una mayor seguridad de la plataforma. La interfaz web de fácil manejo se considera más potente y clara que el panel de control comparable de Kubernetes. OpenShift también destaca en la línea de comandos con el comando oc, que facilita el uso de la plataforma.

Por supuesto, las mencionadas características especiales de OpenShift también provocan algunos inconvenientes. Por un lado, los usuarios acérrimos de Kubernetes echan de menos los potentes gráficos de Helm, que describen la configuración de la infraestructura. Además, no todos los contenedores Docker Hub pueden utilizarse en OpenShift debido a la estricta configuración de seguridad. El hecho de centrarse en la distribución de Linux propia de Red Hat, Red Hat Enterprise Linux CoreOS (RHCOS), también tiene un efecto limitante; Kubernetes es más flexible en este sentido.

¿En qué infraestructura se puede ejecutar OpenShift?

OpenShift puede ejecutarse: en casi cualquier nivel de infraestructura informática, desde máquinas “en bruto” en tu propio centro de datos, hasta hardware virtualizado en entornos de nube privada y pública, y dispositivos extremos. Distinguimos entre las soluciones “gestionadas”, en las que la gestión de la plataforma OpenShift corre a cargo del proveedor, y las instalaciones “autogestionadas” administradas por el cliente:

¿Cuáles son las opciones para ejecutar OpenShift gestionado?

Producto Infrastructura Gestionado por Financiado por
Microsoft Azure Red Hat OpenShift Microsoft Azure Red Hat y Microsoft Red Hat y Microsoft
Red Hat OpenShift Dedicated Amazon AWS o Google Cloud Red Hat Red Hat
Red Hat OpenShift en IBM Cloud IBM Cloud IBM Red Hat y IBM
Red Hat OpenShift Service en AWS Amazon AWS Red Hat y AWS Red Hat y AWS

¿Cuáles son las opciones para ejecutar OpenShift autogestionado?

Producto Infrastructura Gestionado por Financiado por
Red Hat OpenShift Platform Plus Nube privada, nube pública, máquina física, máquina virtual, Edge Cliente Red Hat / Proveedor de infraestructuras
Red Hat OpenShift Container Platform Nube privada, nube pública, máquina física, máquina virtual, Edge Cliente Red Hat / Proveedor de infraestructuras
Red Hat OpenShift Kubernetes Engine Nube privada, nube pública, máquina física, máquina virtual, Edge Cliente Red Hat / Proveedor de infraestructuras