# OpenShift

OpenShift, formalmente llamado Openshift Container Platform (OCP), es un producto de computación en la nube de plataforma como servicio de Red Hat.
Los desarrolladores pueden usar Git para desplegar sus aplicaciones Web en los diferentes lenguajes de la plataforma.
Soporta programas binarios que sean aplicaciones Web, con tal de que se puedan ejecutar en RHEL Linux. Esto permite el uso de lenguajes arbitrarios y frameworks.
OpenShift se encarga de mantener los servicios subyacentes a la aplicación y la escalabilidad de la aplicación como se necesite.

## OpenShift Origin

Origin es la versión de código abierto de OpenShift. Los productos OpenShift Online, OpenShift Dedicated y OpenShift Enterprise son implementaciones de Origin.
Origin utiliza Docker para la gestión de contenedores y Kubernetes para la gestión de grupos de contenedores. Todo el código del proyecto está disponible sobre la licencia Apache en GitHub.

## Entornos de programación soportados

* Node.js
* Ruby
* Python
* PHP
* Perl
* Java

## Bases de datos soportadas

* MySQL
* PostgreSQL
* MongoDB
* CouchBase

## Versiones

* OpenShift Container Platform 3.7
Se ofrece Cri-O como technology preview, así como tech preview de almacenamiento local persistente (Persistent Volumes).
Se usa el plugin ovs-networkpolicy en lugar del plugin ovs-multitenant como solución recomendada para el Software Defined Networking SDN interno que usa OpenShift para orquestar la infraestructura interna de los contenedores.
OCP 3.7 utiliza Kubernetes 1.7
* OpenShift Container Platform 3.9
Los statefulsets, daemonsets, and deployments de Kubernetes dejan de estar como tech preview a tener soporte completo.
OCP 3.9 utiliza Kubernetes 1.9
* OpenShift Container Platform 3.10
Se sustituyen muchos servicios de systemd por static pods en los despliegues de infraestructura de OpenShift, los servicios de etcd, el API server y los controllers.
Los componentes openshift-sdn y openvswitch se ejecutan ahora como un daemonset.
Se ofrece como tech preview la posibilidad de cambiar el tamaño de un Persistent Volume.
OCP 3.10 utiliza Kubernetes 1.10
* OpenShift Container Platform 3.11
Se agregan los operators OLM como tech preview, se agrega el Web Cluster Console como una mejora en la interfaz web para versiones futuras.
Se tiene soporte con Ansible 2.6 para los despliegues y el mantenimiento de OCP 3.11.
OCP 3.11 utiliza Kubernetes 1.11
Cri-O pasa a ser considerado estable para producción, OCP abandonará lentamente a Docker como solución de contenedores.
Podman sigue como tech preview.
* OpenShift Container Platform 4.0
El instalador cambia a Terraform en lugar de ejecutar playbooks de Ansible, con un solo comando es posible desplegar todo el cluster.
Los operators se vuelven centrales en OCP, todo el despliegue ocurre ejecutando operators.
Openshift 4 tiene demasiados cambios con respecto a sus versiones predecesoras, se trata de un cambio muy importante en la forma en la que se concibe OpenShift.
CoreOS es requerido para montar los masters en OCP 4, RHEL solo se puede usar en worker nodes o en infra nodes.
Cambia todo el stack de métricas y monitoreo.
El despliegue por el momento solo se soporta en AWS.
La interfaz web cambia por completo, usando como base el Web Cluster Console mostrado en la versión 3.11.
OCP 4.0 se consideró una versión preliminar.
* OpenShift Container Platform 4.1
Se ofrece soporte on-premise con vsphere de VMware.
OCP 4.1 está soportado en BareMetal.
Se trabaja en ofrecer el soporte en versiones futuras con Azure.
OCP 4.1 utiliza Kubernetes 1.13
Es la primera versión de OCP 4 que se considera estable para producción.

## Ventajas

* Se pueden desplegar aplicaciones con facilidad.
* Ejecuta y soporta aplicaciones con estado y sin estado.
* Proporciona seguridad incorporada para aplicaciones basadas en contenedores.
* Se pueden crear rutas a las aplicaciones contenidas en OpenShift de una manera muy sencilla.

## MiniShift

Minishift es una herramienta que te ayuda a correr Openshift de manera local ejecutando un clúster OpenShift de un solo nodo dentro de una máquina virtual.
Minishift ha sido sustituido por el comando oc cluster up soportado en Fedora Linux, CentOS y RHEL.

## Pipeline

OpenShift Pipelines te da el control sobre la construcción, implementación y promoción de tus aplicaciones en Openshift. El pipeline por defecto permite crear y desplegar.

## Frameworks soportados

OpenShift soporta frameworks de aplicaciones web mediante integración con una API al lenguaje de preferido, por el cual no requiere cambios del código de los frameworks.
* Rack para Ruby
* WSGI para Python
* PSGI for Perl
Algunos frameworks que funcionan sin modificar para incluir a OpenShift.
* CodeIgniter
* CakePHP
* Ruby on Rails
* Django
* Perl Dancer
* Flask
* Sinatra
* Tornado
* Symfony
* Minishift