jueves, 24 de septiembre de 2020

RedHat OpenShift - ¿Que es?

 

    Hoy en día se viene hablando mucho sobre OpenShift... incluso en charlas de oficina, entre compañeros y/o amigos suele ser un tema de conversación de caracter profesional muy recurente. Sin embargo no todos estamos al tanto sobre de que trata esta tecnología ni tampoco que bondades ofrece.

    En esta ocasión haremos una breve introducción a OpenShift, como esta compuesto y que beneficios brinda tanto a los desarrolldores, como a los SRE (Site Reliability Engineering) y al equipo de operaciones de una empresa.

    OpenShift es una plataforma de orquestación de contenedores, muy similar a otras que hay en el mercado. Como por ejemplo Kubernetes de la mano de Google, Docker Swarm o MESOS de Apache. Ya que las soluciones empresariales a menudo involucran varias capas en una misma aplicación, como puede ser una base de datos, o un servicio de mensajeria, un backend y un frontend. Es necesario usar estas herramientas para administrar los diferentes contenedores.

    Hagamos un repaso de alto nivel de la arquitectura de OpenShift. Comencemos mirando la imagen a continuacion para identificar los diversos componentes en su infraestructura. OpenShift aprovecha a Kubernetes por debajo como el componente principal de la infraestructura:

 
    En Kubernetes se pueden desplegar aplicaciones en forma de contenedores, como Docker. Los contenedores se crean a partir de imágenes de aplicaciones. ¿Pero de dónde vienen estas imágenes de Docker?


    Puedes configurar OpenShift para que tome estas imágenes desde un repositorio o desde un Registry Docker público como por ejemplo: Docker Hub. Alternativamente podemos usar OpenShift Container Registry (OCR) que viene ya incorporado con OpenShift.


    Una colección de uno o más contenedores juntos conforman un pod y varios pods terminan formando un Deployment. Utilizamos servicios para exponer estos Deployments a otras aplicaciones o al mundo exterior.

    Todos estos elementos son constructos básicos de Kubernetes que OpenShift aprovecha. Para administrar todos ellos con facilidad. OpenShift viene con una consola web incorporada a la que los desarrolladores pueden acceder para navegar y gestionar sus aplicaciones. A esta consola web sólo pueden acceder los usuarios administrados por los mecanismos de autenticación y autorización de OpenShift.


    Los usuarios pueden crear proyectos para agrupar y gestionar varios componentes de sus aplicaciones. OpenShift trae ya incorporado una integración con los sistemas de gestión de código fuente (como Git, Subversion, entre otros) con los cuales los usuarios pueden importar el código fuente de sus aplicaciones.

    El repositorio de código fuente tiene integración con los pipelines de CI/CD ya incorporados, donde el código de la aplicación se incorpora a las imágenes Docker y luego se empujan al Container Registry (OCR).

    En el corazón de OpenShift reside el almacén de clave/valor ETCD, que almacena información sobre varios componentes.

    Los componentes que se ven a la derecha de la imagen anterior están hechos sobre constructos de Kubernetes que OpenShift aprovecha, mientras que los componentes de la izquierda son algunos entre los muchos complementos que agrega OpenShift por su parte.

    El clúster de Kubernetes subyacente está configurado con múltiples nodos (o minions) donde se alojan las imágenes reales de Docker. Estos nodos son administrados por uno o más nodos maestros. 

    Los nodos maestros albergan el API Server, el almacén de datos ETCD y el programador (scheduler). 

     Los nodos nos brindarán la posibilidad de escalar nuestra aplicación conforme vayamos necesitando mas instancias de nuestras aplicaciones. Ya que por lo general, uno no tiene contemplado que cantidad de usuarios o de peticiones recibira nuestra aplicación, ya que por ejemplo, podria tener mucho exito y de la noche a la mañana pasar de 1000 usuarios/peticiones a 10 millones. Lo cual es algo que perjudicaría el rendimiento de nuestra aplicación.

    Ante un escenario así, OpenShift permite crear replicas de los pods en cuestion de segundos para responder de manera agil y escalar. De igual manera, tambien permite destruir replicas cuando el trafico que recibe una aplicacion comienza a ser menor.

    Todos estos componentes son programados de manera declarativa, y responden a un estilo de programación diferente a la que estamos acostumbrados. Ya que por medio de archivos de configuración  en formato YAML nosotros podemos declarar en que estado deseamos mantener nuestra infraestructura y OpenShift hará todo lo necesario para llegar a ese estado deseado.

    Si te encuentras interesado en aprender mas sobre OpenShift, te recomendamos visites la pagina de training oficial. Que si bien, esta en Inglés cuenta con muchos ejercicios practicos faciles de seguir y asi practicar lo necesario para conocer mas la herramienta y aprender a usarla. Pueden acceder a la plataforma accediendo a través de su sitio: Learn OpenShift.

    Cualquier comentario, opinion y/o discución puede debatirse libremente y con respeto en los comentarios de este articulo.

No hay comentarios:

Publicar un comentario