Cloud Computing

Kubernetes vs OpenShift

Conoce las principales diferencias que existen entre Kubernetes y Openshift, dos tecnologías que han cobrado gran importancia en los últimos tiempos.

Publicado el 06 de Junio de 2019
Compartir

Conoce las principales diferencias que existen entre Kubernetes y Openshift, dos tecnologías que han cobrado gran importancia en los últimos tiempos.

Vamos a ver tanto las similitudes como las diferencias que existen entre ambos proyectos.

Kubernetes es un gestor de contenedores, que permite gestionar los contenedores que se ejecutan en un clúster de ordenadores.

OpenShift, que trabaja internamente con Kubernetes, es la plataforma de desarrollo de la empresa Red Hat, que tiene características de Cloud Computing en la capa de Plataforma como Servicio o PaaS, y añade nuevas funcionalidades que Kubernetes no tiene.

Proyecto vs producto

La primera diferencia entre ambas tecnologías es que podemos entender Kubernetes como un proyecto de código abierto, mientras que OpenShift es un producto.

Realmente se puede decir que OpenShift es una distribución certificada de Kubernetes, de las muchas que existen, que podemos ver en esta página:

https://www.cncf.io/certification/software-conformance/#logs

OpenShift también tiene una versión que es de código abierto, que se conoce como OKD o como OpenShift Origin. Para instalar esta versión necesitamos tener como sistema operativo Red Hat Linux o CentOS, sin embargo Kubernetes se puede instalar en cualquier distribución de Linux.

Seguridad

En cuanto a la comparación sobre seguridad, OpenShift por defecto tiene políticas de seguridad más estrictas que la de Kubernetes.

Esto a veces plantea ciertos problemas, porque la mayoría de las imágenes Docker de contenedores disponibles, por ejemplo en Docker Hub, que es el repositorio oficial de Docker, no se pueden ejecutar en OpenShift, porque no permite ejecutar ciertas imágenes como root.

La gestión de autorización de recursos, que se hace por medio de RBAC (Control de Acceso Basado en Roles), se puede deshabilitar en Kubernetes. Esto no es apropiado si tenemos un Kubernetes en producción, pero en OpenShift no podemos deshabilitar las reglas de autorización.

Build

Sobre la construcción de imágenes, Kubernetes trabaja con imágenes de contenedores, pero esas imágenes las debemos crear nosotros o utilizar un software adicional que automatice esa creación, pero Kubernetes por si solo no puede crear imágenes de contenedores.

Sin embargo, en OpenShift, al estar pensada para desarrolladores que no te necesitan conocer en profundidad cómo funcionan los contenedores y como funciona Kubernetes, tiene diversos métodos de construcción de imágenes, como por ejemplo desde un Dockerfile o con la característica soucer2image.

Gestión de las imágenes

OpenShift mejora la gestión de las imágenes con un nuevo recurso llamado ImageStream, que mejora el recurso Image de Kubernetes.

Con OpenShift es más fácil trabajar con las etiquetas de las imágenes, y además tiene un sistema que detecta la versión de la imagen ha cambiado, porque tiene una nueva etiqueta, lanza un despliegue de forma automática para implantar la nueva versión de la aplicación.

Ingress vs Routers

En Kubernetes tenemos el recurso Ingress, que nos permite asociar una ruta a nuestra aplicación. En OpenShift se le ha cambiado el nombre y la implementación y se conoce como Routers.

En OpenShift se utiliza internamente un proxy inverso HAProxy, mientras que en Kubernetes el recurso Ingress lo podemos implementar con distintas soluciones, ya sea con un proxy inverso nginx, con Traefick o con otras soluciones.

Se podría decir que las rutas de OpenShift, porque se lleva trabajando más tiempo que el proyecto Kubernetes en el tema de asignación de ruta, es más madura, pero también hay que decir que el recurso Ingress de Kubernetes las últimas versiones está evolucionando de una manera muy positiva.

Ingress vs Routers

Finalmente compararemos los mecanismos que utilizan estas tecnologías para crear el conjunto de recursos para que una aplicación funcione.

Por ejemplo, si necesitamos instalar un WordPress, necesitaremos una base de datos y un despliegue de WordPress, por lo que van a ser contenedores distintos y deben ser persistentes, por lo tanto hay que crear también volúmenes para que la información no desaparezca.

Todos los recursos que se crean para instalar una aplicación se pueden empaquetar.

Kubernetes normalmente utiliza una herramienta, llamada Helm, para empaquetar todos los recursos que nos permiten implantar una aplicación, sin embargo OpenShift utiliza un recurso que se llama Template.

En esta caso podemos decir que Helm de Kubernetes es mucho más flexible y permite muchas más funcionalidades que los Templates de OpenShift.

La versión actual de Helm, utilizando un componente que se llama Tiller, que se ejecuta en un pod que debe tener muchos privilegios, es incompatible con la política de seguridad de OpenShift, y por lo tanto optaron por utilizar otro mecanismo para empaquetar las aplicaciones.

Conclusión

Como conclusión podemos decir que OpenShift es una distribución de Kubernetes que mejora ciertos aspectos y añade nuevas funcionalidades, pero que aprovecha todas las ventajas de la implantación de aplicaciones en un clúster de servidores como las que ofrece Kubernetes.

Con Kubernetes se necesita un equipo de sistemas para que mantenga el clúster, mientras que OpenShift está claramente centrado en el desarrollador, para que no necesite conocer en profundidad los conceptos de contenedores y orquestadores de contenedores, y se centre en el desarrollo de la aplicación, y de forma sencilla sea capaz de implantar su aplicación en un entorno de Cloud Computing, que internamente utiliza Kubernetes.

cta-curso-openshift

Compartir este post

También te puede interesar...

Especialista en Automatización DevOps

Especialista en Automatización DevOps

17 horas y 57 minutos · Carrera

Conviértete en un especialista DevOps y da un salto en tu lista

Tecnología

Docker, Kubernetes y OpenShift

05 Junio 2019 José Domingo Muñoz
Artículos
Ver todos